Linux文件归档与打包技巧
归档(Archive)是将多个文件或目录合并为一个单一文件的操作,核心作用是整合零散文件、保留文件权限与属性(如用户/组、修改时间),便于备份、迁移或分发;压缩(Compression)是通过算法(如gzip、bzip2)减少文件体积的操作,核心作用是节省存储空间、加快传输速度。实际使用中,两者常结合使用(先归档再压缩),例如将目录打包为.tar文件后,再用gzip压缩为.tar.gz文件。
Linux下文件归档与压缩的常用工具组合如下:
.tar文件(不压缩),也可结合gzip、bzip2、xz等工具实现“边归档边压缩”;.tar.gz(或.tgz)文件,适合日常备份;.tar.bz2文件,适合对体积敏感的场景;.tar.xz文件,适合长期存储;.zip文件,适合需要跨系统传输的场景。tar是Linux归档的核心工具,常用选项及示例如下:
tar -cvf archive.tar file1 file2 dir1(-c创建归档,-v显示详细过程,-f指定归档文件名);tar -tvf archive.tar(-t列出归档中的文件列表);tar -xvf archive.tar(-x解压归档,默认解压到当前目录);tar -xvf archive.tar -C /target/dir(-C指定解压目标目录);tar -rvf archive.tar newfile.txt(-r追加文件到归档末尾)。tar可通过管道或内置选项结合压缩工具,实现“打包+压缩”一步完成:
tar -czvf archive.tar.gz dir1/(-z调用gzip压缩,适合日常备份,压缩速度快);tar -cjvf archive.tar.bz2 dir1/(-j调用bzip2压缩,压缩率更高,适合长期存储);tar -cJvf archive.tar.xz dir1/(-J调用xz压缩,压缩率最高,适合大文件或长期归档);tar -xzvf archive.tar.gz(解压gzip格式)、tar -xjvf archive.tar.bz2(解压bzip2格式)、tar -xJvf archive.tar.xz(解压xz格式)。--exclude选项跳过不需要归档的文件,例如tar -czvf backup.tar.gz /home/user --exclude='*.log' --exclude='tmp/'(排除所有.log文件和tmp目录);-P选项保留文件的绝对路径(默认是相对路径),例如tar -cvf archive.tar -P /etc/(将/etc/目录完整打包);.tar文件,例如tar -cvf - /path/to/dir | gzip > dir.tar.gz(直接生成.tar.gz文件);tar -tvf archive.tar.gz(查看.tar.gz内容)、tar -tvf archive.tar.bz2(查看.tar.bz2内容);tar -W选项校验归档文件的完整性(部分系统支持),例如tar -Wvf archive.tar(检查.tar文件是否有损坏)。若需要将文件传输到Windows系统,建议使用zip格式(跨平台兼容):
zip -r archive.zip dir1/(-r递归处理目录,包含子目录及文件);unzip archive.zip(解压到当前目录);unzip archive.zip -d /target/dir(-d指定解压目标目录)。