压缩和解压缩
压缩数据或者解压数据:
为什么要移出数据信息前面的 / 目录
-P --absolute-paths 不要从文件名中去除 '/'
1 compress和uncompress
格式
compress Options [file ...]
常用选项
- -d 解压缩,相当于uncompress
- -c 结果输出至标准输出,不删除原文件
- -v 显示详情
- uncompress fifile.Z 解压缩
- zcat fifile.Z 不显式解压缩的前提下查看文本文件内容
范例:
zcat file.Z >file
2 gzip和gunzip
格式:
gzip [OPTION]... FILE ...
常用选项:
- -d 解压缩,相当于gunzip
- -c 结果输出至标准输出,保留原文件不改变
- -# 指定压缩比,#取值为1-9,值越大压缩比越大
- gunzip fifile.gz 解压缩
- zcat fifile.gz 不显式解压缩的前提下查看文本文件内容
范例:
gzip -c messages >messages.gz
gzip -c -d messages.gz > messages
zcat messages.gz > messages
cat messages | gzip > m.gz
3. bzip2和bunzip2
格式:
bzip2 [OPTION]... FILE ...
常用选项
- -k keep, 保留原文件
- -d 解压缩
- -c 结果输出至标准输出,保留原文件不改变
- -# 1-9,压缩比,默认为9
- bunzip2 fifile.bz2 解压缩
- bzcat fifile.bz2 不显式解压缩的前提下查看文本文件内容
4 xz和unxz
格式
xz [OPTION]... FILE ...
常用选项
-
-k keep, 保留原文件
-
-d 解压缩
-
-c 结果输出至标准输出,保留原文件不改变
-
-# 压缩比,取值1-9,默认为6
unxz fifile.xz 解压缩
xzcat fifile.xz 不显式解压缩的前提下查看文本文件内容
5 zip和unzip
zip 可以实现打包目录并压缩
范例:
#打包并压缩
zip –r /backup/sysconfig.zip /etc/sysconfig/
#默认解压缩至当前目录
unzip /backup/sysconfig.zip
#解压缩至指定目录
unzip /backup/sysconfig.zip -d /tmp
cat /var/log/messages | zip messages -
unzip -p message.gz > message #-p 表示管道
打包和解包
1 tar
tar 即 Tape ARchive,磁带归档,经常用于备份
格式
tar [OPTION]...
(1) 创建归档,保留权限
tar -cpvf /PATH/FILE.tar FILE...
(2) 追加文件至归档: 注:不支持对压缩文件追加
tar -rf /PATH/FILE.tar FILE...
(3) 查看归档文件中的文件列表
tar -t -f /PATH/FILE.tar
(4) 展开归档
tar xf /PATH/FILE.tar
tar xf /PATH/FILE.tar -C /PATH/
(5) 结合压缩工具实现:归档并压缩
- -z 相当于gzip压缩工具
- -j 相当于bzip2压缩工具
- -J 相当于xz压缩工具
范例:
[root@naWang day21]# tar zcvf 1.txt.tar.gz 1.txt
1.txt
[root@naWang day21]# ll
总用量 8
-rw-r--r-- 1 root root 14 12月 9 20:05 1.txt
-rw-r--r-- 1 root root 121 12月 9 20:05 1.txt.tar.gz
[root@naWang day21]# tar jcvf 1.txt.tar.bz2 1.txt
1.txt
[root@naWang day21]# ll
总用量 12
-rw-r--r-- 1 root root 14 12月 9 20:05 1.txt
-rw-r--r-- 1 root root 125 12月 9 20:06 1.txt.tar.bz2
-rw-r--r-- 1 root root 125 12月 9 20:05 1.txt.tar.gz
[root@naWang day21]# tar Jcvf 1.txt.tar.xz 1.txt
1.txt
[root@naWang day21]# ll
总用量 16
-rw-r--r-- 1 root root 14 12月 9 20:05 1.txt
-rw-r--r-- 1 root root 125 12月 9 20:06 1.txt.tar.bz2
-rw-r--r-- 1 root root 125 12月 9 20:05 1.txt.tar.gz
-rw-r--r-- 1 root root 180 12月 9 20:09 1.txt.tar.xz
–exclude 排除文件
范例:
tar zcvf /root/a.tgz --exclude=/app/host1 --exclude=/app/host2 /app
-T 选项指定输入文件
-X 选项指定包含要排除的文件列表
范例:
tar zcvf mybackup.tar.gz -T /root/includefilelist -X /root/excludefilelist
2 split
split 命令可以分割一个文件为多个文件
范例:
#分割大的 tar 文件为多份小文件
split -b Size –d tar-file-name
prefix-name split -b 1M mybackup.tgz mybackup-parts
#切换成的多个小分文件使用数字后缀
split -b 1M –d mybackup.tgz mybackup-parts
将多个切割的小文件合并成一个大文件
cat mybackup-parts* > mybackup.tar.gz
3 cpio
cpio 是历史悠久的打包和解包工具,不过目前也已较少使用
cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结
尾的文件
格式:
cpio [选项] > 文件名或者设备名
cpio [选项] < 文件名或者设备名
常用选项
- -o output模式,打包,将标准输入传入的文件名打包后发送到标准输出
- -i input模式,解包,对标准输入传入的打包文件名解包到当前目录
- -t 预览,查看标准输入传入的打包文件中包含的文件列表
- -O fifilename 输出到指定的归档文件名
- -A 向已存在的归档文件中追加文件
- -I fifilename 对指定的归档文件名解压
- -F fifilename 使用指定的文件名替代标准输入或输出
- -d 解包生成目录,在cpio还原时,自动的建立目录
- -v 显示打包过程中的文件名称
范例:
#将etc目录备份:
find ./etc -print | cpio -ov > bak.cpio
#将/data内容追加bak.cpio
find /data | cpio -oA -F bak.cpio
#内容预览
cpio –tv < etc.cpio
#解包文件
cpio –idv < etc.cpio
追加压缩数据
一个压缩包生成之后,如何向这个压缩包中追加新的压缩数据
批量压缩
如何实现批量压缩不同的数据信息
eg:将/etc目录中以h开头的文件,进行压缩保存
find /etc/ -maxdepth 1 -type f -name "h*" |xargs tar -zcvf /backup/etc.tar.gz