Windows 批处理脚本备份数据

在高级 Mac 和 Windows 计算机中长大的计算机用户可能不知道,但很久以前,所有个人计算机都是使用命令行界面控制的。是的,Windows 机器上那个笨重的命令框曾经是大多数人与计算机交互的唯一方式。命令行界面严重依赖于称为“脚本”的小程序,这些小程序是用于执行常见任务的操作系统命令的集合。

尽管当今 PC 的图形用户界面比旧的命令行更加复杂和易于使用,但旧的控制计算机的方法仍然有用。命令行脚本最常见且最适合的应用程序之一是数据备份。命令行脚本可以在没有任何人工交互的情况下随时自动运行,并且几乎没有限制。最重要的是 - 它们是 Windows 操作系统的内置部分。

为什么是命令行脚本?

既然有商业和免费的备份程序,为什么要使用命令行脚本呢?嗯,命令行脚本有许多独特的优势。这里有几个:

  • 本机命令 : 有什么比使用通过创建数据的程序提供的功能更好的方法来备份数据?无论是操作系统本身通过简单的文件复制命令还是数据库命令来生成可恢复的二进制文件,源程序都知道如何备份自己。
  • 终极控制 :由于命令行脚本遵循简单的分步过程,您可以确切地知道发生了什么,并且可以轻松修改行为。
  • 快速地 : 由于一切都是本机命令,因此没有什么可以解释的。同样,您使用的是程序本身提供的命令,因此开销保持在最低限度。
  • 强大的 :我还没有看到无法通过命令行脚本完成的备份任务……而且我做了一些时髦的事情。尽管如果您有真正独特的需求,您可能需要进行一些研究和反复试验,但通常您所使用的脚本语言的内置功能和特性已经绰绰有余。
  • 自由灵活 :显然,命令行脚本不需要任何费用(除了开发它的时间),因此您可以将脚本复制到任意数量的机器和系统,几乎不需要时间或成本。将此与为多台服务器和/或台式机上的备份软件购买许可证的成本进行比较。

备份批处理脚本的快速概览

大多数人从未学会使用命令行脚本,这在某种程度上被认为是一种“黑色艺术”。然而,它实际上是一件非常简单的事情。为了演示命令行的强大功能,我提供了一个简单的 Windows 批处理脚本,您可以使用它来备份您的重要数据。这个可配置和可定制的脚本不需要任何 Windows 批处理脚本语言的知识(或愿意学习),但如果您决定要了解有关 Windows 批处理脚本的更多信息,您会发现此脚本是一个很好的起点.

备份脚本的作用:

  1. 创建您在单独的配置文本文件(见下文)中指定的文件和文件夹的完整或每日增量(定义见下文)备份。
    • 命名文件夹后,将备份该文件夹和所有子文件夹。
    • 命名文件后,只会备份该文件。
  2. 压缩(zip)备份的文件。在复制所有要备份的文件后,它们会被压缩以节省空间。需要在您的系统上安装 7-Zip 才能使其工作。
  3. 为压缩文件标注日期并将其移动到存储位置。备份文件压缩后,生成的存档会根据当前日期指定文件名,然后移动到配置的存储位置,例如外部驱动器或网络位置。
  4. 自行清理。完成所有任务后,批处理脚本会清除它创建的所有临时文件。

要求:

Windows 2000/XP/2003/Vista 或更新版本

7-Zip(免费)

配置文件:

