cd /var/www && tar -czf /backup/site.tar.gz mysite
tar -tzf /backup/site.tar.gz | head

还原时 tar 提示 Removing leading '/',解压后文件散落在根目录,原本的 /var/www 结构全乱了。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,打包时用了绝对路径,tar 默认会去掉开头的斜杠并在当前目录还原。在根目录执行解压,文件就铺到了系统盘。

这次卡住的地方就在「tar 绝对路径」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

处理上按这个顺序:打包时先 cd 到站点上级目录 用相对路径;解压前用 tar -tf 看一眼文件列表 确认路径前缀;还原到临时目录再整体移动 别直接解到根。

改完只确认一件事:解压后文件都在临时目录的 mysite 下,系统目录没有被写入。

作者 9823189