最近又时常在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