1. 压缩的基本概念
1.1 为什么需要压缩
- 减少文件占用的磁盘空间
- 降低网络传输时间
- 便于数据归档和备份
1.2 Linux常见压缩文件扩展名
| 扩展名 | 对应压缩程序 | 说明 |
|---|---|---|
*.Z |
compress | 已不流行,gzip可替代 |
*.zip |
zip | Windows常见压缩格式 |
*.gz |
gzip | GNU压缩,速度快,最常见 |
*.bz2 |
bzip2 | 压缩率比gzip好 |
*.xz |
xz | 压缩率最高,但速度较慢 |
*.tar |
tar | 仅打包未压缩 |
*.tar.gz |
tar + gzip | 打包后用gzip压缩 |
*.tar.bz2 |
tar + bzip2 | 打包后用bzip2压缩 |
*.tar.xz |
tar + xz | 打包后用xz压缩 |
2. 单一文件压缩命令
2.1 gzip 命令
命令格式: gzip [-cdtv#] 文件名
常用选项:
| 选项 | 作用 |
|---|---|
-c |
将输出送到屏幕,可重定向到自定义文件 |
-d |
解压缩 |
-t |
检查压缩文件的一致性 |
-v |
显示压缩比信息 |
-# |
压缩等级,1-9,1最快压缩率最低,9最慢压缩率最高,默认6 |
使用示例:
1 | gzip -v file.txt # 压缩,生成file.txt.gz,原文件消失 |
查看压缩文件内容:
1 | zcat file.txt.gz # 直接查看压缩文件内容 |
2.2 bzip2 命令
命令格式: bzip2 [-cdkzv#] 文件名
常用选项:
| 选项 | 作用 |
|---|---|
-c |
将输出送到屏幕 |
-d |
解压缩 |
-k |
保留原文件(不删除) |
-z |
压缩(默认) |
-v |
显示压缩比 |
-# |
压缩等级,1-9 |
使用示例:
1 | bzip2 -v file.txt # 压缩,生成file.txt.bz2 |
查看压缩文件内容:
1 | bzcat file.txt.bz2 # 直接查看 |
2.3 xz 命令
命令格式: xz [-dtlkc#] 文件名
常用选项:
| 选项 | 作用 |
|---|---|
-d |
解压缩 |
-t |
测试压缩文件完整性 |
-l |
列出压缩文件信息 |
-k |
保留原文件 |
-c |
输出到屏幕 |
-# |
压缩等级,1-9 |
使用示例:
1 | xz -v file.txt # 压缩,生成file.txt.xz |
查看压缩文件内容:
1 | xzcat file.txt.xz # 直接查看 |
3. 打包命令:tar
3.1 tar 的核心概念
tar 是”tape archive”的缩写,它的特点是:
- 只打包不压缩:单纯的 tar 仅将多个文件打包成一个文件
- 配合压缩:通过选项调用 gzip/bzip2/xz 进行压缩
- 保留属性:可以保留文件的权限、所有者、时间戳等属性
3.2 tar 命令格式
命令格式: tar [-z|-j|-J] [cxt] [v] -f 打包文件名 待打包文件...
3.3 tar 常用选项
压缩方式选项(三选一):
| 选项 | 说明 | 对应扩展名 |
|---|---|---|
-z |
通过 gzip 进行压缩/解压缩 | *.tar.gz |
-j |
通过 bzip2 进行压缩/解压缩 | *.tar.bz2 |
-J |
通过 xz 进行压缩/解压缩 | *.tar.xz |
操作选项(三选一):
| 选项 | 说明 |
|---|---|
-c |
创建打包文件(压缩) |
-t |
查看打包文件内容 |
-x |
解包或解压缩 |
辅助选项:
| 选项 | 说明 |
|---|---|
-v |
显示正在处理的文件名 |
-f |
指定文件名(必须接在选项最后) |
-C |
解压缩到指定目录 |
-p |
保留原文件的权限和属性 |
-P |
保留绝对路径(谨慎使用) |
--exclude=FILE |
排除指定的文件 |
--newer-mtime |
只备份比指定时间新的文件 |
3.4 tar 压缩示例
打包与压缩:
1 | # 使用gzip压缩 |
查看压缩包内容:
1 | tar -ztvf backup.tar.gz # 查看gzip压缩包内容 |
3.5 tar 解压缩示例
1 | # 解压到当前目录 |
3.6 tar 特殊用法
使用管道配合其他命令:
1 | # 通过网络传输(发送端) |
4. XFS 文件系统备份与还原
4.1 xfsdump - XFS 备份
命令格式: xfsdump [-L S_label] [-M M_label] [-l level] [-f 备份文件] 待备份路径
常用选项:
| 选项 | 说明 |
|---|---|
-L |
指定文件系统的Label(Session Label) |
-M |
指定储存媒体的Label(Media Label) |
-l |
指定备份等级(0完整备份,1-9增量备份) |
-f |
指定备份文件 |
-I |
查看备份信息 |
使用示例:
1 | # 完整备份 |
4.2 xfsrestore - XFS 还原
命令格式: xfsrestore [-f 备份文件] 还原路径
使用示例:
1 | # 完全还原 |
5. 光盘写入工具
5.1 mkisofs - 创建ISO映像文件
命令格式: mkisofs [-o 映像文件] [-J] [-R] [-V 卷标] 源目录
常用选项:
| 选项 | 说明 |
|---|---|
-o |
指定输出的映像文件名 |
-J |
生成Joliet格式(Windows兼容) |
-R |
生成Rock Ridge格式(Linux权限保留) |
-V |
指定卷标 |
-v |
显示详细信息 |
使用示例:
1 | # 创建数据光盘映像 |
5.2 cdrecord - 刻录光盘
命令格式: cdrecord -v dev=设备名 映像文件
6. 其他备份工具
6.1 dd - 磁盘/分区备份
命令格式: dd if=源文件 of=目标文件 bs=块大小 count=块数
使用示例:
1 | # 备份整个硬盘到文件 |
6.2 cpio - 备份工具
命令格式: 通常与 find 配合使用
使用示例:
1 | # 备份 |
7. 重点命令速查
| 命令 | 用途 | 常用示例 |
|---|---|---|
gzip |
gzip压缩 | gzip file |
gunzip |
gzip解压 | gunzip file.gz |
zcat |
查看gz文件 | zcat file.gz |
bzip2 |
bzip2压缩 | bzip2 -k file |
bunzip2 |
bzip2解压 | bunzip2 file.bz2 |
bzcat |
查看bz2文件 | bzcat file.bz2 |
xz |
xz压缩 | xz -k file |
unxz |
xz解压 | unxz file.xz |
xzcat |
查看xz文件 | xzcat file.xz |
tar |
打包/解包 | tar -zcvf backup.tar.gz /etc |
xfsdump |
XFS备份 | xfsdump -l 0 -f backup /data |
xfsrestore |
XFS还原 | xfsrestore -f backup /data |
dd |
磁盘备份 | dd if=/dev/sda of=backup.img |
mkisofs |
创建ISO | mkisofs -o backup.iso /data |
cpio |
备份工具 | find . | cpio -ocvB > backup.cpio |
8. 核心要点
压缩三剑客对比:
- gzip:速度最快,压缩率一般,适合日常使用
- bzip2:速度中等,压缩率较好,适合需要节省空间
- xz:速度最慢,压缩率最高,适合长期归档
tar 命令记忆法:
tar -zcvf:压缩(create + verbose + file)tar -ztvf:查看(list + verbose + file)tar -zxvf:解压(extract + verbose + file)
备份建议:
- 重要数据定期完整备份 + 增量备份
- 使用
-p选项保留文件权限和属性 - 备份前用
-t选项确认压缩包内容 - 用
--exclude排除临时文件和缓存目录