コード例 #1
0
ファイル: BackUp.cs プロジェクト: JakeLardinois/TapeDrive
        public static void CreateDemoRequiredFiles()
        {
            BackupFiles objBackupFiles;
            BackupFile objBackupFile;
            FilesToBackup objFilesToBackup;
            FileToBackUp objFileToBackup;
            SingleFileToBackUp objSingleFileToBackup;

            //Procedure for reading file from tape; Backup files must have a Size, NewFileName, FilePath and StartTapeLocation to be restored
            objBackupFiles = new BackupFiles();
            objBackupFile = new BackupFile { StartTapeLocation = 0, EndTapeLocation = 84673, FilePath = Directory.GetCurrentDirectory() + "\\", FileName = "Test1.txt", Size = 5549095658 };
            objBackupFiles.Add(objBackupFile);
            objBackupFile = new BackupFile { StartTapeLocation = 84673, EndTapeLocation = 84990, FilePath = Directory.GetCurrentDirectory() + "\\", FileName = "Test2.txt", Size = 20764304 };
            objBackupFiles.Add(objBackupFile);
            objBackupFiles.SaveToXMLFile(Directory.GetCurrentDirectory() + "\\", "BackedUpFilesExample.xml");

            //Backup files must have a FilePath and FileName in order to be written to the tape; StartTapeLocation is required when writing a single file,
            //otherwise the app assigns locations as it's backing up multiple files
            objFilesToBackup = new FilesToBackup();
            objFileToBackup = new FileToBackUp { FilePath = Directory.GetCurrentDirectory() + "\\", FileName = "Test1.txt" };
            objFilesToBackup.Add(objFileToBackup);
            objFileToBackup = new FileToBackUp { FilePath = Directory.GetCurrentDirectory() + "\\", FileName = "Test2.txt" };
            objFilesToBackup.Add(objFileToBackup);
            objFilesToBackup.SaveToXMLFile(Directory.GetCurrentDirectory() + "\\", "FilesToBackupExample.xml");

            objSingleFileToBackup = new SingleFileToBackUp { StartTapeLocation = 84673, FilePath = Directory.GetCurrentDirectory() + "\\", FileName = "Test2.txt" };
            objSingleFileToBackup.Serialize(Directory.GetCurrentDirectory() + "\\FileToBackupExample.xml");
        }
コード例 #2
0
 /// <summary>
 /// Gets the <see cref="BackupFile" /> information for the specified game id, file name and install path
 /// </summary>
 /// <param name="gameId">Game Id</param>
 /// <param name="fileName">File Name</param>
 /// <param name="installPath">File Install Path</param>
 /// <returns></returns>
 public BackupFile GetGameFileBackup(string gameId, string fileName, string installPath)
 {
     return(BackupFiles.FirstOrDefault(backupFile =>
                                       backupFile.CategoryId.Equals(gameId, StringComparison.OrdinalIgnoreCase) &&
                                       backupFile.FileName.ToLower().Contains(fileName.ToLower()) &&
                                       backupFile.InstallPath.ToLower().Contains(installPath.ToLower())));
 }
コード例 #3
0
        /// <summary>
        /// 初始读取文件并备份
        /// </summary>
        public void DefaultBackupFile(string path)
        {
            //读取本地文件夹中的所有文件列表
            List <string> files = FileTool.GetAllFile(path);

            if (ListTool.HasElements(files))
            {
                foreach (var file in files)
                {
                    try
                    {
                        string lastwritetime = DateTimeConvert.StandardString(File.GetLastWriteTime(file));
                        using (var db = new Muse())
                        {
                            BackupFiles backfile = db.Get <BackupFiles>(x => x.FullPath == file && x.LastWriteTime == lastwritetime, null);
                            if (backfile == null)
                            {
                                AddToBackupFiles(file);
                            }
                        }
                    }
                    catch (Exception e) { }
                }
            }
        }
