我有一个文件夹,里面有数万个文件,我需要将它们复制到另一个盒子中。由于一次处理一个文件非常耗时,而且我没有硬盘空间来制作所有图块的压缩 tar 存档 — — 我想执行以下操作:
即时打包整个档案,然后通过 scp 直接将其传递到另一个框中,并立即在那里解压。这样,我就可以获得全部带宽(无需启动每个文件),并且不会因为复制整个档案而耗尽空间。
我的 A 盒子是 OSX,B 是 Ubuntu。
有没有一行代码可以解决这一问题?
答案1
scp 仅适用于驱动器上已有的文件。由于您不想在发送文件之前创建文件 (tar),因此您必须直接使用 ssh 和 tar:
tar -c -f - ./path/to/compress | ssh eee.lan tar -C /where/to/extract -x -f-
答案2
我建议使用rsync
;如果您的连接中断,rsync 可以从它中断的地方继续(会有一点开销)。rsync 可以直接通过 ssh 工作,因此它仍然是安全的。
rsync -av -e ssh /path/to/send rsync://[email protected]/path/to/receive