根据此页面,可以让tar创建“拆分”为100 Mb文件的tar存档:
tar -c -M --tape-length = 102400 --file = disk1.tar largefile.tgz
问题在于,在填充第一个文件后,此命令将要求您交互式地为下一个文件提供新的文件名。
有人知道跳过此交互式步骤的方法,让tar自动执行“拆分”吗?
根据此页面,可以让tar创建“拆分”为100 Mb文件的tar存档:
tar -c -M --tape-length = 102400 --file = disk1.tar largefile.tgz
问题在于,在填充第一个文件后,此命令将要求您交互式地为下一个文件提供新的文件名。
有人知道跳过此交互式步骤的方法,让tar自动执行“拆分”吗?
Answers:
看一下该--new-volume-script
选项,它使您可以使用其他机制或生成的文件名替换提示机制。((tar.info)Multi-Volume Archives
在tar
信息页面中。)问题split
是您需要将cat
各个部分放回去做任何事情,而多卷存档应该更灵活一些。
您可以为此使用split:
tar czpvf - /path/to/archive | split -d -b 100M - tardisk
这告诉tar将数据发送到stdout,然后从stdin拆分以进行选择-另外使用数字后缀(-d
),块大小(-b
)为100M并使用'tardisk'作为结果文件名的基础(tardisk00,tardisk01, tardisk02等)。
之后可以提取数据:
cat tardisk* | tar xzpvf -
-d
用于数字后缀,而不是前缀。
当然,最好的选择是使用该--new-volume-script
选项。
但是,如果您知道文件的大小(在这种情况下为largefile.tgz),则也可以执行以下操作:
tar -c -M -L 102400 --file=disk1.tar --file=disk2.tar --file=disk3.tar largefile.tgz
摘要:
-c = Create
-M = multi-volume
-L 102400 = 100MB files (disk1.tar, disk2.tar, disk3.tar ...)
(对于-L,请根据需要指定尽可能多的数目,以使tar文件的总和大于largefile.tgz)
如果您尝试tar
使用目录树结构