コード例 #4
0
        static async Task Main(string[] args)
        {
            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri("http://*****:*****@"C:\backup\From";
            IBackup backup = new Full(files);

            while (true)
            {
                Console.Clear();
                string temp = Console.ReadLine();

                if (temp == "backup")
                {
                    backup.Backup();
                }
            }
        }
コード例 #5
0
ファイル: frmMain.cs プロジェクト: TormentedEmu/DMT
        private void revertToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var data = PatchData.Create(BuildSettings.Instance);

            data.GameFolder = BuildSettings.Instance.GameFolders.FirstOrDefault();
            data.Init();

            if (BuildSettings.Instance.AutoClose)
            {
                var isDedicatedServer = data.IsDedicatedServer;
                var exe = isDedicatedServer ? "7DaysToDieServer" : "7DaysToDie";
                Helper.KillProcessByName(exe);
            }

            var p = new ReaderParameters();

            p.InMemory = true;
            var ass = AssemblyDefinition.ReadAssembly(data.GameDllLocation, p);

            var module = ass.MainModule;

            BackupFiles.GetVersionInfo(module);
            data.BackupFolder       = data.BackupFolder + (data.IsDedicatedServer ? "Dedi/" : "SP/") + BuildSettings.MajorVersion + "." + BuildSettings.MinorVersion + "b" + BuildSettings.BuildNumber + "/";
            data.BackupDllLocataion = data.BackupFolder + PatchData.AssemblyFilename;

            if (File.Exists(data.BackupDllLocataion))
            {
                File.Copy(data.BackupDllLocataion, data.GameDllLocation, true);
                OnLog($"Dll reverted {data.BackupDllLocataion}", LogType.Info);
            }
            else
            {
                OnLog("Could not revert DLL", LogType.Info);
            }
        }
コード例 #6
0
        /// <summary>
        /// Updates the collection of backup files at index if it's exists, otherwise adds a new one.
        /// </summary>
        /// <param name="index"></param>
        /// <param name="backupFile"></param>
        public void UpdateBackupFile(int index, BackupFile backupFile)
        {
            if (BackupFiles[index] == null)
            {
                BackupFiles.Add(backupFile);
                return;
            }

            BackupFiles[index] = backupFile;
        }
コード例 #7
0
ファイル: FileRestoreForm.cs プロジェクト: xinyutian86/Fork
 private void BtRestoreToNew_Click(object sender, EventArgs e)
 {
     if (DgvFiles.CurrentRow != null && DgvFiles.CurrentRow.Index >= 0)
     {
         BackupFiles    file = Files[DgvFiles.CurrentRow.Index];
         SaveFileDialog sfd  = new SaveFileDialog();
         sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); //设置默认目录
         sfd.FileName         = Path.GetFileName(file.FullPath);                              //设置默认文件名
         sfd.Filter           = "还原文件|*" + Path.GetExtension(file.FullPath);                  //设置默认文件类型
         if (sfd.ShowDialog() == DialogResult.OK)
         {
             string from = file.BackupFullPath;
             string to   = sfd.FileName;
             File.Copy(from, to, true);
         }
     }
 }
コード例 #8
0
        /// <summary>
        /// Create/store a backup of the specified file, and then downloads it locally to a known path
        /// </summary>
        /// <param name="modItem"></param>
        /// <param name="fileName"></param>
        /// <param name="installFilePath"></param>
        public void CreateBackupFile(ModItem modItem, string fileName, string installFilePath)
        {
            var fileBackupFolder = GetGameBackupFolder(modItem);

            _ = Directory.CreateDirectory(fileBackupFolder);

            var backupFile = new BackupFile
            {
                CategoryId  = modItem.GameId,
                FileName    = fileName,
                LocalPath   = Path.Combine(fileBackupFolder, fileName),
                InstallPath = installFilePath
            };

            FtpExtensions.DownloadFile(backupFile.LocalPath, backupFile.InstallPath);

            BackupFiles.Add(backupFile);
        }
コード例 #9
0
ファイル: Core.cs プロジェクト: DDuarte/feup-sdis-dist_backup
        private FileEntry ConsoleGetFileEntry(string fileName)
        {
            var possibleFiles = BackupFiles.Where(entry =>
            {
                var name = Path.GetFileNameWithoutExtension(fileName);
                var ext  = Path.GetExtension(fileName);

                var pattern = name + @"(_[0-9]+)?";
                if (!string.IsNullOrEmpty(ext))
                {
                    pattern += '\\' + ext; // must escape .
                }
                return(Regex.IsMatch(entry.Key, pattern));
            }).ToList();

            if (possibleFiles.Count == 0)
            {
                Console.WriteLine("File not found.");
                return(null);
            }

            while (possibleFiles.Count > 1)
            {
                Console.WriteLine("Which file do you want?");
                foreach (var possibleFile in possibleFiles)
                {
                    Console.WriteLine("- {0}", possibleFile.Key);
                }

                var chosenFile = Console.ReadLine();
                if (string.IsNullOrWhiteSpace(chosenFile))
                {
                    return(null);
                }

                possibleFiles.RemoveAll(entry => entry.Key != chosenFile);
                if (possibleFiles.Count == 1)
                {
                    break;
                }
            }

            return(possibleFiles[0].Value);
        }
