复制1TB稀疏文件

复制1TB稀疏文件,第1张

复制1TB稀疏文件

简短答案: 使用

bsdtar
或GNU
tar
(1.29或更高版本)来创建档案,并使用GNU
tar
(1.26或更高版本)来将它们提取到另一个盒子上。

长答案: 这项工作有一些要求。

首先,Linux必须至少为内核3.1(Ubuntu 12.04或更高版本可以使用),因此它支持

SEEK_HOLE
功能。

然后,您需要可以支持此syscall的tar实用程序。GNU

tar
自1.29版(于2016/05/16发布,自Ubuntu
18.04起默认存在)或
bsdtar
自3.0.4版(自Ubuntu 12.04起可用)提供支持
sudo apt-get installbsdtar

尽管

bsdtar
(使用
libarchive
)很棒,但是不幸的是,它在解压缩时不是很聪明-
它愚蠢地要求目标驱动器上的空闲空间至少等于未解压缩文件的大小,而不考虑漏洞。GNU
tar
将有效地解压缩此类稀疏档案,并且不会检查这种情况。

这是来自Ubuntu 12.10(Linux kernel 3.5)的日志:

$ dd if=/dev/zero of=1tb seek=1T bs=1 count=11+0 records in1+0 records out1 byte (1 B) copied, 0.000143113 s, 7.0 kB/s$ time bsdtar cvfz sparse.tar.gz 1tb a 1tbreal    0m0.362suser    0m0.336ssys 0m0.020s# Or, use gnu tar if version is later than 1.29:$ time tar cSvfz sparse-gnutar.tar.gz 1tb1tbreal    0m0.005suser    0m0.006ssys 0m0.000s$ ls -l-rw-rw-r-- 1 autouser autouser 1099511627777 Nov  7 01:43 1tb-rw-rw-r-- 1 autouser autouser257 Nov  7 01:43 sparse.tar.gz-rw-rw-r-- 1 autouser autouser134 Nov  7 01:43 sparse-gnutar.tar.gz$

就像我在上面说的那样,不幸的是,

bsdtar
除非拥有1TB的可用空间,否则使用松散是行不通的。但是,任何版本的GNU都
tar
可以解压缩,例如
sparse.tar

$ rm 1tb $ time tar -xvSf sparse.tar.gz 1tbreal    0m0.031suser    0m0.016ssys 0m0.016s$ ls -ltotal 8-rw-rw-r-- 1 autouser autouser 1099511627777 Nov  7 01:43 1tb-rw-rw-r-- 1 autouser autouser257 Nov  7 01:43 sparse.tar.gz


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4972981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存