tar压缩和解压缩
如何持久地记住tar命令选项?- cfv: create file verbosely.
- xfv: extract files verbosely.
打包命令
记忆关键词: create an archived file verbosely from source。这句英文与下文的命令格式一一对应:
- an archived file: 指一个被创建的包文件。
- source: 指一个源目录或文件。
$ tar cfv <一个被创建的tar包文件的路径> <一个或多个源目录或文件的路径>
$ tar cfv data1.tar ./data1
./data1/
./data1/file2.txt
./data1/file1.txt
./data1/file3.txt
压缩命令
记忆关键词: create a compressed file verbosely from source。这句英文与下文的命令格式一一对应:
- a compressed file: 一个被创建的压缩文件。
- source: 一个源目录或文件。
$ tar czfv <一个被创建的tar.gz压缩文件的路径> <一个或多个源目录或文件的路径>
$ tar cjfv <一个被创建的tar.bz2压缩文件的路径> <一个或多个源目录或文件的路径>
$ tar czfv data2.tar.gz ./data2
./data2/
./data2/file2.txt
./data2/file1.txt
./data2/file3.txt
$ tar cjfv data3.tar.bz2 ./data3
./data3/
./data3/file2.txt
./data3/file1.txt
./data3/file3.txt
# 一次将多个目录压缩进一个包里
$ tar czfv abc.tar.gz data1 data2 data3
data1/
data1/file2.txt
data1/file1.txt
data1/file3.txt
data2/
data2/file2.txt
data2/file1.txt
data2/file3.txt
data3/
data3/file2.txt
data3/file1.txt
data3/file3.txt
解压缩命令
记忆关键词: extract from a compressed file to a specified directory。这句英文与下文的命令格式一一对应:
- a compressed file: 一个压缩文件。
- a specified directory: 被解压缩到一个指定的目录。若不指定,则默认是当前目录。
将一个压缩文件解压缩到当前目录
- tar xfv <一个tar包文件的路径>
- tar xzfv <一个tar.gz压缩文件的路径>
- tar xjfv <一个tar.bz2压缩文件的路径>
将一个压缩文件解压缩到一个指定的目录
- tar xfv <一个tar包文件的路径> -C <被解包到一个指定目录>
- tar xzfv <一个tar.gz压缩文件的路径> -C <被解压到一个指定目录>
- tar xjfv <一个tar.bz2压缩文件的路径> -C <被解压到一个指定目录>
# 将data1.tar解包到./uncompressed/目录
$ tar xfv data1.tar -C ./uncompressed/
# 将data2.tar.gz解压缩到./uncompressed/目录
$ tar xzfv data2.tar.gz -C ./uncompressed/
# 将data3.tar.bz2解压缩到./uncompressed/目录
$ tar xjfv data3.tar.bz2 -C ./uncompressed/
查看包里包含哪些目录或文件
$ tar tf <一个tar包文件的路径>
$ tar tzf <一个tar.gz压缩文件的路径>
$ tar tjf <一个tar.bz2压缩文件的路径>
$ tar tf data1.tar
./data1/
./data1/file2.txt
./data1/file1.txt
./data1/file3.txt
$ tar tzf data2.tar.gz
./data2/
./data2/file2.txt
./data2/file1.txt
./data2/file3.txt
$ tar tjf data3.tar.bz2
./data3/
./data3/file2.txt
./data3/file1.txt
./data3/file3.txt
压缩命令
$ zip -r <被创建的zip文件的路径> <一个或多个目录或文件的路径>
# 将一个目录压缩进一个包里
$ zip -r data4.zip ./data4
adding: data4/ (stored 0%)
adding: data4/file2.txt (stored 0%)
adding: data4/file1.txt (stored 0%)
adding: data4/file3.txt (stored 0%)
# 将多个目录压缩进一个包里
$ zip -r data22.zip data2 data3
adding: data2/ (stored 0%)
adding: data2/file2.txt (stored 0%)
adding: data2/file1.txt (stored 0%)
adding: data2/file3.txt (stored 0%)
adding: data3/ (stored 0%)
adding: data3/file2.txt (stored 0%)
adding: data3/file1.txt (stored 0%)
adding: data3/file3.txt (stored 0%)
解压缩命令
# 将一个zip文件解压到当前目录
$ unzip <一个zip文件的路径>
# 将一个zip文件解压缩到一个指定的目录
$ unzip <一个zip文件的路径> -d <被解压缩一个指定目录的路径>
# 解压时,覆盖掉(overwrite)已存在的文件
$ unzip -o <一个zip文件的路径>
# 解压时,不覆盖掉(not overwrite)已存在的文件,保留已存在的文件
$ unzip -n <一个zip文件的路径>
# 解压时,不包含某些目录或文件
$ unzip <一个zip文件的路径> -x <被排除的目录或文件>
查看一个压缩包里包含哪些目录或文件
$ unzip -l <一个zip文件的路径>
$ unzip -l ../data4.zip
Archive: ../data4.zip
Length Date Time Name
--------- ---------- ----- ----
0 2022-04-11 21:02 data4/
0 2022-04-11 21:02 data4/file2.txt
0 2022-04-11 21:02 data4/file1.txt
0 2022-04-11 21:02 data4/file3.txt
--------- -------
0 4 files
# 创建tar.xz文件
$ tar cJfv <一个tar.xz文件的路径> <一个或多个源目录或文件的路径>
# 将tar.xz文件解压缩到当前目录或一个指定的目录
$ tar xJfv <一个tar.xz文件的路径>
$ tar xJfv <一个tar.xz文件的路径> -C <被解压缩到一个指定的目录>
# 查看tar.xz压缩文件里包含哪些目录或文件
$ tar tf <一个tar.xz文件的路径>