コード例 #10
0
 private void DoDeleteBackup(object param)
 {
     if (CanDeleteBackup(null))
     {
         BackupFileViewModel bf = BackupFiles.LastSelected;
         Logger.Info("DoDeleteBackup: Executing BackupFile.DeleteCommand");
         bf.DeleteCommand.Execute(null);
         if (bf.IsDeleted)
         {
             Logger.Info("DoDeleteBackup: Removing item from list");
             BackupFiles.Remove(BackupFiles.LastSelected);
             OnPropertyChanged("BackupFiles");
         }
         else
         {
             Logger.Info("DoDeleteBackup: BackupFile is not deleted, keeping in list");
         }
     }
 }
コード例 #11
0
 private void DoDeleteAllBackups(ViewModelMessageContent messageContent)
 {
     if (messageContent.Confirmed)
     {
         Logger.Info("DoDeleteAllBackups: Iterating over {0} BackupFiles", BackupFiles.Count);
         foreach (BackupFileViewModel vm in BackupFiles)
         {
             vm.DeleteCommand.Execute(null);
             vm.IsSelected = vm.IsDeleted;
         }
         Logger.Info("DoDeleteAllBackups: Purging list");
         BackupFiles.RemoveSelected();
         Logger.Info("DoDeleteAllBackups: {0} BackupFiles remaining", BackupFiles.Count);
         OnPropertyChanged("HasBackups");
     }
     else
     {
         Logger.Info("DoDeleteAllBackups: Action was not confirmed, not deleting backups");
     }
 }
コード例 #12
0
ファイル: FileRestoreForm.cs プロジェクト: xinyutian86/Fork
 private void BtRestoreToOld_Click(object sender, EventArgs e)
 {
     if (DgvFiles.CurrentRow != null && DgvFiles.CurrentRow.Index >= 0)
     {
         BackupFiles file  = Files[DgvFiles.CurrentRow.Index];
         string      title = string.Format("文件还原", file.LastWriteTime);
         string      text  = string.Format("您确定将文件:{0} [ {1} ]{2}还原到:{2}{3} 吗?", Path.GetFileName(file.FullPath), file.LastWriteTime, Environment.NewLine, file.FullPath);
         if (MessageBox.Show(text, title, MessageBoxButtons.OKCancel) == DialogResult.OK)
         {
             string from   = file.BackupFullPath;
             string to     = file.FullPath;
             string topath = DirTool.GetFilePath(to);
             if (DirTool.Create(topath))
             {
                 File.Copy(from, to, true);
             }
             else
             {
                 MessageBox.Show(string.Format("路径:{0} 不存在,请还原到其他路径。", topath), "路径不存在");
             }
         }
     }
 }
コード例 #13
0
ファイル: Core.cs プロジェクト: DDuarte/feup-sdis-dist_backup
        public FileEntry AddBackupFile(string fileName /* C:/Windows/write.exe */, int replicationDegree)
        {
            if (string.IsNullOrWhiteSpace(fileName))
            {
                throw new ArgumentNullException("fileName");
            }

            if (!File.Exists(fileName))
            {
                return(null);
            }

            // get a unique filename from the original file path
            // if the new filename already exists, append a number to it
            var fileNameWithoutPath = Path.GetFileName(fileName); /* write.exe */
            var newFileName         = fileNameWithoutPath;
            var count = 1;

            while (BackupFiles.ContainsKey(newFileName))
            {
                var ext  = Path.GetExtension(newFileName);
                var name = Path.GetFileNameWithoutExtension(newFileName);

                newFileName = name + '_' + count + ext;
                count++;
            }

            var fileEntry = new FileEntry
            {
                FileName          = newFileName,
                OriginalFileName  = fileName,
                ReplicationDegree = replicationDegree
            };

            BackupFiles.Add(newFileName, fileEntry);
            return(fileEntry);
        }
