常用shell指令_文件压缩


1. gzip

gzip命令用于压缩文件,gzip命令对文本文件有60%~70%的压缩率,压缩率比较理想。

gzip只能压缩单个文件,不能压缩文件夹。故一般先用tar打包再压缩。

1.1. 参数说明:

  • -a或--ascii  使用ASCII文字模式。
  • -c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。
  • -d或--decompress或----uncompress  解开压缩文件。
  • -f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
  • -h或--help  在线帮助。
  • -l或--list  列出压缩文件的相关信息。
  • -L或--license  显示版本与版权信息。
  • -n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。
  • -N或--name  压缩文件时,保存原来的文件名称及时间戳记。
  • -q或--quiet  不显示警告信息。
  • -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
  • -S<压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串。
  • -t或--test  测试压缩文件是否正确无误。
  • -v或--verbose  显示指令执行过程。
  • -V或--version  显示版本信息。
  • -<压缩效率>  压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。
  • --best  此参数的效果和指定"-9"参数相同。
  • --fast  此参数的效果和指定"-1"参数相同。

1.2. 常用例子:

1.2.1. 压缩

gzip *	# 压缩当前目录下所有的文件,每个文件单独压缩成一个文件,压缩到文件夹时会报错退出,压缩完后源文件会删除。
gzip -c xxx.txt > xxx.gz	# 保留源文件压缩

1.2.2. 解压

gzip -d xxx.gz	# 压缩包会删除

1.2.3. 查看压缩信息

gzip -l xxx.gz

2. bzip2

bzip2命令是.bz2文件的压缩程序。这种压缩格式是所有压缩方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。

bzip2只能压缩单个文件,不能压缩文件夹。故一般先用tar打包再压缩。

2.1. 参数说明:

  • -c或--stdout  将压缩与解压缩的结果送到标准输出。
  • -d或--decompress  执行解压缩。
  • -f或--force  bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数。
  • -h或--help  显示帮助。
  • -k或--keep  bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。
  • -s或--small  降低程序执行时内存的使用量。
  • -t或--test  测试.bz2压缩文件的完整性。
  • -v或--verbose  压缩或解压缩文件时,显示详细的信息。
  • -z或--compress  强制执行压缩。
  • --repetitive-best  若文件中有重复出现的资料时,可利用此参数提高压缩效果。
  • --repetitive-fast  若文件中有重复出现的资料时,可利用此参数加快执行速度。

2.2. 常用例子:

2.2.1. 压缩

bzip2 *	# 压缩当前目录下所有的文件,每个文件单独压缩成一个文件,压缩到文件夹时会报错退出,压缩完后源文件会删除。

2.2.2. 解压

bzip2 -d xxx.bz2	# 压缩包会被删除,等价于bunzip2 xxx.bz2

3. tar

Tape archive,tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,它仅仅只是一个打包工具,并不负责压缩

3.1. 参数说明:

  • -A或--catenate 新增文件到已存在的备份文件。
  • -b<区块数目>或--blocking-factor=<区块数目> 设置每笔记录的区块数目,每个区块大小为12Bytes。
  • -B或--read-full-records 读取数据时重设区块大小。
  • -c或--create 建立新的备份文件。
  • -C<目的目录>或--directory=<目的目录> 切换到指定的目录。
  • -d或--diff或--compare 对比备份文件内和文件系统上的文件的差异。
  • -f<备份文件>或--file=<备份文件> 指定备份文件。
  • -F或--info-script= 每次更换磁带时,就执行指定的Script文件。
  • -r或--append 新增文件到已存在的备份文件的结尾部分。
  • -R或--block-number 列出每个信息在备份文件中的区块编号。
  • -s或--same-order 还原文件的顺序和备份文件内的存放顺序相同。
  • -S或--sparse 倘若一个文件内含大量的连续0字节,则将此文件存成稀疏文件。
  • -t或--list 列出备份文件的内容。
  • -T<范本文件>或--files-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让tar解开或建立符合设置条件的文件。
  • -u或--update 仅置换较备份文件内的文件更新的文件。
  • -U或--unlink-first 解开压缩文件还原文件之前,先解除文件的连接。
  • -v或--verbose 显示指令执行过程。
  • -V<卷册名称>或--label=<卷册名称> 建立使用指定的卷册名称的备份文件。
  • -w或--interactive 遭遇问题时先询问用户。
  • -W或--verify 写入备份文件后,确认文件正确无误。
  • -x或--extract或--get 从备份文件中还原文件。
  • -X<范本文件>或--exclude-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让ar排除符合设置条件的文件。
  • -z或--gzip或--ungzip 通过gzip指令处理备份文件。
  • -Z或--compress或--uncompress 通过compress指令处理备份文件。
  • -j或--bzip或--bungzip 通过bzip2指令处理备份文件。
  • --delete 从备份文件中删除指定的文件。

3.2. 常用例子:

3.2.1. 压缩

