我可以停止 netcat tar 管道并稍后继续而不覆盖现有文件吗?

我可以停止 netcat tar 管道并稍后继续而不覆盖现有文件吗?

我正在尝试将大量文件从我的 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。

相关内容