コード例 #14
0
ファイル: Program.cs プロジェクト: JakeLardinois/TapeDrive
        private static void BackupFiles(string strFilesToBackupFilePathAndName)
        {
            FilesToBackup objFilesToBackup;

            try
            {
                using (StreamWriter w = File.CreateText("log.txt"))
                {
                    Log(string.Format("Backup Operation Started at {0}", DateTime.Now), w);
                    // Close the writer and underlying file.
                    w.Close();
                }

                objFilesToBackup = new FilesToBackup(Path.GetDirectoryName(strFilesToBackupFilePathAndName) + "\\", Path.GetFileName(strFilesToBackupFilePathAndName));
                BackupFileList = objFilesToBackup.ToBackupFiles();

                Backup.WriteFilesToTape(BackupFileList);
                BackupFileList.SaveToXMLFile(Directory.GetCurrentDirectory() + "\\", "BackedUpFiles.xml");

                using (StreamWriter w = File.AppendText("log.txt"))
                {
                    Log(string.Format("Backup Operation Ended at {0}", DateTime.Now), w);
                    // Close the writer and underlying file.
                    w.Close();
                }
            }
            catch (Exception objEx)
            {
                using (StreamWriter w = File.AppendText("log.txt"))
                {
                    Log(string.Format("Error {0}", objEx.ToString()), w);
                    // Close the writer and underlying file.
                    w.Close();
                }
            }
        }
コード例 #15
0
ファイル: BuilderEditor.cs プロジェクト: parsehgames/shetab
        private static void BackupFile(string filename)
        {
            if (File.Exists(filename) == false)
            {
                return;
            }
            if (backupFiles.Exists(x => x.filename.Equals(filename, System.StringComparison.OrdinalIgnoreCase)))
            {
                return;
            }

            var backup = new BackupFiles();

            backup.filename = filename;
            try
            {
                backup.data = File.ReadAllBytes(filename);
                backupFiles.Add(backup);
            }
            catch (System.Exception e)
            {
                Debug.LogError("Can't open file " + filename + "\n" + e.Message);
            }
        }
コード例 #16
0
        private void RefreshFilesList()
        {
            var selectedValue = BackupFiles.SelectedValue;

            if (Directory.Exists(ApplySecurityRunner.BackupFolder))
            {
                var files = Directory
                            .GetFiles(ApplySecurityRunner.BackupFolder, "*.xml", SearchOption.TopDirectoryOnly)
                            .Select(x => new KeyValuePair <string, string>(x, Path.GetFileNameWithoutExtension(x)));
                if (files.Any())
                {
                    BackupFiles.DataSource = files;
                }
            }
            BackupFiles.DataSource = BackupFiles.DataSource
                                     ?? new[] { new KeyValuePair <string, string>("", "No backup files found.") };

            if (!string.IsNullOrWhiteSpace(selectedValue))
            {
                BackupFiles.SelectedValue = selectedValue;
            }

            BackupFiles.DataBind();
        }
コード例 #17
0
ファイル: BackUp.cs プロジェクト: JakeLardinois/TapeDrive
        public void ReadFileFromTape(BackupFile objBackupFile)
        {
            BackupFiles objBackupFiles;

            objBackupFiles = new BackupFiles();
            objBackupFiles.Add(objBackupFile);
            ReadFilesFromTape(objBackupFiles);
        }
