我在两个不同的服务器上有两个文件夹。
我想在 A 和 B 之间同步文件,但是,我只想复制文件夹 B 中尚不存在的文件,因为这些文件很大。我不关心更新文件。我只想要文件夹 B 中每个文件的副本。
我如何在 Linux 上执行此操作? (我想知道如何更新也已更改的文件会很高兴)
答案1
rsync 能够做到这一点。
rsync --ignore-existing <src> <dest>
您还可以执行各种更新。只需查看手册页即可。
答案2
使用rsync
, 并指定--ignore-existing
您是否不想更新现有文件:
rsync -e ssh -av --ignore-existing /my/source/directory [email protected]:/data/
我通常添加的一个流行的附加选项是--progress
让您了解发生了什么。如果您期望中断,也可以说--partial
,但如果您在传输过程中确实被切断,我不确定“部分”和“忽略现有”如何混合。
答案3
这是几乎可以做到这一点的技巧,但此技巧仅在复制到同一服务器上的文件夹时才有效。以下是所包含链接中的相关内容。
[jonesy@cranford testing]$ ls
bar foo
[jonesy@cranford testing]$ ls foo
1 2 3
[jonesy@cranford testing]$ ls bar
1 2 3 4 5 6
[jonesy@cranford testing]$ yes n | cp -i bar/* foo 2>/dev/null
[jonesy@cranford testing]$ ls foo
1 2 3 4 5 6
[jonesy@cranford testing]$ ls bar
1 2 3 4 5 6
“我正在向“cp -i”命令传递一个常量“no”,该命令询问您是否要覆盖(或不覆盖)目标目录中已存在的任何文件。您不必将 STDERR 发送到/dev/null — 如果不这样做,最终结果是复制命令只会将文件复制到目标目录(如果它们尚不存在),它将跳过两个目录中都存在的文件。 (嗯,从技术上来说复制命令不会,但当你这样做时操作会)。”
“当然,我可以强行覆盖目录内容,但我不知道两个目录中存在的文件是否相同。或者我可以将一个横向移动,另一个移动到位,但存在同样的问题。”