特殊复制(可能是 Robocopy)要求

特殊复制(可能是 Robocopy)要求

我有一个特殊的复制(也许是 Robocopy)要求:

我有:

  • 源目录(带有子目录)
  • 目标目录(带有子目录)

两个目录结构几乎相同。但目标目录中有一些较新或附加的文件。我必须将文件从源复制到目标目录,这些文件不是目标目录中较新的(或添加的)。

例子:

文件 example.doc 存在于源目录和目标目录中。但目标目录中的文件具有较新的时间戳(有人处理过此文件),我想要不是覆盖此文件。

文件 example2.doc 存在于源目录和目标目录中。两个文件具有相同的时间戳。在这种情况下,我想用源目录中的文件覆盖 tartet 目录中的文件。

也许 Robocopy 是这种情况的工具...我阅读了所有参数(有很多:)但我没有找到解决方案。

顺便说一句:这是我在 stackoverflow 上的第一篇帖子 :-)

非常感谢。

格诺特

答案1

您可以使用rsync带有备份开关的命令-b,带有“在接​​收方跳过较新的文件”开关,-u如以下顺序所示,其中第一个命令rsync获取文件,第二个命令拒绝覆盖接收方的较新文件,第三个rsync命令将发送方的较新文件复制到接收方,并将接收方已修改的文件备份为十五~然后用发件人的十五。可以控制移开的文件的位置,并使用–备份目录=DIR选项。

当然,您可以同样轻松地在同一个文件系统上完成所有同步。

(嘿!这就是 Carbon Copy Cloner 的大部分魔力所在!而且他们收取的服务费是 40 美元……唉,我离题了……)

whmcclos@Williams-MacBook-Pro:~$ rsync -auvb ~/bin whmcclos@localhost:/tmp
building file list ... done
bin/
bin/days
bin/hide
bin/jedit
bin/mlf
bin/most_recent_file -> most_recent_file.pl
bin/most_recent_file.pl
bin/mplayer
bin/mvim
bin/qvim
bin/sys_config
bin/sys_config.log
bin/tree
bin/try
bin/unhide
bin/xv
bin/zed -> zed.pl
bin/zed.pl

sent 18887050 bytes  received 390 bytes  37774880.00 bytes/sec
total size is 18883599  speedup is 1.00
whmcclos@Williams-MacBook-Pro:~$ touch /tmp/bin/xv
whmcclos@Williams-MacBook-Pro:~$ rsync -auvb ~/bin whmcclos@localhost:/tmp
building file list ... done

sent 422 bytes  received 20 bytes  294.67 bytes/sec
total size is 18883599  speedup is 42723.07
whmcclos@Williams-MacBook-Pro:~$ touch /tmp/bin/xv
whmcclos@Williams-MacBook-Pro:~$ touch ~/bin/xv
whmcclos@Williams-MacBook-Pro:~$ rsync -auvb ~/bin whmcclos@localhost:/tmp
building file list ... done
bin/xv

sent 7392 bytes  received 10434 bytes  35652.00 bytes/sec
total size is 18883599  speedup is 1059.33
whmcclos@Williams-MacBook-Pro:~$ ls /tmp/bin/xv*
/tmp/bin/xv  /tmp/bin/xv~

答案2

文件 example2.doc 存在于源目录和目标目录中。两个文件具有相同的时间戳。在这种情况下,我想用源目录中的文件覆盖 tartet 目录中的文件。

与此相关的命令行开关是:

/IS      Include Same files.

笔记:仅使用 /IS 开关(不带任何其他开关)会强制完全刷新目标树。

有关 Robocopy 选项的更多信息,请参阅我撰写的有关 Robocopy 的另一篇文章:https://superuser.com/a/566054/144147,其中包括更多文档的外部链接。

相关内容