コード例 #18
0
ファイル: BackUp.cs プロジェクト: JakeLardinois/TapeDrive
        //public void WriteFileToTape(BackupFile objBackupFile)
        //{
        //    TapeOperator objTapeOperator;
        //    TapeOperator.MediaInfo objMediaInfo;
        //    FileStream objFileStreamToWrite;
        //    byte[] objWriteBytes;
        //    Console.WriteLine("WriteFileToTape Method");
        //    Console.WriteLine("Initializing the tape drive...");
        //    objTapeOperator = new TapeOperator();
        //    objTapeOperator.Load(TapeName);
        //    Console.WriteLine("Setting Tape Position...");
        //    objTapeOperator.SetTapePosition(objBackupFile.StartTapeLocation);
        //    Console.WriteLine("Tape Position is " + objTapeOperator.GetTapePosition());
        //    //for some reason, I kept getting an error until I added the below statements
        //    Console.WriteLine("Getting the Tape Info...");
        //    objMediaInfo = objTapeOperator.GetTapeMediaParameters();
        //    //Console.WriteLine(objMediaInfo.BlockSize);
        //    //Console.WriteLine(objTapeOperator.BlockSize);
        //    Console.WriteLine("Opening the file...");
        //    objFileStreamToWrite = new FileStream(objBackupFile.FileNameAndPath, FileMode.Open, FileAccess.Read);
        //    objBackupFile.Size = objFileStreamToWrite.Length;
        //    //This code is where modification will be required to accomodate consecutive reads and writes to the tape for large file sizes
        //    if (objBackupFile.isLargeFile)
        //    {
        //        Console.WriteLine("This file will take " + objBackupFile.FileChunkCount + " Passes...");
        //        for (int intCounter = 1; intCounter <= objBackupFile.FileChunkCount; intCounter++)
        //        {
        //            if (intCounter < objBackupFile.FileChunkCount)
        //            {
        //                Console.WriteLine("This is pass " + intCounter);
        //                //Console.WriteLine("Initilizing Array");
        //                objWriteBytes = new byte[BackupFile.MaxMemoryChunk];
        //                //Console.WriteLine("Done Initilizing Array");
        //                Console.WriteLine("Reading file to Memory...");
        //                //Console.WriteLine(objFileStreamToWrite.Position);
        //                //lngPosition = objFileStreamToWrite.Position;
        //                objFileStreamToWrite.Read(objWriteBytes, 0, BackupFile.MaxMemoryChunk);
        //                //Console.WriteLine(objTapeOperator.GetTapePosition());
        //                Console.WriteLine("Writing Filestream to Tape");
        //                objTapeOperator.Write(objTapeOperator.GetTapePosition(), objWriteBytes);
        //                //Console.WriteLine("Finished Writing to Tape");
        //                //Console.WriteLine(objTapeOperator.GetTapePosition());
        //            }
        //            else
        //            {
        //                int intLeftOverBytes = (int)(objBackupFile.Size - BackupFile.MaxMemoryChunk * (intCounter - 1));
        //                Console.WriteLine("This is pass " + intCounter);
        //                //Console.WriteLine("Initilizing Array");
        //                objWriteBytes = new byte[intLeftOverBytes];
        //                //Console.WriteLine("Done Initilizing Array");
        //                Console.WriteLine("Reading file to Memory...");
        //                //lngPosition = objFileStreamToWrite.Position;
        //                objFileStreamToWrite.Read(objWriteBytes, 0, intLeftOverBytes);
        //                Console.WriteLine("Writing Filestream to Tape");
        //                objTapeOperator.Write(objTapeOperator.GetTapePosition(), objWriteBytes);
        //                //Console.WriteLine("Finished Writing to Tape");
        //            }
        //        }
        //    }
        //    else
        //    {
        //        //Console.WriteLine("Initilizing Array");
        //        objWriteBytes = new byte[objFileStreamToWrite.Length];//This one generates an IOException if the file size is greater than 2GB
        //        //Console.WriteLine("Done Initilizing Array");
        //        Console.WriteLine("Reading file to Memory...");
        //        objFileStreamToWrite.Read(objWriteBytes, 0, (int)objFileStreamToWrite.Length);
        //        Console.WriteLine("Writing Filestream to Tape");
        //        objTapeOperator.Write(objBackupFile.StartTapeLocation, objWriteBytes);
        //        Console.WriteLine("Finished Writing to Tape");
        //    }
        //    objBackupFile.EndTapeLocation = objTapeOperator.GetTapePosition();
        //    Console.WriteLine("Tape Position is " + objBackupFile.EndTapeLocation);
        //    Console.WriteLine("Now I'm Cleaning up resources...");
        //    objTapeOperator.Close();
        //    objFileStreamToWrite.Close();
        //    Console.WriteLine("Now I'm Done!");
        //    Console.WriteLine();
        //}
        public void WriteFilesToTape(BackupFiles objBackupFiles, bool isSingleFile = false)
        {
            Console.WriteLine("WriteFileToTape Method");
            Console.WriteLine("Initializing the tape drive...");
            TapeOperator = new TapeOperator();
            TapeOperator.Load(TapeName);

            Console.WriteLine("Setting Tape Position...");
            //If it's a single file than I use the tape location specified on the BackupFile object, else I parse the collection for the next available location
            TapeOperator.SetTapePosition(isSingleFile ? objBackupFiles[0].StartTapeLocation : objBackupFiles.NextAvailableTapeLocation);
            Console.WriteLine("Tape Position is " + TapeOperator.GetTapePosition());

            //for some reason, I kept getting an error until I added the below statements
            Console.WriteLine("Getting the Tape Info...");
            MediaInfo = TapeOperator.GetTapeMediaParameters();
            //Console.WriteLine(objMediaInfo.BlockSize);
            //Console.WriteLine(objTapeOperator.BlockSize);

            foreach (BackupFile objBackupFile in objBackupFiles)
            {
                Console.WriteLine("Opening the file...");
                FileStreamToWrite = new FileStream(objBackupFile.FileNameAndPath, FileMode.Open, FileAccess.Read);
                objBackupFile.Size = FileStreamToWrite.Length;
                objBackupFile.StartTapeLocation = TapeOperator.GetTapePosition();

                //This code is where modification will be required to accomodate consecutive reads and writes to the tape for large file sizes
                if (objBackupFile.isLargeFile)
                {
                    Console.WriteLine("This file will take " + objBackupFile.FileChunkCount + " Passes...");
                    for (int intCounter = 1; intCounter <= objBackupFile.FileChunkCount; intCounter++)
                    {
                        if (intCounter < objBackupFile.FileChunkCount)
                        {
                            WriteBytes = null;//clears the memory...
                            GC.Collect();

                            Console.WriteLine("This is pass " + intCounter);
                            //Console.WriteLine("Initilizing Array");
                            WriteBytes = new byte[BackupFile.MaxMemoryChunk];
                            //Console.WriteLine("Done Initilizing Array");

                            Console.WriteLine("Reading file to Memory...");
                            //Console.WriteLine(objFileStreamToWrite.Position);
                            //lngPosition = objFileStreamToWrite.Position;
                            FileStreamToWrite.Read(WriteBytes, 0, BackupFile.MaxMemoryChunk);

                            //Console.WriteLine(objTapeOperator.GetTapePosition());
                            Console.WriteLine("Writing Filestream to Tape");
                            TapeOperator.Write(TapeOperator.GetTapePosition(), WriteBytes);
                            //Console.WriteLine("Finished Writing to Tape");
                            //Console.WriteLine(objTapeOperator.GetTapePosition());
                        }
                        else
                        {
                            int intLeftOverBytes = (int)(objBackupFile.Size - BackupFile.MaxMemoryChunk * (intCounter - 1));

                            WriteBytes = null;//clears the memory...
                            GC.Collect();

                            Console.WriteLine("This is pass " + intCounter);
                            //Console.WriteLine("Initilizing Array");
                            WriteBytes = new byte[intLeftOverBytes];
                            //Console.WriteLine("Done Initilizing Array");

                            Console.WriteLine("Reading file to Memory...");
                            //lngPosition = objFileStreamToWrite.Position;
                            FileStreamToWrite.Read(WriteBytes, 0, intLeftOverBytes);

                            Console.WriteLine("Writing Filestream to Tape");
                            TapeOperator.Write(TapeOperator.GetTapePosition(), WriteBytes);
                            //Console.WriteLine("Finished Writing to Tape");
                        }

                    }
                }
                else
                {
                    WriteBytes = null;//clears the memory...
                    GC.Collect();

                    //Console.WriteLine("Initilizing Array");
                    WriteBytes = new byte[FileStreamToWrite.Length];//This one generates an IOException if the file size is greater than 2GB
                    //Console.WriteLine("Done Initilizing Array");

                    Console.WriteLine("Reading file to Memory...");
                    FileStreamToWrite.Read(WriteBytes, 0, (int)FileStreamToWrite.Length);

                    Console.WriteLine("Writing Filestream to Tape");
                    //TapeOperator.Write(objBackupFile.StartTapeLocation, WriteBytes);
                    TapeOperator.Write(isSingleFile ? objBackupFile.StartTapeLocation : objBackupFiles.NextAvailableTapeLocation, WriteBytes);
                    //Console.WriteLine("Finished Writing to Tape");
                }

                objBackupFile.EndTapeLocation = TapeOperator.GetTapePosition();
                Console.WriteLine("Tape Position is " + objBackupFile.EndTapeLocation);
            }

            Console.WriteLine("Now I'm Cleaning up resources...");
            TapeOperator.Close();
            FileStreamToWrite.Close();
            Console.WriteLine("Now I'm Done!");
            Console.WriteLine();
        }
