tar 打包解包参数速查与实例
发布时间:2026-02-02 20:22       
更新时间:2026-02-03 11:29
tar 的参数看着杂,一句口诀能兜住大半:创建 czvf,解压 xzvf,f 永远紧贴文件名。v 是 verbose,看进度,脚本里常用安静模式,去掉它即可。记住这句,日常打包就不必翻手册。
后缀与压缩格式
z 是 gzip,通用性最好;j 是 bzip2,如今用得少;J 是 xz,压缩率最高,适合大文件归档追求体积。打包:tar -czvf web.tar.gz /var/www/html;解压:tar -xzvf web.tar.gz -C /tmp,C 指定落点目录。只想看包里有什么而不解压,把 x 换成 t:tar -tzvf web.tar.gz。
四个实用细节
排除文件:--exclude='.git' --exclude='node_modules',可以叠加多个,写在打包命令里;排得多了读起来费劲,挪到 -X 排除清单文件里更清爽。
保留权限:tar 默认记录权限,root 解压会还原属主和执行位,普通用户解压则归自己。部署包解完权限怪异,多半是执行用户不对。tar 也认 --atime-preserve 这类时间保护选项,备份源数据时有用。
分卷:tar -czf - data | split -b 500m - data.tar.gz. 把输出流交给 split 切成 500M 一段;还原时 cat data.tar.gz.* | tar -xzf - 接回来。分卷包在移动硬盘与网盘之间倒手也方便,五百兆一段刚好卡在多数单文件体积限制之下。
增量归档:tar -czf incr.tar.gz --newer-mtime='2026-10-01' data,只收这个时间之后变动过的文件,周期性归档用得上。
绝对路径的处理
打包绝对路径时 tar 会去掉开头的斜杠,并提示 Removing leading `/'。这是防呆设计,避免解压时直接覆盖系统目录;想解回原位置,用 -C / 配合。要知道解包是覆盖式操作,同名文件直接被替换且没有回收站,往生产目录解包前先 tzvf 确认清单,是落地前的重要一道确认。
一个排错习惯
解压前先 tzvf 看一眼结构。有些包打包时多套了一层目录,直接解会散一地文件;看清顶层路径,再决定要不要 -C。打包前 du -sh 估一下体积,磁盘不够时提前换目标盘,别压到一半才报 No space left on device。大包传完先 md5sum 两边比对,一致再解压;解压报 unexpected end of file,先怀疑传输不完整,再怀疑包本身。