![将许多小文件保存到 LTO 磁带](https://linux22.com/image/104639/%E5%B0%86%E8%AE%B8%E5%A4%9A%E5%B0%8F%E6%96%87%E4%BB%B6%E4%BF%9D%E5%AD%98%E5%88%B0%20LTO%20%E7%A3%81%E5%B8%A6.png)
我正在对 LTO 磁带进行备份。因为我的备份包含很多小文件,这会减慢从磁盘的读取速度。我正在使用 buffer 命令来防止擦鞋我的磁带:
bkname="test"; tobk="*"
totalsize=$(du -csb $tobk | tail -1 | cut -f1)
tar cvf - $tobk | tee >(sha512sum > $bkname.sha512) >(tar -tv > $bkname.lst) | mbuffer -m 4G -P 100% | pv -s $totalsize -w 100 | dd of=/dev/nst0 bs=256k
这种方法的问题是:我无法跨多个磁带进行备份,因为 tar 命令不直接访问磁带,因此无法识别完整的磁带。
缓冲小文件并同时进行多磁带备份的正确方法是什么?
答案1
考虑使用star
而不是 GNU tar
。该star
程序内置了一个缓冲工具,可以解决您的问题。
答案2
tar 存档的大小不是计算的大小。只有预检运行才能提供正确的大小,但会使工作量加倍。一个例子:
~# du -csb /usr | tail -1 | cut -f1
=> 1585916720
~# tar --totals -cf /dev/null /usr
=> 1656514560
我的建议:使用像 dar 这样强大的备份工具http://dar.linux.free.fr/