コード例 #19
0
ファイル: BackUp.cs プロジェクト: JakeLardinois/TapeDrive
 public void WriteFileToTape(BackupFile objBackupFile)
 {
     BackupFiles objBackupFiles = new BackupFiles();
     objBackupFiles.Add(objBackupFile);
     WriteFilesToTape(objBackupFiles, true);
 }
コード例 #20
0
ファイル: Program.cs プロジェクト: JakeLardinois/TapeDrive
        private static void RestoreFiles(string strFilesToRestoreFilePathAndName)
        {
            BackupFileList = new BackupFiles();
            try
            {
                using (StreamWriter w = File.CreateText("log.txt"))
                {
                    Log(string.Format("Restore Operation Started at {0}", DateTime.Now), w);
                    // Close the writer and underlying file.
                    w.Close();
                }

                BackupFileList = new BackupFiles(Path.GetDirectoryName(strFilesToRestoreFilePathAndName) + "\\", Path.GetFileName(strFilesToRestoreFilePathAndName));

                //Checks to make sure you have set a default ouput directory for the backupfiles to use.
                if (string.IsNullOrEmpty(BackupFile.DefaultOutPutDirectory) || !Directory.Exists(BackupFile.DefaultOutPutDirectory))
                    throw new DirectoryNotFoundException("Your Output Directory is invalid; use \"C:\\Temp\\\"");

                Backup.ReadFilesFromTape(BackupFileList);
                //BackupFileList.SaveToXMLFile(Directory.GetCurrentDirectory() + "\\", "BackedUpFiles.xml");

                using (StreamWriter w = File.AppendText("log.txt"))
                {
                    Log(string.Format("Restore Operation Ended at {0}", DateTime.Now), w);
                    // Close the writer and underlying file.
                    w.Close();
                }
            }
            catch (Exception objEx)
            {
                using (StreamWriter w = File.AppendText("log.txt"))
                {
                    Log(string.Format("Error {0}", objEx.ToString()), w);
                    // Close the writer and underlying file.
                    w.Close();
                }
            }
        }
