命令使用: tar 主选项 + 辅选项 压缩后文件名 要压缩的文件
-c 建立压缩文件(常用)
-x 解压(常用)
-t 查看压缩文件(常用)
-r 向压缩文件末尾追加文件
-u 更新一个压缩包中的文件
上述五个参数是主选项, 是互斥的(只能出现其中的一个), 所有的归档操作都需要用到其中的一个, 可以和辅选项连用:
-z 使用 gzip 压缩
-j 使用 bz2 压缩
-J 使用 xz 压缩
-Z 使用 compress 压缩(compress, 已被 bzip 代替)
-v 显示过程
-w 每压缩一个文件都需要确认(不常用)
-O 解开到标准输出 STDOUT(不常用)
-f 指定压缩包名, 切记! 这个参数最后出现, 后面接压缩包名, 也是必选参数
# tar -cf all.tar *.jpg
这条命令是将所有. jpg 的文件打成一个名为 all.tar 的包.-c 是表示产生新的包,-f 指定包的文件名.
# tar -rf all.tar *.gif
这条命令是将所有. gif 的文件增加到 all.tar 的包里面去.-r 是表示增加文件的意思.
# tar -uf all.tar logo.gif
这条命令是更新原来 tar 包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思.
# tar -tf all.tar
这条命令是列出 all.tar 包中所有文件,-t 是列出文件的意思
# tar -xf all.tar
这条命令是解出 all.tar 包中所有文件,-t 是解开的意思, 如果需要解压到特定目录加 - C 参数, tar -xf all.tar -C dirname
3 种压缩方式:
压缩方式 | 参数 | 特性 |
gzip | z | .gz 早期的压缩方式,压缩性能小,但是快 |
bzip2 | j | .bz2 中期的压缩方式,压缩能力中 |
xz | J | .xz 现在常用的压缩方式,压缩能力强,速度慢 |
PS: 使用什么方式压缩, 解压时也必须使用此方式!
- # tar -czvf /mnt/etc.tar.gz /etc
- // 对 / etc 文件夹使用 gzip 方式进行压缩, 压缩后存放为 / mnt/etc.tar.gz
- # tar -cjvf /mnt/etc.tar.bz2 /etc
- // 对 / etc 文件夹使用 bzip2 方式进行压缩, 压缩后存放为 / mnt/etc.tar.bz2
- # tar -cJvf /mnt/etcz.tar.xz /etc
- // 对 / etc 文件夹使用 xz 方式进行压缩, 压缩后存放为 / mnt/etcz.tar.xc
- # tar -xzvf /mnt/etc.tar.gz -C /liu
- // 对 / mnt/etc.tar.gz 进行解压, 如果想指定解压后的文件存放位置, 需要 - C 参数来指定
- # tar -xjvf /mnt/etc.tar.bz2 -C /liu
- // 对 / mnt/etc.tar.bz2 进行解压, 如果想指定解压后的文件存放位置, 需要 - C 参数来指定
- # tar -xJvf /mnt/etcz.tar.xz -C /liu
- // 对 / mnt/etcz.tar.xz 进行解压, 如果想指定解压后的文件存放位置, 需要 - C 参数来指定
简单的说一下打包 (打包文件, 归档文件) 和压缩 (压缩文件, 压缩包文件, 压缩包), 打包是把一堆文件或一个目录(文件夹) 合成一个文件, 压缩是把一个文件通过某种算法将其占用容量变小.
tar 是打包命令, gzip 等是压缩命令.
tar -cf file file1 file2 file3 把三个文件打包成一个文件 file
tar -cf file dir 把 dir 目录打包成一个文件 file
tar -xf file 解压打包文件
tar -czf file file1 file2 file3 把三个文件先打包成一个文件, 然后调用 gzip 压缩
tar -xzf file 解压经过 gzip 压缩的打包文件
gzip 压缩程序:(gzip -h 显示帮助)
gzip s1 把 s1 文件使用 gzip 方式压缩(s1.gz), 并替换原文件(s1)
gzip -c s1> s1.gz 把 s1 文件压缩, 并另存为 s1.gz
gzip -d s1.gz 把 s1.gz 解压, 并替换原文件
gzip -dc s1.gz> s1 把 s1.gz 解压, 并另存为 s1
gzip -v s1 显示压缩过程
gzip -t s1.gz 检查压缩文件的完整性
gzip -l s1.gz 显示压缩文件 s1 的压缩后大小 未压缩大小 压缩比 未压缩前的名字
gzip -5 -c s1> s1.gz 以压缩比 5(-num 可选值为 1~9,1 是最快压缩, 等价于 --fast,9 是最高压缩, 等价于 --best)将 s1 文件压缩并另存为 s1.gz
zcat 压缩包名, 不解压在 STDOUT 显示压缩文件的内容
PS: 出现 gzip:unknown suffix --ignored, 说明欲解压的文件未带 gz 后缀.(使用 mv 重命名即可解决或 gzip -d -c 未带 gz 后缀的压缩文件>解压后的名字)
bzip2 压缩程序:(bzip2 -h 显示帮助)
bzip2 s1 把 s1 使用 bzip2 方式压缩(s1.bz2), 并替换原文件(s1)
bzip2 -k s1 同上, 但是保留原文件
bzip2 -c s1> s1.bz2 同上
bzip2 -t s1.bz2 测试压缩包完整性
bzip -kv s1 压缩时显示执行过程, 需要更详细的过程, 指定两次该参数, bzip -kvv s1
bzip -d s1.bz2 解压缩, 并替换原文件
bzip -dk s1.bz2 同上, 但是保留原文件
bzip -dc s1.bz2>s1 同上
bzip -5 -k s1(-num 同 gzip)
PS:bzip -k -c s1>s1_stdout.bz2, 这时 - k 参数失效, 只会出现 s1_stdout.bz2 压缩包
出现 bzip2:can't guess original name for XXX -- using XXX.out, 意思是解压时提供的压缩包没有 bz2 后缀, bzip2 程序尝试以 bzip2 解压, 并把解压出的文件添上 out 后缀
bzcat 与 zcat 作用一样
xz 压缩程序:(xz -h 显示帮助)
类似 bzip2.
UNIX-like 的软件都遵循这个标准: 一个工具只做一件事情, 所以在 Linux 上打包和压缩是两个独立的概念, 上述讲到的压缩程序 gzip bzip2 xz 都只能压缩一个文件, 不能压缩目录, 要压缩目录需要先通过 tar 程序打包.
来源: http://www.bubuko.com/infodetail-3021542.html