配置文件只是一个文本文件,其中包含要备份的文件和文件夹,每行输入一个备份项。这个文件 必须 命名为“BackupConfig.txt”并与备份脚本位于同一文件夹中。以下是 BackupConfig.txt 文件的示例(注意,第一行的“#”字符表示该行是注释;脚本运行时总是忽略注释):

# 输入文件和文件夹名称,每行一个。

C:Documents and SettingsJason FaulknerDesktop C:Documents and SettingsJason FaulknerMy DocumentsImportant Files C:ScriptsBackupScript.bat

上面的示例将备份 Windows 用户 Jason Faulkner 的桌面(以及桌面上的所有文件夹)、My Documents 中名为“Important Files”的文件夹(以及“Important Files”中的所有文件夹)和里面的文件“BackupScript.bat” C:Scripts 目录。

备份类型:

  • 完整备份:备份中包含所有文件和文件夹(包括子文件夹)的完整副本。
  • 增量备份:当提供文件夹时,只有在文件夹上创建或修改的文件 当前日期

    备份。提供文件后,无论何时修改它,都会对其进行备份。

数据备份 Windows 批处理脚本

我想强调这个脚本是非常基本的,因为它所做的只是通过使用一个简单的文件副本来创建备份。您可以设置一些配置选项:

  • 存储生成的压缩备份文件的备份存储位置。
  • 运行完整备份的一周中的哪一天(其他任何一天都将运行增量备份)。
  • 7-Zip 在您的计算机上的安装位置。脚本会自动设置为在默认位置查找。

如果您有任何建议或功能要求,请在下方评论。我真的很想为这篇文章写一篇后续文章,其中包含基于读者输入的更新脚本。如果您需要有关如何“使用”此脚本或设置计划任务的说明,请查看脚本源下方的链接。

闲话少说,这里是:

笔记:由于下面的引号未正确显示(因此可能会弄乱脚本),我在脚本下方包含了一个纯文本链接,您可以使用它来获取准确的复制来源。

@ECHO OFF REM BackupScript REM 版本 1.01,更新:2008-05-21 REM 作者 Jason Faulkner (articles[-at-]132solutions.com) REM 对用户配置的文件夹和文件执行完整或增量备份。 REM 用法--- REM > BackupScript SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION REM ---配置选项--- REM 要存储生成的备份存档的文件夹位置。 REM 此文件夹必须存在。不要在末尾加上 '',这会自动添加。 REM 您可以输入本地路径、外部驱动器号(例如 F:)或网络位置(例如 \serverbackups) SET BackupStorage=C:Backup REM 您希望在一周中的哪一天执行完整备份? REM 输入以下内容之一:Sun、Mon、Tue、Wed、Thu、Fri、Sat、* REM 除了下面指定的那一天之外,一周中的任何一天都将运行增量备份。 REM 如果您输入“*”,则每次都将运行完整备份。 SET FullBackupDay=* REM 在您的计算机上安装 7-Zip 的位置。 REM 默认位于 Program Files 目录中的文件夹“7-Zip”中。 SET InstallLocationOf7Zip=%ProgramFiles%7-Zip REM +--------------------------------------- --------------------------------+ REM |除非您知道自己在做什么,否则不要在此处更改任何内容。 | REM +------------------------------------------------ -----------------------+ REM 用法变量。 SET exe7Zip=%InstallLocationOf7Zip%7z.exe SET dirTempBackup=%TEMP%backup SET filBackupConfig=BackupConfig.txt REM 验证。 IF NOT EXIST %filBackupConfig% ( ECHO No configuration file found, missing: %filBackupConfig% GOTO End ) IF NOT EXIST "%exe7Zip%" ( ECHO 7-Zip 未安装在以下位置:%dir7Zip% ECHO 请更新目录7-Zip 已安装 GOTO End ) REM 备份变量。 FOR /f "tokens=1,2,3,4 delims=/" %%a IN ('date /t') DO ( SET DayOfWeek=%%a SET NowDate=%%d-%%b-%%c SET FileDate=%%b-%%c-%%d ) IF {%FullBackupDay%}=={*} SET FullBackupDay=%DayOfWeek% IF /i {%FullBackupDay%}=={%DayOfWeek%} (SET txtBackup =Full SET swXCopy=/e ) ELSE ( SET txtBackup=Incremental SET swXCopy=/s /d:%FileDate% ) ECHO 开始复制文件。 IF NOT EXIST "%dirTempBackup%" MKDIR "%dirTempBackup%" FOR /f "skip=1 tokens=*" %%A IN (%filBackupConfig%) DO ( SET Current=%%~A IF NOT EXIST "!Current! " ( ECHO ERROR! Not found: !Current! ) ELSE ( ECHO Copying: !Current! SET Destination=%dirTempBackup%!Current:~0,1!%%~pnxA REM 确定条目是文件还是目录。如果"%%~xA"=="" ( REM 目录。XCOPY "!Current!" "!Destination!" /v /c /i /g /h /q /r /y %swXCopy% ) ELSE (REM 文件。 COPY /v /y "!Current!" "!Destination!" ) ) ) ECHO 完成复制文件。回声。 SET BackupFileDestination=%BackupStorage%Backup_%FileDate%_%txtBackup%.zip REM 如果备份文件存在,请将其删除以支持新文件。 IF EXIST "%BackupFileDestination%" DEL /f /q "%BackupFileDestination%" ECHO 压缩备份文件。 (新窗口)REM 在较低优先级的进程中使用 7-Zip 压缩文件。开始“压缩备份。不要关闭” /belownormal /wait "%exe7Zip%" a -tzip -r -mx5 "%BackupFileDestination%" "%dirTempBackup%" ECHO 完成压缩备份文件。回声。 ECHO 清理。如果存在 "%dirTempBackup%" RMDIR /s /q "%dirTempBackup%" ECHO。 :End ECHO 完成。回声。本地

纯文本源可在此处获得:备份

如果您在开始实施此脚本时需要帮助,这里有几个链接可以帮助您:

  • 如何创建批处理文件
  • 如何创建 Windows 计划任务

这与我每天用来备份我的计算机的脚本相同(当然有一些修改),所以我知道它工作得很好。希望对你有帮助。

享受!