2

我正在考虑将备份实用程序作为我的下一个项目想法,但我真的不知道从哪里开始或应该如何进行备份。

任何人都可以对归档备份和恢复等的方法有所了解。

谢谢

4

5 回答 5

4

首先,我认为我在 .NET Framework 中没有看到任何专门为备份/归档/恢复活动设计的命名空间或类。如果有人知道,请不吝赐教!

最简单的备份文件就是将文件从一个位置复制到另一个位置。假设您有想要维护备份的源代码,并且它每天都在变化。您可以创建一个小型控制台应用程序,该应用程序只需将目标文件夹中的所有文件复制到外部驱动器,覆盖自上次复制操作以来更改的所有文件,并将任何新文件和文件夹添加到目标。然后使用计划任务每​​天在不使用计算机时运行该实用程序一次 - 或者至少在不编辑源时。

System.IO 命名空间中有许多方法和类,这将使这相对容易做到。

IO 命名空间中一些有用的类是:

  • Directory 提供了创建、移动和枚举目录和子目录的静态方法
  • DirectoryInfo 是一个公开文件夹/目录属性的类
  • File 为文件提供静态方法
  • FileInfo 是一个公开文件属性的类。

这是一个代码示例,它将为您提供 C: 驱动器根目录下的所有顶级文件夹的数组:

string[] d = Directory.GetDirectories(@"C\", "*.*", SearchOption.TopDirectoryOnly);
DirectoryInfo[] di = new DirectoryInfo[d.Length];
for (int x = 0; x < d.Length; x++)
{
    di[x] = new DirectoryInfo(d[x]);
}
于 2010-08-25T17:12:15.960 回答
2

一种更简单的方法是:

  1. 允许用户选择目标文件夹和目的地,以及目的地类型(Zip、副本等)
  2. 将目标文件夹中的文件和子文件夹复制/压缩到目标

如果你只是想复制文件,那么你可以使用 DirectoryInfo 和 FilesInfo 来获取目录、文件,并执行 FileCopy、FileMove 等...

如果你想在目的地压缩文件,那么你可以使用现有的库,比如 7z,它也有 C# 的代码。

于 2010-08-25T17:10:19.213 回答
2

AlphaVSS将完整的 VSS(卷影复制服务)API 公开给 .NET 代码。这可以让您使用托管代码创建时间点的快照。

于 2011-07-11T05:08:59.727 回答
1
  • 您打算逐个扇区还是逐个文件备份?
  • 您的备份是以管理员身份(访问所有文件)还是以用户身份(仅访问某些文件)身份运行?
  • 您如何保护现在存储在备份文件中的管理员级信息不被用户级查看器访问?
  • 您的目标介质必须有足够的空间用于备份(大型网络驱动器),还是备份能够跨越多个介质?(光盘)
  • 在后一种情况下,您将如何处理大于单个目标媒体的单个文件?
  • 您将始终进行完整备份(所有内容,始终)还是增量备份(自上次备份以来发生了哪些变化)或差异备份(自上次完整备份以来发生了哪些变化)?
于 2010-08-25T16:58:48.650 回答
1

通读这篇Wikipedia 文章 - 备份并确保您了解其中的所有内容。

最简单的备份实用程序是允许用户选择源文件夹和目标文件夹,然后将其复制。(因为这就是备份本质上的全部)。

但是您将需要一些递归文件夹调用来备份文件夹中的每个文件夹。

于 2010-08-25T16:59:42.933 回答