在Linux系统中,打包(archiving)和压缩(compression)是两个密切相关但本质不同的概念,理解它们的区别对于高效管理文件非常重要。
打包(Archiving): - 将多个文件和目录合并为一个单一文件(归档文件) - 不减少文件大小 - 保留文件权限、所有权、时间戳等元数据 - 主要目的是为了方便传输或备份多个文件
压缩(Compression): - 通过算法减少文件或数据流的大小 - 可以单独应用于单个文件或已打包的归档文件 - 目的是节省存储空间或减少传输时间
tar (tape archive)
tar -cvf archive_name.tar files_to_archive
-c
创建新归档-v
显示详细输出-f
指定归档文件名cpio
gzip
gzip filename
或 tar -zcvf archive.tar.gz files
bzip2
bzip2 filename
或 tar -jcvf archive.tar.bz2 files
xz
xz filename
或 tar -Jcvf archive.tar.xz files
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
# 仅打包不压缩
tar -cvf archive.tar /path/to/files
# 解压.tar.gz
tar -xzvf archive.tar.gz
# 解压.tar.bz2
tar -xjvf archive.tar.bz2
# 解压.tar.xz
tar -xJvf archive.tar.xz
# 仅解包不解压
tar -xvf archive.tar
工具 | 压缩速度 | 解压速度 | 压缩率 | 典型用途 |
---|---|---|---|---|
gzip | 快 | 快 | 中等 | 通用压缩 |
bzip2 | 慢 | 中等 | 高 | 需要高压缩率时 |
xz | 非常慢 | 慢 | 非常高 | 长期存储或网络传输 |
zip | 中等 | 快 | 中等 | 跨平台共享 |
排除特定文件:
tar -czvf archive.tar.gz --exclude='*.tmp' /path/to/files
增量备份:
# 首次完整备份
tar -g snapshot -czvf backup_full.tar.gz /data
# 后续增量备份
tar -g snapshot -czvf backup_incr.tar.gz /data
多卷压缩:
tar -czvf - /large/data | split -b 2G - backup_part.tar.gz.
查看压缩文件内容不解压:
tar -tzvf archive.tar.gz
理解打包和压缩的区别及各种工具的特点,可以帮助你根据具体场景选择最合适的文件处理方式,提高工作效率。