文件不同时使用rsync进行复制

时间:2016-10-13 14:45:21

标签: rsync

我必须使用rsync将一个大目录复制到我的NAS,我想说rsync只在源和目标不同时复制文件,以避免复制已复制的文件。

1 个答案:

答案 0 :(得分:3)

跳过相同的文件是人们使用rsync的全部目的。这是rsync的默认行为。大多数情况下,您要使用的唯一选项是rsync -a -P <source> <dest>

-P

-a只表示显示进度,而<dest>表示&#34;存档&#34;这意味着&#34;复制文件时,尽量使副本尽可能相同&#34; (尝试保留权限,所有权,时间戳等)但也意味着“只有在必要时才更新文件”。这就像说&#34;确保<source>rsync&#34;的最新备份。

但是,默认情况下rsync -a -c -P <source> <dest> 已经考虑两个文件相同,如果它们具有相同的文件大小和相同的最后修改日期。当然,两个文件也可以具有相同的大小和相同的最后修改日期并且不相同。因此,当第一次运行该命令并且您不确定哪些文件可能需要更新以及哪些文件不需要更新时,请尝试以下操作:

-c

cp -a -v <source> <dest> 表示不依赖于大小和日期,校验和每个文件并比较校验和。仅当校验和相同时,才将文件视为相同。请注意,rsync不需要对整个文件进行校验和,大文件会被分成较小的块,每个块都会被单独检查,因为只传输了已更改的块。

因此,即使使用校验,您也可以在通过网络连接进行复制时节省大量时间。在本地复制时,它不会在任何时候保存你,因为只是复制一切可能比检查所有内容更快。因此,当源和目标都是本地驱动器时,普通副本将始终击败检查rsync的速度。在那种情况下使用

-a

或者如果您的系统不知道cp -pPR -v <source> <dest> ,请使用

-a

-v完全相同。同样,-c只是为了看到一些进展。

我只使用rsync -a -P --ignore-existing <source> <dest> 进行第一次同步,之后,依赖文件大小和上次修改日期通常可以很好地进行更新,而且速度要快得多。它将起作用,因为如果文件自上次同步后已被更改,它将具有不同的最后修改日期,因此只需比较日期rysnc将知道该文件必须在目的地更新。当然,这只适用于您的系统都设置了正确的日期/时间,以及您是否操作文件的最后修改日期,并且不禁止您的系统更新它们。

如果您只想在场时跳过文件,请使用:

man <command>

这就像告诉rsync&#34;如果你在目的地看到一个同名的文件,总是认为它是相同的,永远不会更新它#34;。

正如一般提示,如果您输入

man rsync

在终端中,您将在大多数系统(Linux,MacOS X和UNIX系统)上获得一个很好的帮助页面,详细解释所有选项。您可以使用箭头键向上/向下滚动或向上/向下翻页,您可以通过点击&#34; q&#34;离开该视图。退出。 E.g。

{{1}}