Beispiel #1
0
 private void AppendDirectory(ref FileList list, FileFilter filter, BackupParameters param, DirectoryInfo di)
 {
     try
     {
         FileInfo[] files = di.GetFiles();
         foreach (var f in files)
         {
             AppendFile(ref list, filter, param, f);
         }
         DirectoryInfo[] dirs = di.GetDirectories();
         foreach (var d in dirs)
         {
             AppendDirectory(ref list, filter, param, d);
         }
     }
     catch (Exception ex)
     {
         BackupErrorMessage?.Invoke($"Failed to backup directory '{di.FullName}' - {ex.Message}");
     }
 }
Beispiel #2
0
        public void DoBackup(FileList files, BackupParameters param)
        {
            string path = MakeBackupFilename(param);

            //System.Console.WriteLine("|----:----|----:----|----:----|----:----|----:----|");
            //System.Console.WriteLine("01234567890123456789012345678901234567890123456789");

            int    steps    = 50;
            UInt64 count    = 0;
            int    lastTick = -1;

            using (FileStream zipStream = new FileStream(path, FileMode.Create))
            {
                using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create))
                {
                    foreach (var file in files)
                    {
                        int tick = (int)(count / (files.totalBytes / (ulong)steps));
                        if (tick != lastTick)
                        {
                            BackupUpdate?.Invoke(tick, steps);
                            //System.Console.Write(".");
                            lastTick = tick;
                        }
                        try
                        {
                            FileInfo fileInfo = new FileInfo(file);
                            count += (UInt64)fileInfo.Length;
                            archive.CreateEntryFromFile(file, file);
                        }
                        catch (Exception ex)
                        {
                            BackupErrorMessage?.Invoke($"Failed to backup file '{file}' - {ex.Message}");
                        }
                    }
                }
            }
        }