tar -cvf	xxx.tar xxx	# 把xxx文件夹下所有文件(夹)打包成xxx.tar,-c创建新副本,-v显示处理信息,-f要打包的文件
tar -czvf xxx.tar.gz xxx	# 把xxx文件夹下所有文件(夹)打包成.tar格式后调用gzip压缩成.gz格式,-z调用gzip命令
tar -cjvf xxx.tar.bz2 xxx # 把xxx文件(夹)下所有文件夹打包成.tar格式后调用gzip压缩成.bz2格式,-j调用bzip2命令

3.2.2. 新增压缩文件

tar -rvf xxx.tar yyy.txt	# 追加到文件末尾

3.2.3. 查看压缩信息

tar -tvf xxx.tar

3.2.4. 解压

tar -xvf xxx.tar
tar -xzvf xxx.tar.gz
tar -xjvf xxx.tar.bz2

4. zip

zip是个使用广泛的压缩程序,但因为不包含文档名编码信息,跨平台可能会乱码。

4.1. 参数说明:

  • -A 调整可执行的自动解压缩文件。
  • -b<工作目录> 指定暂时存放文件的目录。
  • -c 替每个被压缩的文件加上注释。
  • -d 从压缩文件内删除指定的文件。
  • -D 压缩文件内不建立目录名称。
  • -f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
  • -F 尝试修复已损坏的压缩文件。
  • -g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
  • -h 在线帮助。
  • -i<范本样式> 只压缩符合条件的文件。
  • -j 只保存文件名称及其内容,而不存放任何目录名称。
  • -J 删除压缩文件前面不必要的数据。
  • -k 使用MS-DOS兼容格式的文件名称。
  • -l 压缩文件时,把LF字符置换成LF+CR字符。
  • -ll 压缩文件时,把LF+CR字符置换成LF字符。
  • -L 显示版权信息。
  • -m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
  • -n<字尾字符串> 不压缩具有特定字尾字符串的文件。
  • -o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
  • -P 加密压缩
  • -q 不显示指令执行过程。
  • -r 递归处理,将指定目录下的所有文件和子目录一并处理。
  • -S 包含系统和隐藏文件。
  • -t<日期时间> 把压缩文件的日期设成指定的日期。
  • -T 检查备份文件内的每个文件是否正确无误。
  • -u 更换较新的文件到压缩文件内。
  • -v 显示指令执行过程或显示版本信息。
  • -V 保存VMS操作系统的文件属性。
  • -w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
  • -x<范本样式> 压缩时排除符合条件的文件。
  • -X 不保存额外的文件属性。
  • -y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
  • -z 替压缩文件加上注释。
  • -$ 保存第一个被压缩文件所在磁盘的卷册名称。
  • -<压缩效率> 压缩效率是一个介于1-9的数值。

4.2. 常用例子:

4.2.1. 压缩

zip xxx.zip xxx.txt	
zip -r xxx.zip xxx	# 压缩xxx文件夹内所有文件
zip xxx.zip xxx/*	# 不包括子文件夹和隐藏文件
zip -P password xxx.zip xxx.txt	# 加密压缩
zip -d xxx.zip xxx.txt	# 删除xxx.zip中的xxx.txt文件

5. unzip

unzip命令用于解压缩zip文件。

5.1. 参数说明:

  • -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
  • -f 更新现有的文件。
  • -l 显示压缩文件内所包含的文件。
  • -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
  • -t 检查压缩文件是否正确。
  • -u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
  • -v 执行是时显示详细的信息。
  • -z 仅显示压缩文件的备注文字。
  • -a 对文本文件进行必要的字符转换。
  • -b 不要对文本文件进行字符转换。
  • -C 压缩文件中的文件名称区分大小写。
  • -j 不处理压缩文件中原有的目录路径。
  • -L 将压缩文件中的全部文件名改为小写。
  • -M 将输出结果送到more程序处理。
  • -n 解压缩时不要覆盖原有的文件。
  • -o 不必先询问用户,unzip执行后覆盖原有文件。
  • -P<密码> 使用zip的密码选项。
  • -q 执行时不显示任何信息。
  • -s 将文件名中的空白字符转换为底线字符。
  • -V 保留VMS的文件版本信息。
  • -X 解压缩时同时回存文件原来的UID/GID。
  • [.zip文件] 指定.zip压缩文件。
  • [文件] 指定要处理.zip压缩文件中的哪些文件。
  • -d<目录> 指定文件解压缩后所要存储的目录。
  • -x<文件> 指定不要处理.zip压缩文件中的哪些文件。
  • -Z 等于执行zipinfo指令。

5.2. 常用例子:

5.2.1. 解压

unzip xxx.zip
unzip -d xxx xxx.zip	# 把xxx.zip解压到xxx目录下
unzip -P password xxx.zip	# 加密解压

5.2.2. 查看压缩信息

unzip -l xxx.zip
unzip -v xxx.zip	# 显示的信息比-l详细

评论
  目录