打包 (Archiving): - 将多个文件和目录合并为一个文件(归档文件) - 不减少文件大小 - 保留原始文件权限、所有权、时间戳等元数据 - 主要目的:方便传输或备份多个文件作为一个整体
压缩 (Compression): - 通过算法减少文件大小 - 可以单独压缩一个文件或先打包再压缩 - 主要目的:节省存储空间和加快传输速度
工具 | 命令格式 | 特点 |
---|---|---|
tar | tar -cvf archive.tar files |
最常用的打包工具,通常与压缩结合使用 |
cpio | find . -print \| cpio -ov > archive.cpio |
较少使用,适合特殊场景 |
工具 | 命令格式 | 压缩率 | 速度 | 特点 |
---|---|---|---|---|
gzip | gzip file |
中等 | 快 | 最普遍,.gz 格式 |
bzip2 | bzip2 file |
较高 | 慢 | .bz2 格式,适合不常访问的数据 |
xz | xz file |
最高 | 最慢 | .xz 格式,极高压缩率 |
zip | zip archive.zip files |
中等 | 中等 | 跨平台,同时打包+压缩 |
Linux中最常见的做法是先打包再压缩:
# 打包并gzip压缩
tar -czvf archive.tar.gz /path/to/files
# 打包并bzip2压缩
tar -cjvf archive.tar.bz2 /path/to/files
# 打包并xz压缩
tar -cJvf archive.tar.xz /path/to/files
bash
tar -cvf etc_backup.tar /etc
bash
tar -cvf source_code.tar ./src/
bash
gzip large_file.log
bash
xz -9 database_backup.sql
bash
tar -czvf project-1.0.0.tar.gz project/
bash
tar -czpvf full_backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc --exclude=/mnt --exclude=/sys /
bash
tar -czvf logs-$(date +%Y-%m-%d).tar.gz /var/log/
多线程压缩:
pigz -c file > file.gz # gzip多线程替代
pbzip2 -c file > file.bz2 # bzip2多线程替代
排除特定文件:
tar -czvf backup.tar.gz --exclude='*.tmp' --exclude='cache/*' /data
分卷压缩:
tar -czvf - /big_data | split -b 2G - big_data.tar.gz.
查看压缩文件内容不解压:
tar -tzvf archive.tar.gz
理解打包和压缩的区别及适用场景,可以帮助您更高效地管理Linux系统中的文件存储和传输。