我正在尝试将大量文件从我的 NAS 复制到我的服务器,大约 2TB。
我发现使用netcat
tar
管道复制目录非常快,大约 40mb/s。它似乎比rsync
和运行得更快ssh
,所以我宁愿继续使用netcat
tar
管道。
这是我所做的:
在接收时我这样做:
nc -l 7000 | pv | tar -xpf -
在发送端我这样做:
tar -cf - * | pv | nc otherhost 7000
现在我想停止复制并稍后继续。我尝试使用一个小目录重新启动该过程,但它也会发送已经存在的文件。
有没有办法可以阻止它发送服务器上已经存在的文件?
答案1
不是自动的,但当你稍后恢复传输时,你可以使用 tar 排除列表排除已复制的文件。请参阅http://www.cyberciti.biz/faq/exclude-certain-files-when-creating-a-tarball-using-tar-command/
如何在使用 tar 命令时排除 zyz 和 abc 文件?
GNU 版本的 tar 归档实用程序具有
--exclude
和-X
选项。因此,要排除 abc 和 xyz 文件,您需要键入以下命令:
$ tar -zcvf /tmp/mybackup.tar.gz --exclude='abc' --exclude='xyz' /home/me
如果您有超过 2 个文件,请使用 -X 选项指定多个文件名。它从文本文件中读取排除文件名列表。例如,创建一个名为 exclude.txt 的文件:
$ vi exclude.txt
附加文件名:
abc xyz *.bak
保存并关闭文件。这列出了需要排除的文件模式。现在输入命令:
$ tar -zcvf /tmp/mybackup.tar.gz -X exclude.txt /home/me
如果文件传输了一半,而您不想再次用 tar 覆盖它,则可以将其排除,然后稍后使用其他工具恢复复制。我建议使用 rsync 或 lftp。