使用Windows命令行同步文件

要使用Windows命令行同步文件,您将需要使用xcopy命令。该程序的默认操作是将文件或目录从一个位置复制到另一个位置,但是您可以给它提供标志来告诉它同步文件。有一些标志可用(使用xcopy /?查看所有标志),但您可能只想使用以下标志:

  • / D-复制在指定日期或之后更改的文件。如果没有给出日期,则仅复制源时间比目标时间新的那些文件。

  • / I-如果目标不存在,并且复制多个文件,则假定目标必须是目录。

  • / E-复制目录和子目录,包括空目录和子目录。

  • / Y-禁止提示您确认要覆盖的文件和现有的目标文件。

  • / H-还复制隐藏文件和系统文件。

  • / R-覆盖只读文件。

/ F标志对于测试(也可能让您省心)也很有用,因为它在复制时会显示完整的源名称和目标名称。

要将文件从一个目录同步到另一个目录,您可以使用xcopy,如下所示:

xcopy c:\mysourcedirectory c:\mydestinationdirectory /D /I /E /F /Y /H /R

要与远程服务器同步,可以仅使用服务器地址和目录名称作为目标目录:

xcopy c:\mysourcedirectory \\myserver\mydestinationdirectory /D /I /E /F /Y /H /R

如果要为服务器目录创建临时本地驱动器,则可以使用pushd命令。

pushd \\myserver\mydestinationdirectory

当您运行此命令时,您将被移至系统指定的新目录字母。本质上,它向后翻遍字母以查找可以使用的驱动器号。现在,您可以将网络文件夹视为本地驱动器,并在其周围使用cd。附带说明一下,如果尝试在Windows中cd到服务器文件夹,则会看到错误“ CMD不支持将UNC路径作为当前目录”,在这种情况下,请使用上述命令停止该错误。

要删除此服务器目录,只需使用命令popd,它将删除您映射的最后一个网络驱动器。

popd

有时您可能想要强制复制所有文件,而不管它们的创建时间如何,在这种情况下,您可以运行不带/ D标志的xcopy命令。

xcopy c:\mysourcedirectory c:\mydestinationdirectory /D /I /E /F /Y /H /R

使用xcopy时,一句话警告。它不如rsync复杂,因此,如果您在源目录中重命名或删除文件,则不会在目标目录中对其进行更改。最近,当我更改了一些文件名和位置,然后使用xcopy将插件从本地主机复制到服务器时,这给我带来了一些问题。我使用的自动加载器加载了所有文件,并产生致命错误,因为它找不到旧文件中引用的某些类文件。

如果您需要rsync随附的灵活性,则可能应该使用可用的同步程序之一,甚至使用源代码控制机制。