tar 打包时排除目录的正确写法
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 只适合静态文件。