一、tar 命令
1.打包与压缩
- -c 将多个文件或目录进行打包
- -v 显示打包文件的过程
- -f 文件名,指定打包的文件名
- -z 压缩和解压.tar.gz格式,通过gzip方式压缩和解压
- -j 压缩和解压缩.tar.bz2格式,通过bzip2方式压缩和解压
zxm@zxm-pc:~/test$ ls hello/
hello1.txt hello2.txt hello3.txt
zxm@zxm-pc:~/test$ tar -cvf hello.tar hello/
hello/
hello/hello3.txt
hello/hello1.txt
hello/hello2.txt
zxm@zxm-pc:~/test$ tar -zcvf hello.tar.gz hello/
hello/
hello/hello3.txt
hello/hello1.txt
hello/hello2.txt
zxm@zxm-pc:~/test$ tar -jcvf hello.tar.bz2 hello/
hello/
hello/hello3.txt
hello/hello1.txt
hello/hello2.txt
zxm@zxm-pc:~/test$ ls -lh
总用量 24K
drwxrwxr-x 2 zxm zxm 4.0K 5月 26 09:19 hello
-rw-rw-r-- 1 zxm zxm 10K 5月 26 09:20 hello.tar
-rw-rw-r-- 1 zxm zxm 177 5月 26 09:20 hello.tar.bz2
-rw-rw-r-- 1 zxm zxm 168 5月 26 09:20 hello.tar.gz
2.解打包和解压缩
- -x 对tar包做解打包操作
- -v 显示解打包的过程
- -f 文件名,指定要解压的文件名
- -z 压缩和解压缩.tar.gz格式
- -j 压缩和解压缩.tar.bz2格式
- -t 只查看包中有哪些文件或目录,不做解打包操作
- -C 目录名,指定解打包位置
zxm@zxm-pc:~/test$ ls
hello.tar hello.tar.bz2 hello.tar.gz
zxm@zxm-pc:~/test$ tar -xvf hello.tar
hello/
hello/hello3.txt
hello/hello1.txt
hello/hello2.txt
zxm@zxm-pc:~/test$ ls
hello hello.tar hello.tar.gz
zxm@zxm-pc:~/test$ rm -rf hello/
zxm@zxm-pc:~/test$ tar -zxvf hello.tar.gz
hello/
hello/hello3.txt
hello/hello1.txt
hello/hello2.txt
zxm@zxm-pc:~/test$ tar -zxvf hello.tar.gz
hello/
hello/hello3.txt
hello/hello1.txt
hello/hello2.txt
zxm@zxm-pc:~/test$ ls
hello hello.tar hello.tar.gz
zxm@zxm-pc:~/test$ rm -rf hello/
zxm@zxm-pc:~/test$ tar -jxvf hello.tar.bz2
hello/
hello/hello3.txt
hello/hello1.txt
hello/hello2.txt
解压到指定目录:
tar -xvf package.tar -C test/
3.查看包内容
- -t 列出归档内容
zxm@zxm-pc:~/test$ tar -tvf hello.tar.gz
drwxrwxr-x zxm/zxm 0 2023-05-26 09:19 hello/
-rw-rw-r-- zxm/zxm 0 2023-05-26 09:19 hello/hello3.txt
-rw-rw-r-- zxm/zxm 0 2023-05-26 09:19 hello/hello1.txt
-rw-rw-r-- zxm/zxm 0 2023-05-26 09:19 hello/hello2.txt
二、zip 与 unzip 命令
1.zip 命令
- -r 递归压缩目录,及将指定目录下的所有文件以及子目录全部压缩
- -m 将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中
- -v 显示详细的压缩过程信息
- -q 在压缩的时候不显示命令的执行过错
- -d 从压缩文件中删除指定文件
- -u 更新压缩文件,将新的文件或修改后的文件添加到ZIP存档中,若压缩后的文件,无该新文件,则追加压缩文件中,若有该新文件,则替换压缩文件中旧的文件
- -f 刷新压缩文件,若压缩文件有该新文件,则替换压缩文件中旧的文件,若无该文件,则不做操作
- -P 加密压缩
- -e 加密压缩,输入隐藏密码
zxm@zxm-pc:~/test$ ls hello/
hello1.txt hello2.txt hello3.txt
zxm@zxm-pc:~/test$ zip -rv hello.zip hello/
adding: hello/ (in=0) (out=0) (stored 0%)
adding: hello/hello3.txt (in=0) (out=0) (stored 0%)
adding: hello/hello1.txt (in=0) (out=0) (stored 0%)
adding: hello/hello2.txt (in=0) (out=0) (stored 0%)
total bytes=0, compressed=0 -> 0% savings
使用 -P 或 -e 指定密码
zxm@zxm-pc:~/test$ zip -rv -P1234 hello-p1.zip hello/
adding: hello/ (in=0) (out=0) (stored 0%)
adding: hello/hello3.txt (in=0) (out=0) (stored 0%)
adding: hello/hello1.txt (in=0) (out=0) (stored 0%)
adding: hello/hello2.txt (in=0) (out=0) (stored 0%)
total bytes=0, compressed=36 -> 0% savings
zxm@zxm-pc:~/test$ zip -rv -e hello-p2.zip hello/
Enter password:
Verify password:
adding: hello/ (in=0) (out=0) (stored 0%)
adding: hello/hello3.txt (in=0) (out=0) (stored 0%)
adding: hello/hello1.txt (in=0) (out=0) (stored 0%)
adding: hello/hello2.txt (in=0) (out=0) (stored 0%)
total bytes=0, compressed=36 -> 0% savings
zxm@zxm-pc:~/test$ ls -lh
总用量 8.0K
drwxrwxr-x 2 zxm zxm 4.0K 5月 26 09:19 hello
-rw-rw-r-- 1 zxm zxm 642 5月 26 09:28 hello.zip
-rw-rw-r-- 1 zxm zxm 726 5月 26 09:28 hello.zip
-rw-rw-r-- 1 zxm zxm 726 5月 26 09:28 hello.zip
使用 -u 往压缩文件中添加新文件,使用 -d 从压缩文件中删除指定文件
zxm@zxm-pc:~/test$ zip -u hello.zip hello2/hello4.txt
adding: hello2/hello4.txt (stored 0%)
zxm@zxm-pc:~/test$ zip -d hello.zip hello/hello1.txt
deleting: hello/hello1.txt
zxm@zxm-pc:~/test$ unzip -t hello.zip
Archive: hello.zip
testing: hello/ OK
testing: hello/hello3.txt OK
testing: hello/hello2.txt OK
testing: hello2/hello4.txt OK
No errors detected in compressed data of hello.zip.
2.unzip 命令
- -d 目录名,将压缩文件解压到指定目录下
- -n 解压时并不覆盖已经存在的文件
- -o 解压时覆盖已经存在的文件,并且无需用户确认
- -v 查看压缩文件的详细信息
- -t 测试压缩文件有无损坏,但并不解压
- -x 文件列表,解压文件,但不包含文件列表中指定的文件
zxm@zxm-pc:~/test$ ls
hello.zip
zxm@zxm-pc:~/test$ unzip -d zip hello.zip
Archive: hello.zip
creating: zip/hello/
extracting: zip/hello/hello3.txt
extracting: zip/hello/hello1.txt
extracting: zip/hello/hello2.txt
zxm@zxm-pc:~/test$ ls
hello.zip zip
zxm@zxm-pc:~/test$ ls zip/
hello
zxm@zxm-pc:~/test$ unzip hello.zip
Archive: hello.zip
creating: hello/
extracting: hello/hello3.txt
extracting: hello/hello1.txt
extracting: hello/hello2.txt
zxm@zxm-pc:~/test$ ls
hello hello.zip zip
3.unzip 查看包内容
zxm@zxm-pc:~/test$ unzip -l hello.zip
Archive: hello.zip
Length Date Time Name
--------- ---------- ----- ----
0 2023-05-26 09:19 hello/
0 2023-05-26 09:19 hello/hello3.txt
0 2023-05-26 09:19 hello/hello1.txt
0 2023-05-26 09:19 hello/hello2.txt
--------- -------
0 4 files
三、gzip 与 gunzip 命令
在 Linux 中,打包和压缩是分开处理的。而 gzip 命令只会压缩,不能打包
1.gzip 命令
- -c 将压缩数据输出到标准输出中,并保留源文件
- -d 对压缩文件进行解压缩
- -r 递归压缩指定目录下以及子目录下的所有文件
- -v 对于每个压缩和解压缩的文件,显示相应的文件名和压缩
- -l 对每一个压缩文件,显示以下字段:压缩文件的大小、未压缩文件的大小、压缩比、未压缩文件的名称
zxm@zxm-pc:~/test$ zip -rv hello.zip hello/
adding: hello/ (in=0) (out=0) (stored 0%)
adding: hello/hello3.txt (in=0) (out=0) (stored 0%)
adding: hello/hello1.txt (in=0) (out=0) (stored 0%)
adding: hello/hello2.txt (in=0) (out=0) (stored 0%)
total bytes=0, compressed=0 -> 0% savings
zxm@zxm-pc:~/test$ ls -lh
总用量 8.0K
drwxrwxr-x 2 zxm zxm 4.0K 5月 26 09:19 hello
-rw-rw-r-- 1 zxm zxm 642 5月 26 09:30 hello.zip
zxm@zxm-pc:~/test1$ gzip hello.zip
zxm@zxm-pc:~/test1$ ls -lh
总用量 8.0K
drwxrwxr-x 2 zxm zxm 4.0K 5月 26 09:19 hello
-rw-rw-r-- 1 zxm zxm 201 5月 26 09:31 hello.zip.gz
在使用 gzip 命令压缩文件时,源文件会消失,从而生成压缩文件
2.gunzip 命令
gunzip 是个使用广泛的解压缩程序,它用于解开被 gzip 压缩过的文件,这些压缩文件预设最后的扩展名为 .gz。事实上 gunzip 就是 gzip 的硬连接,因此不论是压缩或解压缩,都可通过 gzip 指令单独完成。
- -r:递归地解压缩指定目录下的所有文件
zxm@zxm-pc:~/test$ ls -lh
总用量 8.0K
drwxrwxr-x 2 zxm zxm 4.0K 5月 26 09:19 hello
-rw-rw-r-- 1 zxm zxm 201 5月 26 09:31 hello.zip.gz
zxm@zxm-pc:~/test$ gunzip hello.zip.gz
zxm@zxm-pc:~/test$ ls -lh
总用量 8.0K
drwxrwxr-x 2 zxm zxm 4.0K 5月 26 09:19 hello
-rw-rw-r-- 1 zxm zxm 642 5月 26 09:31 hello.zip