65.9K
CodeProject 正在变化。 阅读更多。
Home

一个简单的程序,用于备份您的程序文件夹

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (3投票s)

2007年5月5日

CPOL

2分钟阅读

viewsIcon

20483

downloadIcon

336

一个用于备份程序文件夹的应用程序。

引言

本文介绍如何构建一个简单的控制台应用程序,该程序使用 Windows 计划任务定期(例如,每天和/或每月)备份您的应用程序文件夹。 在此应用程序中,您还可以过滤某些文件夹(例如 Binimages)或某些文件扩展名(例如 .pdb.user),或者避免备份某些文件。

背景

您可以使用 Windows 计划任务定期或仅运行一次某些任务。 它可通过“附件”->“系统工具”菜单项访问。 您可以指定一个可执行文件(本项目的 js 文件)以定期或仅运行一次的方式运行。

我将使用 js 文件作为可执行文件,因为您可以使用记事本轻松更改它,这是系统管理员使用它制作管理脚本的常用扩展名。 我还在 .NET2.0 中使用 java.util.zip 命名空间来创建压缩备份。 由于它能够将新条目添加到 Zip 文件,因此该命名空间优于 System.IO.Compression

使用代码

这只是一个简单的应用程序,包括两个文件;一个是包装 java.util.zip 类的 ZipClass,另一个是具有一些静态方法来创建备份的主程序类。 Main 方法是控制台应用程序的启动点,它从命令行获取参数(我们可以通过 cmd.exe 实用程序或我在 js 文件中使用 WScript.ShellExecute 方法的方式传递它们)。

static void Main(string[] args) { 
    string argFilePath; 
    if (args.Length > 0 && !string.IsNullOrEmpty(args[0]) 
                        && File.Exists(args[0]) ) 
    {
        .....
此应用程序中的 Main 方法接受一个参数,该参数指定正在运行的参数的文件路径(运行配置)。 我对这些文件使用了“.prm”扩展名,但这完全是可选的。 参数文件是一个 XML 文件,如下所示
<Parameters>
    <Folders>
        <Source>M:\Mehran</Source>
        <Destination>M:\MonthlyMehranBackup</Destination>
    </Folders>
    <FilterExpersions>
        <Folder>Obj|Debug|Release|Prototype|support</Folder>
        <File></File>
        <Extention>.pdb</Extention>
    </FilterExpersions>
    <Type>RootFolder</Type>
</Parameters>

如您所见,此文件充当配置文件;您指定源路径和目标路径,以及要应用的过滤器。 最后,您应该为每个备份策略创建一个 js 文件,内容如下(如果前面的参数文件名为“MonthlyBackupMaker.prm”):

var oShell = new ActiveXObject("WScript.Shell"); 
oShell.Exec("BackupMaker.exe MonthlyBackupMaker.prm");

现在一切都完成了;您应该只需添加一个计划任务来每月运行此 js 文件,例如。

如果您指定类型为“RootFolder”(如上例所示,而不是“FileOnly”),则应用程序将测试源子文件夹(第一级)的 LastWriteTime 是否小于上次备份日期。

static bool FolderIsExpired(DirectoryInfo DirInf)
{
    if (DirInf.LastWriteTime >= perviousBackUpDate)
        return true;
    return false;
}
© . All rights reserved.