Exemplo n.º 1
0
 public FolderEntry IndexDirectory(string source)
 {
     FolderEntry folder = null;
     if (!Directory.Exists(source))
     {
         Directory.CreateDirectory(source);
     }
     DirectoryInfo dir = new DirectoryInfo(source);
     folder = new FolderEntry(dir.Name);
     folder.Path = dir.FullName;
     foreach (var file in dir.GetFiles())
     {
         FileEntry fileEntry = new FileEntry(file.Name, file.Length, file.CreationTime, file.LastWriteTime);
         folder.AddFile(fileEntry);
     }
     foreach (var directory in dir.GetDirectories())
     {
         FolderEntry subFolder = IndexDirectory(directory.FullName);
         if (subFolder != null)
         {
             folder.AddFolder(subFolder);
         }
     }
     return folder;
 }
Exemplo n.º 2
0
        private List<BackupJobDetail> readSyncFolders(int JobId, FolderEntry source, FolderEntry destination)
        {
            List<BackupJobDetail> jobDetails = new List<BackupJobDetail>();
            foreach (var item in source.Folders)
            {
                if (!destination.Folders.ContainsKey(item.Key))
                {
                    FolderEntry newFolder = new FolderEntry(item.Key);
                    destination.AddFolder(newFolder);
                    Directory.CreateDirectory(destination.Folders[item.Key].Path);
                }
                jobDetails.AddRange(readSyncFolders(JobId,item.Value, destination.Folders[item.Key]));
            }

            foreach (var item in source.Files.Keys)
            {
                bool copy = false;
                // compare files that exist
                if (destination.Files.ContainsKey(item))
                {
                    // compare file size
                    copy = (destination.Files[item].FileSize != source.Files[item].FileSize) || (destination.Files[item].DateModified != source.Files[item].DateModified);
                }
                else
                {
                    // file does not exist.
                    copy = true;
                }
                if (copy)
                {
                    BackupJobDetail jobDetail = new BackupJobDetail()
                    {
                        BackupJobId = JobId,
                        FileNameFrom = Path.Combine(source.Path, item),
                        FileNameTo = Path.Combine(destination.Path, item),
                        FileSize = source.Files[item].FileSize,
                        DateSynced = DateTime.Now
                    };
                    jobDetails.Add(jobDetail);
                }
            }
            return jobDetails;
        }