Linux-备份压缩
参考文献
Linux的备份压缩
- 最早的Linux备份介质是磁带,使用的命令是
tar
; - 可以打包的磁带文件进行压缩存储,压缩命令是
gzip
和bzip2
; - 经常使用的扩展名是:
.tar.gz
,.tar.bz2
,.tgz
常见的压缩后缀
*.Z
compress 程序压缩的档案;*.bz2
bzip2 程序压缩的档案;*.gz
gzip 程序压缩的档案;*.tar
tar 程序打包的数据,并没有压缩过;*.tar.gz
tar 程序打包的档案,其中并且经过 gzip 的压缩
tar
格式
-
注意tar是打包,不是压缩
1
Format: tar [primary option + secondary option] file or directory
- Primary options(主要选项): they cannot be present at the same time, telling tar what to do is mandatory
-c
:创建一个新的备份文件,相当于打包-x
: 从备份文件中释放文件,相当于解压-t
: 列出备份文件的内容
- Secondary options(次要选项): Optional
-C
: 切换到指定目录-z
: 是否也具有gzip
的特性?也就是需要用gzip
压缩或者解压吗?通常的格式是gz
或xx.tgz
-j
: 是否也具有bzip2
的特性?即是否需要使用bzip2
进行压缩或解压缩?通常格式为bz2
-v
: 显示压缩过程中的文件-f
: 指定压缩文件,注意文件名应紧跟在f(你自己的)后面,不要添加其他参数。-p
: 使用原始文件的原始属性-exclude FILE
: 压缩过程中不打包FILE
- Primary options(主要选项): they cannot be present at the same time, telling tar what to do is mandatory
1 | tar (选项) (参数) |
1 | # 拼接多个tar文件 |
1 | tar格式(该格式仅仅打包,不压缩) |
压缩
1 | # 仅打包,不压缩! |
解压
1 | tar -xvf file or directory name |
tar.gz
格式
-
方式一: 利用前面已经打包好的tar文件,直接用压缩命令。
- 压缩:
gzip [原文件名].tar
- 解压:
gunzip[原文件名].tar.gz
- 压缩:
-
方式二: 一次性打包并压缩、解压并解包
- 打包并压缩:
tar -zcvf [目标文件名].tar.gz [原文件名/目录名]
- 解压并解包:
tar -zxvf [原文件名].tar.gz
- 注: z代表用
gzip
算法来压缩/解压。
- 打包并压缩:
tar.bz2
格式
- 方式一: 利用已经打包好的tar文件,直接执行压缩命令:
- 压缩:
bzip2 [原文件名].tar
- 解压:
bunzip2 [原文件名].tar.bz2
- 压缩:
- 方式二: 一次性打包并压缩、解压并解包
- 打包并压缩:
tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名]
- 解压并解包:
tar -jxvf [原文件名].tar.bz2
- 注: 小写j代表用
bzip2
算法来压缩/解压。
- 打包并压缩:
tar.xz
格式
- 方式一: 利用已经打包好的tar文件,直接用压缩命令:
- 压缩:
xz [原文件名].tar
- 解压:
unxz [原文件名].tar.xz
- 压缩:
- 方式二: 一次性打包并压缩、解压并解包
- 打包并压缩:
tar -Jcvf [目标文件名].tar.xz [原文件名/目录名]
- 解压并解包:
tar -Jxvf [原文件名].tar.xz
- 注: 大写J代表用
xz
算法来压缩/解压。
- 打包并压缩:
tar.Z
格式
- 压缩:
tar Zcvf filename.tar.Z dirname
- 解压:
tar Zxvf filename.tar.Z
zip
格式
1 | zip格式 |
-
快速预览压缩包文件
1
2
3$ zipinfo archive_name.zip
# 或者也可以用
$ unzip -l archive_name.zip
解压多个文件
-
假设当前目录下有多个zip文件
data.zip data2.zip data3.zip data3.zip
-
直接
unzip *.zip
等价于unzip data.zip data2.zip data3.zip data3.zip
会报错1
2
3
4Archive: data.zip
caution: filename not matched: invoices.zip
caution: filename not matched: pictures.zip
caution: filename not matched: visit.zip -
因为会认为后面三个zip文件是在第一个zip文件里面的,因此需要
unzip '*.zip'
或者unzip "*.zip"
或者unzip \*.zip
或者for z in *.zip; do unzip $z; done
-
jar
格式
- 压缩:
jar -cvf [目标文件名].jar [原文件名/目录名]
- 解压:
jar -xvf [原文件名].jar
7z
格式
- 压缩:
7z a [目标文件名].7z [原文件名/目录名]
- 解压:
7z x [原文件名].7z
- 注: 这个
7z
解压命令支持rar
格式,即:7z x [原文件名].rar
.Z
格式
- 压缩:
compress FileName
- 解压:
uncompress FileName.Z
.rar
格式
-
.rar是Windows中最常见的压缩文件格式,在Linux中需要安装rarlinux才能使用,官方: http://www.rarsoft.com/download.htm
1
2
3wget http://www.rarsoft.com/rar/rarlinux-x64-5.4.0.tar.gz
cd rar
make && make install -
压缩:
rar a filename.rar dirname
-
解压:
rar x filename.rar
分卷压缩
-
举例: 将10G大小的log文件2017.log打包压缩并分割成多个100m的文件
1
2
3
4
5
6
7
8# 分卷压缩gz
tar zcf - 2017.log |split -d -b 100m - logs.tar.gz.
# ↑ ↑
# 生成文件: logs.tar.gz.00 logs.tar.gz.01
# 分卷压缩bz2
tar jcf - 2017.log |split -d -b 100m - logs.tar.bz2.
# ↑ ↑
# 生成文件: logs.tar.bz2.00 logs.tar.bz2.01- 那两个
-
不要漏了,那是tar
的ouput
和split
的input
的参数
- 那两个
-
合并分卷解压缩
1
2
3
4
5
6# 解压gz分卷
cat logs.tar.gz* | tar zx
# 显示进度
cat logs.tar.gz* | pv | tar zx
# 解压bz2分卷
cat logs.tar.gz* | tar jx
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HoleLin's Blog!