我在一台服务器上有一个相当大的目录(超过 4000 个文件),我想将其复制到另一台服务器(其中包含该目录的先前版本)。rsync
是第一个选项,但它会使目标文件夹处于等待状态相当长一段时间(超过一分钟)。
我想做点不同的事情:
gzip
源文件夹scp
将档案传输至目标服务器gunzip
那里的文件- 删除源和目标处的档案
实现这一切的最佳方法是什么?
答案1
rsync
似乎有--delay-updates
你需要的东西:
«…
此选项将每个更新文件的临时文件放入保存目录中,直到传输结束,此时所有文件将快速连续地重命名到位。这试图使文件的更新更加原子化。默认情况下,文件被放置在每个更新文件的名为“.~tmp~”的目录中
…”
答案2
如果您有足够的空间,最快的方法是rsync
两次。在目标机器上保留两个文件副本。首先执行远程操作rsync
以更新非活动副本。然后执行本地操作rsync
以从非活动副本更新活动副本。
答案3
rsync 到冷副本,然后只需更改符号链接并删除以前的活动副本
答案4
1-2-3:tar -c -O <source folder> | gzip -c | ssh <destination server> "gzip -d | tar -x "
4:rm <source folder>