ssh tar 复制-缺少文件

ssh tar 复制-缺少文件

使用以下命令将目录“home”(从远程计算机)复制到本地计算机:

ssh [email protected] 'tar -cz -C /home/*' | tar -zxv

交易后的文件数量不匹配。有些文件从未被复制过。

有谁遇到过类似的问题吗?

答案1

使用tar复制文件的一个问题是旧 POSIX tar 格式 ( ustar)存储硬链接的长度限制为 100 字节。它可以处理更长的名称,因此只要您的文件只有一个链接,一切就都正常。但是当 tar 第二次遇到 inode 时,它​​会生成一个硬链接记录,其中只有 100 个字节用于名称。如果名称太长,则第二个链接不会存储在存档中。

我确实记得 tar 实现丢弃了这些带有诊断消息的链接但仍然以状态 0 退出。也许你的 tar 甚至更糟并且默默地丢弃了它们。

新的 POSIX tar 格式 ( pax)没有这个限制。尝试使用pax而不是tar,或者tar使用正确的选项。当前版本的 GNU tar 默认为 pax 格式,如果被告知生成ustar名称不适合的存档,它会正确发出警告。

答案2

请使用 rsync。它更快、更安全。

rsync -avuz [email protected]:/home/ /srv/backups/home/

然后您就可以压缩数据。

tar cvzf /srv/backups/home_`date +%F`.tgz -C /srv/backups home

相关内容