コード例 #21
0
ファイル: Program.cs プロジェクト: JakeLardinois/TapeDrive
        private static void BackupSingleFile(string strFileToBackupFilePathAndName)
        {
            SingleFileToBackUp objSingleFileToBackup;
            //BackupFiles objBackupFiles;
            BackupFile objBackupFile;

            try
            {
                using (StreamWriter w = File.CreateText("log.txt"))
                {
                    Log(string.Format("Backup Operation Started at {0}", DateTime.Now), w);
                    // Close the writer and underlying file.
                    w.Close();
                }

                BackupFileList = new BackupFiles();
                objSingleFileToBackup = SingleFileToBackUp.DeSerialize(strFileToBackupFilePathAndName);
                objBackupFile = new BackupFile { FileName = objSingleFileToBackup.FileName, FilePath = objSingleFileToBackup.FilePath, StartTapeLocation = objSingleFileToBackup.StartTapeLocation };

                Backup.WriteFileToTape(objBackupFile);
                BackupFileList.Add(objBackupFile);
                BackupFileList.SaveToXMLFile(Directory.GetCurrentDirectory() + "\\", "BackedUpFile.xml");

                using (StreamWriter w = File.AppendText("log.txt"))
                {
                    Log(string.Format("Backup Operation Ended at {0}", DateTime.Now), w);
                    // Close the writer and underlying file.
                    w.Close();
                }
            }
            catch (Exception objEx)
            {
                using (StreamWriter w = File.AppendText("log.txt"))
                {
                    Log(string.Format("Error {0}", objEx.ToString()), w);
                    // Close the writer and underlying file.
                    w.Close();
                }
            }
        }
