Linux文件压缩解压需根据格式选择命令:tar用于打包,配合gzip、bzip2、xz可生成.tar.gz、.tar.bz2、.tar.xz;zip适用于跨平台。压缩率xz>bzip2>gzip,速度反之;zip兼容性好。用–exclude可排除文件,split可分卷压缩,-v参数显示过程详情。
Linux下文件压缩与解压缩,其实就是把大文件变小,方便存储和传输。常用的命令组合不少,各有千秋,用对了能事半功倍。
解决方案
Linux上压缩解压,说白了就是那么几个主流格式:
.tar
,
.gz
,
.bz2
,
.xz
,
.zip
。对应的命令也围绕它们展开。
-
tar
命令:这玩意儿本身不压缩,它只是把一堆文件打包成一个“档案”文件,通常配合其他压缩工具一起用。
- 打包:
tar -cvf archive.tar directory/
(c: create, v: verbose, f: file)
- 解包:
tar -xvf archive.tar
(x: extract)
- 查看内容:
tar -tvf archive.tar
(t: list)
- 打包:
-
gzip
命令:用来压缩
.gz
文件。
- 压缩:
gzip filename
(会生成
filename.gz
,原文件会被替换)
- 解压缩:
gzip -d filename.gz
或者
gunzip filename.gz
- 压缩时保留原文件:
gzip -c filename > filename.gz
- 压缩:
-
bzip2
命令:压缩
.bz2
文件,压缩率比
gzip
高,但速度慢。
- 压缩:
bzip2 filename
(生成
filename.bz2
)
- 解压缩:
bzip2 -d filename.bz2
或者
bunzip2 filename.bz2
- 压缩:
-
xz
命令:压缩
.xz
文件,压缩率更高,但速度更慢,适合对压缩时间不敏感的场景。
- 压缩:
xz filename
(生成
filename.xz
)
- 解压缩:
xz -d filename.xz
或者
unxz filename.xz
- 压缩:
-
zip
和
unzip
命令:处理
.zip
文件,这个格式在 Windows 上也很常见,方便跨平台。
- 压缩:
zip archive.zip file1 file2 directory/
- 解压缩:
unzip archive.zip
- 压缩:
-
组合使用:
tar
经常和
gzip
,
bzip2
,
xz
组合使用。
-
tar -czvf archive.tar.gz directory/
(创建
.tar.gz
压缩包)
-
tar -xzvf archive.tar.gz
(解压
.tar.gz
压缩包)
-
tar -cjvf archive.tar.bz2 directory/
(创建
.tar.bz2
压缩包)
-
tar -xjvf archive.tar.bz2
(解压
.tar.bz2
压缩包)
-
tar -cJvf archive.tar.xz directory/
(创建
.tar.xz
压缩包)
-
tar -xJvf archive.tar.xz
(解压
.tar.xz
压缩包) 注意这里是大写的
J
-
如何选择合适的压缩命令?
其实没啥标准答案,看情况。如果追求速度,
gzip
快;如果追求压缩率,
bzip2
或
xz
好。如果需要跨平台,
zip
兼容性最好。
压缩时如何排除特定文件或目录?
tar
命令提供了
--exclude
选项,可以排除不需要压缩的文件或目录。例如:
tar -czvf archive.tar.gz directory/ --exclude=directory/exclude_me --exclude=directory/another_file
这样就会排除
directory/exclude_me
目录和
directory/another_file
文件。
如何分卷压缩大型文件?
有时候文件太大,需要分成多个小文件存储。可以使用
split
命令配合
tar
和压缩工具。
- 先用
tar
打包文件:
tar -cvf archive.tar directory/
- 然后用
split
分割:
split -b 100m archive.tar archive.tar.part.
(这里
-b 100m
表示每个分卷 100MB)
解压的时候,先合并分卷:
cat archive.tar.part.* > archive.tar
然后再解包:
tar -xvf archive.tar
压缩命令的
-v
-v
参数有什么用?
-v
参数是 “verbose” 的缩写,表示在压缩或解压缩过程中显示详细信息。加上
-v
可以看到正在处理的文件,方便了解进度和排查问题。