压缩工具使用指南

前言

Windows上安装WinRAR

Linux发行版通常自带tar、zip、unzip等命令。

如果有跨平台的需求,建议使用zip格式。


WinRAR

图形界面

层叠的上下文菜单

顾名思义,就是将多个与压缩有关的菜单项,合并成一个具有二级菜单的菜单项。

右键菜单默认压缩为zip格式

文件名增加时间后缀

掩码:_yyyymmddhhmmss

按照WinRAR帮助文件(WinRAR.chm)的介绍,M会根据位置自动判断显示月份还是分钟。

命令行语法

1
"C:/Program Files/WinRAR/WinRAR.exe" a -k -afzip -ag file_.zip "file.txt"

命令行语法

WinRAR <命令> -<参数1> -<参数N> <压缩文件 > <文件…> <@列表文件…> <解压路径>

命令 X - 以完整路径名称从压缩文件解压压缩

以完整路径解压文件和文件夹。保存在压缩文件中的文件夹架构,将会完整的还原恢复。此命令行等同于 压缩文件管理 命令 解压
类似的方法有 命令 e,此命令可以解压文件到当前文件夹或者指定的文件夹。
例如,命令:
WinRAR x Fonts *.ttf
会从压缩文件解压 *.ttf 字体文件到当前文件夹,但下面命令:
WinRAR x Fonts *.ttf NewFonts\
会从压缩文件解压 *.ttf 字体文件到文件夹 NewFonts
在上面的例子,您必须使用附加的倒斜线来表示目标文件夹。

命令 A - 添加文件到压缩文件

添加指定的文件和文件夹到压缩文件中。此命令行等同于 添加。
注意: 因为分卷压缩文件修改是禁用的,此命令无法应用来更新分卷压缩文件,只用于创建时。
例子:

  1. 从当前文件夹添加全部 *.hlp 文件到压缩文件 help.rar 中
    WinRAR a help *.hlp
  2. 从当前文件夹和子文件夹压缩全部文件成为 362000 字节大小、固实的、分卷自解压文件 save.part1.exe,save.part2.rar,save.part3.rar 等,并在每一个分卷中添加恢复记录
    WinRAR a -r -v362 -s -sfx -rr save
    因为未指定文件名,全部文件 (*) 将会被添加。
  3. 作为一个特别的例外,如果目录名被作为参数指定并且目录名不包含文件掩码和以反斜线结尾,即使没有指定 参数 -r ,目录和子目录的所有内容都会被添加到压缩文件中。
    下面的命令将会把文件夹 Bitmaps 中全部的文件添加到 RAR 压缩文件 Pictures 中:
    WinRAR a Pictures.rar Bitmaps
  4. 如果文件夹名包含文件掩码或以反斜线结尾,应用普通规则,您需要指定 参数 -r 处理它的子文件夹。
    下面的命令将会把文件夹 Bitmaps 中除了子文件夹外全部的文件添加,因为没有指定参数 -r:
    WinRAR a Pictures.rar Bitmaps\*

参数 -K - 锁定压缩文件

WinRAR 无法修改锁定的归档,因此锁定重要的归档可以防止 WinRAR 意外修改它们。如果 WinRAR 命令分组处理归档,这种保护可能特别有用。
该参数不旨在或不能阻止其他工具或第三方有意进行修改。它仅针对 WinRAR 引起的意外数据变更实行安全措施。

参数 -AF<类型> - 指定压缩文件格式

这个参数在 WinRAR 命令行中允许定义新压缩文件类型 <类型> 参数可以是rar zip

参数 -AG[格式] - 以当前日期与时间生成压缩文件名

当创建或处理压缩文件时,以格式“YYYYMMDDHHMMSS”附加当前日期字符串,这对于每日更新是有用的。
附加字符串是由“格式”参数所定义,或者如果不存在时,则使用“ YYYYMMDDHHMMSS”。

tar

tar手册

GNU tar creates and manipulates archives which are actually collections of many other files; the program provides users with an organized and systematic method for controlling a large amount of data. The name “tar” originally came from the phrase “Tape ARchive”, but archives need not (and these days, typically do not) reside on tapes.

命令行语法

archive

Long Short Description
--create -c Create a new tar archive
--list -t List the contents of an archive
--extract -x Extract one or more members from an archive
--file=archive-name -f archive-name Specify the name of an archive file
--verbose -v Show the files being worked on as tar is running

compress

Long Short Archive format
--gzip -z gzip
--bzip2 -j bzip2
--xz -J xz
--lzip lzip
--lzma lzma
--lzop lzop
--zstd zstd
--compress -Z compress

常用压缩格式对比

格式 后缀名 时间 空间 使用场景
gzip .gz 较快 较大 内网传输,节省时间
bzip2 .bz2 较慢 较小 公网传输,节省流量

示例

bzip2

1
2
3
4
5
6
7
8
## 打包并压缩(bzip2)三个文件
tar -cvjf afiles.tar.bz2 apple angst aspic

## 打包并压缩(bzip2)当前目录所有文件
tar -cvjf afiles.tar.bz2 *

## 解压(bzip2)到当前目录
tar -xvjf afiles.tar.bz2

gzip

1
2
3
4
5
6
7
8
## 打包并压缩(gzip)三个文件
tar -cvzf afiles.tar.gz apple angst aspic

## 打包并压缩(gzip)当前目录所有文件
tar -cvzf afiles.tar.gz *

## 解压(gzip)到当前目录
tar -xvzf afiles.tar.gz

打包脚本

某一个目录里的文件需要频繁打包,可以写一个脚本处理(archive.sh)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh

file="archive.tar.bz2"

if [ -f "$file" ]; then
echo "remove $file"
rm -f "$file"
fi

echo "archive $file start"
echo "please wait..."
tar -cjf $file *
echo "archive $file end"

zip & unzip

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## 把folder目录整体压缩为afolder.zip
zip -r afolder.zip folder

## 把afolder.zip解压到folder目录
unzip afolder.zip -d folder

## 把a文件夹和b.txt压缩为ab.zip
zip -r ab.zip a b.txt

## 把ab.zip解压到当前目录
unzip ab.zip

## 把当前目录的所有文件压缩为aball.zip
zip -r aball.zip *

## 把符合通配符的zip文件(abc.zip, ab1.zip)解压到当前目录
unzip ab\*.zip

## 查看ab.zip的内容
unzip -v ab.zip

## 验证ab.zip是否完整
unzip -t ab.zip

后记

工具人的自我修养