我需要在 NFS 服务器上归档一些大目录结构。不太可能很快就需要它们(如果有的话)——它们只是出于政策原因而被保留。
为此,我正在制作 tarball,并可能最终将它们写到磁带上。
只有一个问题 - 我在处理非常大的卷(10TB+)时遇到了一些困难 - 运行时间足够长,以至于它会被放置过夜,并且在某些情况下它似乎“停滞” - 这不太容易讲述一个有背景的tar xvfz
。
然后,诸如空间不足、网络中断等问题意味着,对于在单个会话中未完成的事情,我不完全确定存档是a)完整的和b)完全有效的。
因此,希望得到一些建议 - 理想情况下,我想要的是可恢复的东西,例如 rsync,我可以多次传递副本,而无需重新开始。
有没有办法“rsync 到 tar.gz”?验证文件写入的不太昂贵的方法?我目前正在研究“提取、shasum 和比较”,但这也是一个相当昂贵/密集的过程。
答案1
也许拆分备份将是解决您问题的一个步骤?
tar cvzf - /your/dir/ | split --bytes=1000MB - backup.tar.gz
或者你可以看看dar
,也许。它具有内置的拆分功能:
http://dar.linux.free.fr/doc/Features.html
我还找到了一些有关如何恢复中断的dar
备份作业的信息,这些信息可能会有所帮助:
答案2
要验证操作是否成功,只需&& echo
在每个tar
操作中添加一些内容即可:
tar cvzf target.tar "$source" && echo "$source tarred successfully" >> progress.log
它不会帮助你恢复,但至少,这样你会知道你是否tar
有效。
另一件可能有帮助的事情是首先 gzip 和然后柏油:
find "$source" -type f -exec gzip {} + && tar cvf "$source".tgz "$source" &&
echo "$source tarred successfully" >> progress.log
这样,您就可以轻松检查文件是否被压缩。该tar
操作相对便宜,压缩会减慢速度。通过将两者分离,您将能够获得更细粒度的控制。