最近又时常在Linux下打包东西,所以整理一下常用格式的打包/解压命令。
后续有其他格式就继续在这片文章里更新。
tar
1 | tar -cf data.tar dir1 dir1 file1 file2 # 将dir1 dir2 file1 file2 打包为 data.tar |
PS1:选项前面的-
也可以省略,如tar xf xx.tar
.
PS2:可以用v
查看详细信息或日志输出,如tar -xvf xx.tar
.
PS3: tar
包是包含了文件的用户权限信息的。
gz/gzip
1 | gzip file # 将file压缩为file.gz |
PS:gip/gunzip
默认都是在文件本身进行操作,所以要保留原始文件的话需要加上-k
参数。
tar.gz/tgz
tar.gz
是对tar
包用gzip
进行压缩,所以可以用两个命令进行操作,也可以用tar
的-z
参数直接操作:
1 | tar -czf data.tgz file1 file2 dir1 dir2 # 将file1 file2 dir1 dir2 打包为 data.tgz |
tar.xz
同样,tar.xz
是用xz
压缩 tar
包。一般很少见单独的xz
包。 xz
命令与 gzip
参数几乎一致:
1 | xz data.tar # 压缩为 data.tar.xz |
tar.xz
可以直接用tar
命令的 -J
参数直接处理:
1 | tar -cJf data.tar.xz dir1 dir2 file1 file2 |
PS:其实,tar.gz
、tar.xz
等格式,都可以用-a
参数让tar
命令自动检测:
1 | tar -xaf data.tar.xz |
rar
rar
包提供了rar
命令和 unrar
命令。可以这样安装它:
1 | yay -S rar # archlinux |
unrar
是rar
的子集,只包含了解压相关操作,所以一般可以只用rar
命令。
常规命令如下:
1 | rar a data.rar file1 # 将 file1 压缩为 data.rar |
添加密码及压缩分卷:
1 | 压缩 file1, 分卷大小为1M, 密码为 #123, |
压缩完成后,得到data.part01.rar
, data.part02.rar
等等。
注意:命令行特殊字符需要转义,例如上面的\#
.
解压可以指定任意分卷:
1 | rar x data.part02.rar |
解压时如果参数没有提供密码,会在命令行提示输入密码,并询问是否用于所有文件:
1 | rar x data.part01.rar |
PS:无法向分卷继续添加文件。
jar
以jar包形式运行服务时,常用jar
命令来查看、更新包内配置文件,甚至是类文件:
1 | jar -tf svc.jar # 列出jar包内容,可以用-v参数查看文件时间戳、大小等 |
同样,命令中的-
可以省略:jar xf svc.jar
.
需要注意的是,解压某一文件的时候,路径可以从jar tf svc.jar
的输出中得到,解压后,也会以相同的路径被存放。
更新时,也需要本地文件具有相同的目录结构。
以META-INF/MANIFEST.MF
为例。
- 执行
jar xf svc.jar META-INF/MANIFEST.MF
,得到./META-INF/MANIFEST.MF
- 执行
jar uf svc.jar META-INF/MANIFEST.MF
,会将./META-INF/MANIFEST.MF
更新到svc.jar
内的META-INF/MANIFEST.MF