使用以下命令将目录“home”(从远程计算机)复制到本地计算机:
ssh [email protected] 'tar -cz -C /home/*' | tar -zxv
交易后的文件数量不匹配。 有些文件从不复制。
任何人都遇到类似的问题?
使用tar
复制文件的一个问题是旧的POSIX tar格式( ustar
)有100个字节的有限长度来存储硬链接。 它可以应付更长的名字 ,所以只要你的文件有一个单一的链接,一切都很好。 但是当tar再次遇到一个inode时,它会产生一个硬链接logging,只有100个字节的名字。 如果名称太长,则第二个链接不会存储在存档中。
我记得tar的实现,丢弃这些链接与诊断消息,但仍然退出状态为0.也许你的焦油更糟糕,并默默地丢弃它们。
新的POSIX tar格式( pax
)没有这个限制。 尝试使用pax
代替tar
,或使用正确的选项tar
。 GNU tar的当前版本默认为pax格式,并且如果被告知产生名称不适合的ustar
归档文件,则会正常投诉。
改用rsync。 这是更快,更安全。
rsync -avuz [email protected]:/home/ /srv/backups/home/
然后你可以压缩数据。
tar cvzf /srv/backups/home_`date +%F`.tgz -C /srv/backups home