Plainnotes

tar 打包时排除目录的正确写法

2025-08-13 · 2 分钟工具

tar czf backup.tar.gz /data --exclude=/data/cache 打出来的包里还是有 cache。

--exclude 匹配的是 tar 内部记录的路径,通常不带开头的 /。写成 --exclude='data/cache' 或者 --exclude='*/cache' 才对。

几个细节:

  • 排除多个用多个 --exclude,不要用逗号。
  • 通配符要加引号,否则 shell 先展开,tar 收到的是文件名列表。
  • --exclude 的位置有影响:GNU tar 里写在要打包的路径之前更稳妥。
  • 备份前先 tar tzf 或者加 -v 看列表,确认排除生效。

另外,打包正在写入的数据库目录,即使排除对了也拿不到一致快照。数据库要用它自己的备份工具,tar 只适合静态文件。