直接用 tar -cJf 压缩源码最稳妥,但必须先处理路径、排除项和权限三件事:需切换父目录或用 -C 避免绝对路径污染;手动排除 .git 等目录时路径格式要准确;gzip 适合高频解压场景,xz 适合长期归档,且解压务必指定 -C 目标目录并预览校验。
直接用压缩源码最稳妥,但必须先处理路径、排除项和权限三件事,否则解压出来一堆嵌套目录或漏掉关键文件。
压缩前必须切换到父目录,避免绝对路径污染归档结构
比如项目在
,若直接运行
,解压后会生成
而非干净的
。这是因为 tar 把绝对路径当作了归档内路径前缀。
正确做法是先
,再运行
或者用
参数跳过 cd 步骤:
绝对路径打包必须加
(大写)才不被 strip,但风险高,不推荐用于源码备份
排除
、
等目录要写对路径格式
不读
,也不会自动跳过常见缓存目录。手动排除时,路径写错就完全失效。
排除
:用
,不是
或
排除
:确保它在当前打包路径下,命令中写
即可
多个排除项可叠加:
通配符有效但需引号:
可以,
会被 shell 提前展开导致匹配失败
选 gzip 还是 xz?看用途别只看压缩率
源码体积不大,但解压频率可能很高——比如 CI/CD 流水线反复拉取。盲目用 xz 会导致构建变慢,尤其在 CI 机器上 CPU 有限。
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
日常开发备份、CI 拉取、需要快速生成/恢复:
(
= gzip)
长期归档、发布包分发、空间敏感场景:
(
= xz)
想提速 xz 压缩:加
启用多核,或
降级压缩强度(默认 -6)
注意:旧系统可能没装
,
会报
,先检查
解压时务必指定
目标目录并验证内容
直接
解压到当前目录,极易污染环境——尤其当归档里含
或
时,可能覆盖当前工作区文件。
永远显式指定目标:
如果归档路径太深(如
),加
跳过前两层
解压前先看内容:
,确认路径结构符合预期
校验是否损坏:
,避免解压一半失败
最容易被忽略的是:
默认只打包不压缩,
出来的文件大小几乎等于源目录,很多人误以为“备份完成了”,其实只是归档,根本没省空间。真正起作用的是
或
参数。
tar -cJf/home/user/myapptar -cJf myapp.tar.xz /home/user/myapphome/user/myapp/myapp/cd /home/usertar -cJf myapp.tar.xz myapp/-Ctar -C /home/user -cJf myapp.tar.xz myapp/-P.gitnode_modulestar.gitignore.git--exclude=".git"--exclude=".git/"--exclude="/home/user/myapp/.git"node_modules--exclude="node_modules"tar -cJf myapp.tar.xz --exclude=".git" --exclude="node_modules" --exclude="dist/" myapp/--exclude="*.log"--exclude=*.logtar -czf myapp.tar.gz myapp/-ztar -cJf myapp.tar.xz myapp/-J--xz-options="-T0"--xz-options="-3"xztar -cJfcommand not foundxz --version-Ctar -xf myapp.tar.xzMakefilepackage.jsontar -xf myapp.tar.xz -C /tmp/myapp-restore/myapp-v2.1/src/main.c--strip-components=2tar -tJf myapp.tar.xz | head -n 5tar -tJf myapp.tar.xz >/dev/null && echo "OK"tartar -cf-z-J