您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

复制1TB稀疏文件

复制1TB稀疏文件

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

这项工作有一些要求。

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

然后,您需要可以支持此syscall的tar实用程序。GNU tar@H_403_2@自1.29版(于2016/05/16发布,自Ubuntu 18.04起认存在)或bsdtar@H_403_2@自3.0.4版(自Ubuntu 12.04起可用)提供支持sudo apt-get install bsdtar@H_403_2@。

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

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

$ dd if=/dev/zero of=1tb seek=1T bs=1 count=1
1+0 records in
1+0 records out
1 byte (1 B) copied, 0.000143113 s, 7.0 kB/s

$ time bsdtar cvfz sparse.tar.gz 1tb 
a 1tb

real    0m0.362s
user    0m0.336s
sys 0m0.020s

# Or, use gnu tar if version is later than 1.29:
$ time tar cSvfz sparse-gnutar.tar.gz 1tb
1tb

real    0m0.005s
user    0m0.006s
sys 0m0.000s

$ ls -l
-rw-rw-r-- 1 autouser autouser 1099511627777 Nov  7 01:43 1tb
-rw-rw-r-- 1 autouser autouser           257 Nov  7 01:43 sparse.tar.gz
-rw-rw-r-- 1 autouser autouser           134 Nov  7 01:43 sparse-gnutar.tar.gz
$
@H_403_2@

就像我在上面说的那样,不幸的是,bsdtar@H_403_2@除非拥有1TB的可用空间,否则使用松散是行不通的。但是,任何版本的GNU都tar@H_403_2@可以解压缩,例如sparse.tar@H_403_2@:

$ rm 1tb 
$ time tar -xvSf sparse.tar.gz 
1tb

real    0m0.031s
user    0m0.016s
sys 0m0.016s
$ ls -l
total 8
-rw-rw-r-- 1 autouser autouser 1099511627777 Nov  7 01:43 1tb
-rw-rw-r-- 1 autouser autouser           257 Nov  7 01:43 sparse.tar.gz
@H_403_2@
其他 2022/1/1 18:13:36 有626人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