使用 rsync 仅复制已更改的文件

Ale*_*lls 2 cp rsync timestamps

现在我有这些命令:

my_dir="$HOME/foo/bar";

rm -rf "$my_dir/WebstormProjects/";

rsync -r --exclude=".git" --exclude="node_modules" "$HOME/WebstormProjects/" "$my_dir/WebstormProjects/"
Run Code Online (Sandbox Code Playgroud)

而不是删除所有内容"$my_dir/WebstormProjects/"然后复制,我希望使用rsync这样的方式,"$my_dir/WebstormProjects/"如果文件"$HOME/WebstormProjects/"较新,它只会覆盖文件。所以像这样:

my_dir="$HOME/foo/bar";

rsync -r --newer --exclude=".git" --exclude="node_modules" "$HOME/WebstormProjects/" "$my_dir/WebstormProjects/"
Run Code Online (Sandbox Code Playgroud)

只有当文件比目标文件新时才可以复制文件吗?

我做了一些阅读:https : //www.tecmint.com/sync-new-changed-modified-files-rsync-linux/

它说:

默认情况下,rsync 仅将新的或更改的文件从源复制到目标...

我认为它是通过比较相对文件路径来实现的?具有相同路径/名称的文件被认为是相同的?

小智 5

这是 rsync 默认行为。它检查文件大小和最后修改的大小。

如果您希望它改用校验和,请使用-cor--checksum选项(效果相同)。手册页在这里并描述了该选项,也可能是感兴趣的--size-only

  • 是的,校验和似乎是更准确的方法,因为我们通常关心文件内容。 (2认同)