我正在尝试通过 ssh 快速传输数百到数千个小文件,方法是创建它们的 tar 存档并通过 ssh 传输它们。
我的本地系统运行的是 Linux Mint 18.1,我的远程系统运行的是 Ubuntu 16.04 Server。
例如,假设我有目录
/var/www/testing
以及其中的几个文件和子文件夹。
/var/www/testing/subdir1/*
/var/www/testing/subdir2/*
/var/www/testing/file1
/var/www/testing/file2
/var/www/testing/file3
我想将所有这些文件传输给自己。因为文件太多,而且 ssh 一个一个地传输文件很慢,所以我正在创建它们的存档并传输存档:
ssh user@domain "cd /var/www; tar zcvf - testing" | "tar zxvf -"
只要 tar 命令没有被中断,这就可以完美地工作。如果 tar 被中断,第一个文件(在本例中为 file1)将被覆盖为部分存档,包括每个文件,直到它被中断的文件。
是不是我正在做的事情导致了这种情况?我该如何避免这种情况,或者是否有更好的方法来快速传输大量文件?
最佳答案
rsync
应该是一个很好的工具。
如果您想继续使用 tar 来完成工作,并且您的目标机器的驱动器上确实有足够的空间,那么您可以先复制整个文件,然后在整个文件传输完毕后才解压它。喜欢:
ssh user@domain "cd/var/www; tar zcvf - testing"| cat >/tmp/testing.tgz && tar xzvf/testing.tgz && rm -f/tmp/testing.tgz
可能您还想在 tar 中使用 p
标志,以保留权限。
关于linux - 如果 tar 被中断,它会覆盖它操作的第一个文件。有什么办法可以防止这种情况发生吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43479448/