コード例 #22
0
ファイル: BackUp.cs プロジェクト: JakeLardinois/TapeDrive
        //public void ReadFileFromTape(BackupFile objBackupFile)
        //{
        //    TapeOperator objTapeOperator;
        //    FileStream objFileStream;
        //    byte[] objReadBytes;
        //    Console.WriteLine("ReadFileFromTape Method");
        //    Console.WriteLine("Initializing the tape drive...");
        //    objTapeOperator = new TapeOperator();
        //    objTapeOperator.Load(TapeName);
        //    Console.WriteLine("I'm Setting the tape position...");
        //    objTapeOperator.SetTapePosition(objBackupFile.StartTapeLocation);
        //    Console.WriteLine("Tape Position is " + objTapeOperator.GetTapePosition());
        //    Console.WriteLine("Creating the file on disk...");
        //    objFileStream = new FileStream(objBackupFile.NewFileNameAndPath, FileMode.OpenOrCreate, FileAccess.Write);
        //    if (objBackupFile.isLargeFile)
        //    {
        //        Console.WriteLine("This file will take " + objBackupFile.FileChunkCount + " Passes to read...");
        //        for (int intCounter = 1; intCounter <= objBackupFile.FileChunkCount; intCounter++)
        //        {
        //            if (intCounter < objBackupFile.FileChunkCount)
        //            {
        //                Console.WriteLine("This is pass " + intCounter);
        //                Console.WriteLine("Now I'm Reading file from tape into memory...");
        //                objReadBytes = objTapeOperator.Read(objTapeOperator.GetTapePosition(), BackupFile.MaxMemoryChunk);
        //                //objReadBytes = objTapeOperator.Read(objBackupFile.StartTapeLocation * intCounter, BackUpFile.MaxMemoryChunk);
        //                Console.WriteLine("Now I'm Writing file to disk...");
        //                objFileStream.Write(objReadBytes, 0, objReadBytes.Length);
        //            }
        //            else
        //            {
        //                Console.WriteLine("This is pass " + intCounter);
        //                Console.WriteLine("Now I'm Reading file from tape into memory...");
        //                objReadBytes = objTapeOperator.Read(objTapeOperator.GetTapePosition(), (int)(objBackupFile.Size - BackupFile.MaxMemoryChunk * (intCounter - 1)));
        //                Console.WriteLine("Now I'm Writing file to disk...");
        //                objFileStream.Write(objReadBytes, 0, objReadBytes.Length);
        //            }
        //        }
        //    }
        //    else
        //    {
        //        Console.WriteLine("Now I'm Reading file from tape into memory...");
        //        objReadBytes = objTapeOperator.Read(objBackupFile.StartTapeLocation, objBackupFile.Size);
        //        Console.WriteLine("Now I'm Writing file to disk...");
        //        objFileStream.Write(objReadBytes, 0, objReadBytes.Length);
        //    }
        //    Console.WriteLine("Tape Position is " + objTapeOperator.GetTapePosition());
        //    Console.WriteLine("Now I'm Cleaning up resources...");
        //    objFileStream.Close();
        //    objTapeOperator.Close();
        //    Console.WriteLine("Now I'm Done!");
        //    Console.WriteLine();
        //}
        public void ReadFilesFromTape(BackupFiles objBackupFiles)
        {
            Console.WriteLine("ReadFilesFromTape Method");
            Console.WriteLine("Initializing the tape drive...");
            TapeOperator = new TapeOperator();
            TapeOperator.Load(TapeName);

            foreach (BackupFile objBackupFile in objBackupFiles)
            {
                Console.WriteLine("I'm Setting the tape position...");
                TapeOperator.SetTapePosition(objBackupFile.StartTapeLocation);
                Console.WriteLine("Tape Position is " + TapeOperator.GetTapePosition());

                Console.WriteLine("Creating the file on disk...");
                FileStreamToWrite = new FileStream(objBackupFile.NewFileNameAndPath, FileMode.OpenOrCreate, FileAccess.Write);

                if (objBackupFile.isLargeFile)
                {
                    Console.WriteLine("This file will take " + objBackupFile.FileChunkCount + " Passes to read...");
                    for (int intCounter = 1; intCounter <= objBackupFile.FileChunkCount; intCounter++)
                    {
                        if (intCounter < objBackupFile.FileChunkCount)
                        {
                            ReadBytes = null;//clears the memory...
                            GC.Collect();

                            Console.WriteLine("This is pass " + intCounter);
                            Console.WriteLine("Now I'm Reading file from tape into memory...");
                            ReadBytes = TapeOperator.Read(TapeOperator.GetTapePosition(), BackupFile.MaxMemoryChunk);
                            //objReadBytes = objTapeOperator.Read(objBackupFile.StartTapeLocation * intCounter, BackUpFile.MaxMemoryChunk);

                            Console.WriteLine("Now I'm Writing file to disk...");
                            FileStreamToWrite.Write(ReadBytes, 0, ReadBytes.Length);
                        }
                        else
                        {
                            ReadBytes = null;//clears the memory...
                            GC.Collect();

                            Console.WriteLine("This is pass " + intCounter);
                            Console.WriteLine("Now I'm Reading file from tape into memory...");
                            ReadBytes = TapeOperator.Read(TapeOperator.GetTapePosition(), (int)(objBackupFile.Size - BackupFile.MaxMemoryChunk * (intCounter - 1)));

                            Console.WriteLine("Now I'm Writing file to disk...");
                            FileStreamToWrite.Write(ReadBytes, 0, ReadBytes.Length);
                        }

                    }
                }
                else
                {
                    ReadBytes = null;//clears the memory...
                    GC.Collect();

                    Console.WriteLine("Now I'm Reading file from tape into memory...");
                    ReadBytes = TapeOperator.Read(objBackupFile.StartTapeLocation, objBackupFile.Size);

                    Console.WriteLine("Now I'm Writing file to disk...");
                    FileStreamToWrite.Write(ReadBytes, 0, ReadBytes.Length);
                }
                Console.WriteLine("Tape Position is " + TapeOperator.GetTapePosition());
            }

            Console.WriteLine("Now I'm Cleaning up resources...");
            FileStreamToWrite.Close();
            TapeOperator.Close();

            Console.WriteLine("Now I'm Done!");
            Console.WriteLine();
        }