备份压缩
一、7z
7-Zip
是一个免费的开源文件压缩和解压工具,支持多种压缩格式。它不仅有图形用户界面(GUI
),也有功能强大的命令行界面(CLI
)。以下是一些常见的命令行使用方法和参数。7z
需要先安装对应的包,安装如下:
-
Linux
:brew install p7zip
-
Macos
:brew install p7zip
1.1 压缩
7z a output input
: 压缩文件
7z a test.7z test.txt
7z a -pMyPassword output input
: 压缩并加密文件。如下所示:
7z a -p12345 test.7z test.txt
1.2 解压
7z x input -oOutputDir
: 解压文件。 如下所示:
7z x test.7z -o. // 解压到当前目录
7z x -pMyPassword input -oOutputDir
: 通过解压密码解压文件。如下所示:
7z x -p12345 test.7z -o. // 解压到当前目录
二、ar
三、lha
四、tar
Linux tar
(英文全拼:tape archive
)命令用于备份文件。tar
用于创建和解压归档文件的命令行工具,可以用来将多个文件和目录组合成一个单一的归档文件,也可以用来解压已经存在的归档文件。
语法
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]
-
-A
或--catenate
新增文件到已存在的备份文件。 -
-b<区块数目>
或--blocking-factor=<区块数目>
设置每笔记录的区块数目,每个区块大小为12Bytes。 -
-B
或--read-full-records
读取数据时重设区块大小。 -
-c
或--create
: 建立新的备份文件。 -
-C<目的目录>
或--directory=<目的目录>
切换到指定的目录。 -
-d
或--diff
或--compare
对比备份文件内和文件系统上的文件的差异。 -
-f<备份文件>
或--file=<备份文件>
指定备份文件。 -
-F<Script文件>
或--info-script=<Script文件>
每次更换磁带时,就执行指定的Script文件。 -
-g
或--listed-incremental
处理GNU格式的大量备份。 -
-G
或--incremental
处理旧的GNU格式的大量备份。 -
-h
或--dereference
不建立符号连接,直接复制该连接所指向的原始文件。 -
-i
或--ignore-zeros
忽略备份文件中的0 Byte区块,也就是EOF。 -
-k
或--keep-old-files
解开备份文件时,不覆盖已有的文件。 -
-K<文件>
或--starting-file=<文件>
从指定的文件开始还原。 -
-l
或--one-file-system
复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制。 -
-L<媒体容量>
或-tape-length=<媒体容量>
设置存放每体的容量,单位以1024 Bytes计算。 -
-m
或--modification-time
还原文件时,不变更文件的更改时间。 -
-M
或--multi-volume
在建立,还原备份文件或列出其中的内容时,采用多卷册模式。 -
-N<日期格式
>或--newer=<日期时间>
只将较指定日期更新的文件保存到备份文件里。 -
-o
或--old-archive
或--portability
将资料写入备份文件时使用V7格式。 -
-O
或--stdout
把从备份文件里还原的文件输出到标准输出设备。 -
-p
或--same-permissions
用原来的文件权限还原文件。 -
-P
或--absolute-names
文件名使用绝对名称,不移除文件名称前的"/"号。 -
-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指令处理备份文件。 -
-<设备编号><存储密度>
设置备份用的外围设备编号及存放数据的密度。 -
--after-date=<日期时间>
此参数的效果和指定"-N"参数相同。 -
--atime-preserve
不变更文件的存取时间。 -
--backup=<备份方式>或--backup
移除文件前先进行备份。 -
--checkpoint
读取备份文件时列出目录名称。 -
--concatenate
此参数的效果和指定"-A"参数相同。 -
--confirmation
此参数的效果和指定"-w"参数相同。 -
--delete
从备份文件中删除指定的文件。 -
--exclude=<范本样式>
排除符合范本样式的文件。 -
--group=<群组名称>
把加入设备文件中的文件的所属群组设成指定的群组。 -
--help
在线帮助。 -
--ignore-failed-read
忽略数据读取错误,不中断程序的执行。 -
--new-volume-script=<Script文件>
此参数的效果和指定"-F"参数相同。 -
--newer-mtime
只保存更改过的文件。 -
--no-recursion
不做递归处理,也就是指定目录下的所有文件及子目录不予处理。 -
--null
从null设备读取文件名称。 -
--numeric-owner
以用户识别码及群组识别码取代用户名称和群组名称。 -
**
--owner=<用户名称>
**把加入备份文件中的文件的拥有者设成指定的用户。 -
--posix
将数据写入备份文件时使用POSIX格式。 -
--preserve
此参数的效果和指定"-ps"参数相同。 -
--preserve-order
此参数的效果和指定"-A"参数相同。 -
--preserve-permissions
此参数的效果和指定"-p"参数相同。 -
--record-size=<区块数目>
此参数的效果和指定"-b"参数相同。 -
--recursive-unlink
解开压缩文件还原目录之前,先解除整个目录下所有文件的连接。 -
--remove-files
文件加入备份文件后,就将其删除。 -
--rsh-command=<执行指令>
设置要在远端主机上执行的指令,以取代rsh指令。 -
--same-owner
尝试以相同的文件拥有者还原文件。 -
--suffix=<备份字尾字符串>
移除文件前先行备份。 -
--totals
备份文件建立后,列出文件大小。 -
--use-compress-program=<执行指令>
通过指定的指令处理备份文件。 -
--version
显示版本信息。 -
--volno-file=<编号文件>
使用指定文件内的编号取代预设的卷册编号。
4.1 tar -xf input.tar
tar -xf input.tar
解压指定的归档文件
tar -xf test.tar
4.2 tar -xvf input.tar
tar -xvf input.tar
解压指定的归档文件,列出被解压的文件。如下所示:
tar -xvf test.tar
4.3 tar -xzf input.tar.gz
tar -xzf input.tar.gz
解压指定的归档文件
4.4 tar -xzvf input.tar.gz
tar -xzvf input.tar.gz
解压指定的归档文件,列出被解压的文件。如下所示:
4.5 tar -cf output.tar input1 input2 ……
tar -cvf output.tar input1 input2 ……
将文件 input1
、input2
等打包到一个名为 output.tar
的归档文件中。如下所示:
tar -cf test.tar test.txt test1.txt test2.txt
4.6 tar -cvf output.tar input1 input2 ……
tar -cvf output.tar input1 input2 ……
将文件 input1
、input2
等打包到一个名为 output.tar
的归档文件中,并列出被添加到归档中的文件。如下所示:
tar -cvf test.tar test.txt test1.txt test2.txt
4.7 tar -czf output.tar.gz input1 input2 ……
tar -czf output.tar.gz input1 input2 ……
将 input1
、input2
使用 gzip
压缩,生成名为 output.tar.gz
的归档文件。如下所示:
tar -czf test.tar.gz test.txt test1.txt test2.txt
4.8 tar -czvf output.tar.gz input1 input2 ……
tar -czvf output.tar.gz input1 input2 ……
将 input1
、input2
使用 gzip
压缩,生成名为 output.tar.gz
的归档文件,并列出被添加到归档中的文件。如下所示:
tar -czvf test.tar.gz test.txt test1.txt test2.txt
五、zip
zip
命令用于压缩文件。zip
是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip
。
语法
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
-
-A
调整可执行的自动解压缩文件。 -
-b<工作目录>
指定暂时存放文件的目录。 -
-c
替每个被压缩的文件加上注释。 -
-d
从压缩文件内删除指定的文件。 -
-D
压缩文件内不建立目录名称。 -
-f
更新现有的文件。 -
-F
尝试修复已损坏的压缩文件。 -
-g
将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。 -
-h
在线帮助。 -
-i<范本样式>
只压缩符合条件的文件。 -
-j
只保存文件名称及其内容,而不存放任何目录名称。 -
-J
删除压缩文件前面不必要的数据。 -
-k
使用MS-DOS兼容格式的文件名称。 -
-l
压缩文件时,把LF字符置换成LF+CR字符。 -
-ll
压缩文件时,把LF+CR字符置换成LF字符。 -
-L
显示版权信息。 -
-m
将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。 -
-n<字尾字符串>
不压缩具有特定字尾字符串的文件。 -
-o
以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。 -
-q
不显示指令执行过程。 -
-r
递归处理,将指定目录下的所有文件和子目录一并处理。 -
-S
包含系统和隐藏文件。 -
-t<日期时间>
把压缩文件的日期设成指定的日期。 -
-T
检查备份文件内的每个文件是否正确无误。 -
-u
与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。 -
-v
显示指令执行过程或显示版本信息。 -
-V
保存VMS操作系统的文件属性。 -
-w
在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。 -
-x<范本样式>
压缩时排除符合条件的文件。 -
-X
不保存额外的文件属性。 -
-y
直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。 -
-z
替压缩文件加上注释。 -
-$
保存第一个被压缩文件所在磁盘的卷册名称。 -
-<压缩效率>
压缩效率是一个介于1-9的数值。
5.1 zip output input
zip output input
压缩文件
5.2 zip -r output input
zip -r output input
递归压缩文件
5.3 zip -m output input
zip -m output input
将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。 如下所示
zip -m test.zip test.txt
将当前目录下的 test.txt
文件压缩成 test.zip
,并删除 test.txt
5.4 zip -P password output input
zip -P password output input
将文件压缩并加入压缩文件,并加密。如下所示:
zip -P 12345 test.zip test.txt
六、cpio
七、dump
八、gzip
九、bzip2
十、gzexe
十一、unarj
十二、unzip
unzip
命令用于解压缩zip
文件。unzip
为.zip
压缩文件的解压缩程序。
语法
unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
-
-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 unzip
-Z等于执行zipinfo指令。
12.1 unzip input
unzip input
将文件解压至当前目录
unzip test.zip -d 指定目录
12.2 unzip input -d output
12.3 unzip -P password input -d 指定目录
unzip -P password input -d 指定目录
将加密压缩文件解压至指定目录。如下所示:
unzip -P 12345 test.zip -d .