Home | Syndication | Delicious | Douban | Twitter

Archive for May, 2005

multi-volume archive

May 12th, 2005

当需要对比较大的目录进行打包时,我们经常会遇到的一个问题就是单个文件的体积过大,这时就需要多卷打包。应该有很多种方法可以实现,我目前只找到了两种。

Scenario:
假定我需要将一个体积比较大的目录(比如7G) /home/appdata 下的所有资料打包备份到 /backup ,受限于文件系统,单个文件最大只能为2G。

方法一,tar

# cd /home/appdata
# tar --verbose --create --multi-volume --tape-length=2048000 --file=/backup/appdata-1.tar --file=/backup/appdata-2.tar --file=/backup/appdata-3.tar --file=/backup/appdata-4.tar appdata

运行成功后,可以看到在/backup下生成了四个tar包文件。

注意几点:
1,使用tar多卷打包时不可以压缩,即,不能使用 --gzip, --bzip2 等选项。
2,使用 --file 来指定存放目标时可以多指定,比如,在本例子中,可以继续指定 --file=/backup/appdata-5.tar ,当所有文件被打包后,多于指定的存放目标会被安全地忽略。
3,选项 --tape-length 用来指定每个tar包的大小,其单位为KB

方法二,rar

# cd /home/appdata
# rar a -v2048000k /backup/appdata.rar appdata

运行成功后,可以看到在/backup下生成了三个rar文件,文件名是自动生成的,依次为:appdata.part01.rar, appdata.part02.rar, appdata.part03.rar

注意几点:
1,每个包名为自动生成,自动加上了partxx来标识包顺序
2,因为rar打包同时进行了压缩,所以其体积比较小
3,使用 -v 来指定单个包的大小时必须指明单位,比如在本例中我指定的单位是k,即KB

相应的解包指令:

# tar --extract --multi-volume --file=/backup/appdata-1.tar --file=/backup/appdata-2.tar --file=/backup/appdata-3.tar --file=/backup/appdata-4.tar
或者
# tar xMffff /backup/appdata-1.tar /backup/appdata-2.tar /backup/appdata-3.tar /backup/appdata-4.tar

# rar x /backup/appdata.part01.rar