如果 tar 被中断,它会覆盖它操作的第一个文件。有什么办法可以防止这种情况发生吗?
If tar is interrupted, it overwrites the first file it operates on. Is there any way I can prevent this?
我正在尝试通过 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 进行作业,并且 target 机器的驱动器上有足够的 space,那么您可以复制整个文件一旦整个文件被传输,首先也是唯一的 untar 它。喜欢:
ssh user@domain "cd /var/www; tar zcvf - testing" | cat >/tmp/testing.tgz && tar xzvf /testing.tgz && rm -f /tmp/testing.tgz
可能您还想将 p
标志与 tar 一起使用以保留权限。
我正在尝试通过 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 进行作业,并且 target 机器的驱动器上有足够的 space,那么您可以复制整个文件一旦整个文件被传输,首先也是唯一的 untar 它。喜欢:
ssh user@domain "cd /var/www; tar zcvf - testing" | cat >/tmp/testing.tgz && tar xzvf /testing.tgz && rm -f /tmp/testing.tgz
可能您还想将 p
标志与 tar 一起使用以保留权限。