不同后缀压缩包的打包与加压命令
-
.tar
- 解包:
tar xvf FileName.tar
- 打包:
tar cvf FileName.tar DirName
- 解包:
-
.gz
- 解压1:
gunzip FileName.gz
- 解压2:
gzip -d FileName.gz
- 压缩:
gzip FileName
- 解压1:
-
.tar.gz
和.tgz
- 解压:
tar zxvf FileName.tar.gz
- 压缩:
tar zcvf FileName.tar.gz DirName
- 解压:
-
.bz2
- 解压1:
bzip2 -d FileName.bz2
- 解压2:
bunzip2 FileName.bz2
- 压缩:
bzip2 -z FileName
- 解压1:
-
.tar.bz2
- 解压:
tar jxvf FileName.tar.bz2
- 压缩:
tar jcvf FileName.tar.bz2 DirName
- 解压:
-
.bz
- 解压1:
bzip2 -d FileName.bz
- 解压2:
bunzip2 FileName.bz
- 压缩:未知
- 解压1:
-
.tar.bz
- 解压:
tar jxvf FileName.tar.bz
- 压缩:未知
- 解压:
-
.Z
- 解压:
uncompress FileName.Z
- 压缩:
compress FileName
- 解压:
-
.tar.Z
- 解压:
tar Zxvf FileName.tar.Z
- 压缩:
tar Zcvf FileName.tar.Z DirName
- 解压:
-
.zip
- 解压:
unzip FileName.zip
- 压缩:
zip FileName.zip DirName
- 解压:
-
.rar
- 解压:
rar x FileName.rar
- 压缩:
rar a FileName.rar DirName
- 解压:
-
.lha
- 解压:
lha -e FileName.lha
- 压缩:
lha -a FileName.lha FileName
- 解压:
-
.rpm
- 解包:
rpm2cpio FileName.rpm | cpio -div
- 解包:
-
.deb
- 解包:
ar p FileName.deb data.tar.gz | tar zxf -
- 解包:
-
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
- 解压:
sEx x FileName.*
- 压缩:
sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
- 解压:
tar 命令详解
- -c: 建立压缩档案
- -x:解压
- -t:查看内容
- -r:向压缩归档文件末尾追加文件
- -u:更新原压缩包中的文件
以上五个是独立的命令参数,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.
下面的参数是根据需要在压缩或解压档案时可选的。
- -z:有gzip属性的 .tar.gz
- -j:有bz2属性的 .tar.bz2
- -J :有xz属性的 .tar.xz
- -Z:有compress属性的 .tar.Z
- -O:将文件解开到标准输出
实例
- 查看usrdata.tar.gz包的内容
tar tf usrdata.tar.gz
- 解压出usrdata.tar.gz包的conf目录
tar xvf usrdata.tar.gz conf
- 解压或压缩进度展示
- 官方文档
- github中相关脚 https://github.com/callinglove/programming_examples/tree/master/script/shell/tools
# file to decompress, directory function tar_decompress() { local total_size=51200 local tar_file=$1 local tar_dir=./ if [[ $# -eq 2 ]]; then tar_dir=$2 fi if [[ "${tar_file}" == *.tar.gz ]]; then total_size=$(gzip -l "${tar_file}" | tail -1 | awk '{print $2}') elif [[ "${tar_file}" == *.tar.xz ]]; then total_size=$(xz --robot -l "${tar_file}" | tail -1 | awk '{print $5}') fi local blocking_factor=$((total_size/512/100+1)) local checkpoint=1 tar --blocking-factor=$blocking_factor --checkpoint=1 --checkpoint-action="ttyout=unpack ${tar_file##*/} %u% \r" -xpf $tar_file -C $tar_dir echo "decompress ${tar_file##*/} complete" } # tar file name, file list to compress function tar_compress() { local tar_file=$1 shift local file_to_tar="$@" local total_size=$(du -sb ${file_to_tar} | awk '{sum+=$1} END {print sum}') local blocking_factor=$((total_size/512/100+1)) tar -zcpf ${tar_file} ${file_to_tar} --blocking-factor=${blocking_factor} --checkpoint=1 --checkpoint-action="ttyout=pack ${tar_file##*/} %u% \r" --totals }
gzip 命令详解
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
语法:gzip [选项] 压缩(解压缩)的文件名该命令的各选项含义如下:
-c 将输出写到标准输出上,并保留原有文件。-d 将压缩文件解压。-l 对每个压缩文件,显示下列字段: 压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。-t 测试,检查压缩文件是否完整。-v 对每一个压缩和解压的文件,显示文件名和压缩比。-num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),-9 或–best表示最慢压缩方法(高压缩比)。系统缺省值为 6。指令实例:
gzip *% 把当前目录下的每个文件压缩成 .gz 文件。gzip -dv *% 把当前目录下每个压缩的文件解压,并列出详细的信息。gzip -l *% 详细显示例1中每个压缩的文件的信息,并不解压。gzip usr.tar% 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。