现在我有这些命令:
my_dir="$HOME/foo/bar";
rm -rf "$my_dir/WebstormProjects/";
rsync -r --exclude=".git" --exclude="node_modules" "$HOME/WebstormProjects/" "$my_dir/WebstormProjects/"
"$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/"
是否可以仅复制比目标文件新的文件?
我读了一些书: https://www.howtoing.com/sync-new-changed-modified-files-rsync-linux/
它说:
默认情况下,rsync 仅将新的或更改的文件从源复制到目标...
我认为它是通过比较相对文件路径来实现的?具有相同路径/名称的文件被认为是相同的吗?
答案1
这是 rsync 的默认行为。它检查文件大小和上次修改大小。
如果您希望它使用校验和,请使用-c
或--checksum
选项(效果相同)。手册页是这里并描述了该选项,也可能是感兴趣的--size-only