unix - 使用 tar 时排除目录

标签 unix tar

我使用以下命令创建 tar.gz

tar -pczf domain.com.tar.gz  /var/www/domain.com/public_html/www/ 

tar.gz 文件包含以下文件夹

var-->www-->domain.com-->public_html-->www-->then the content of www

我希望 tar.gz 文件仅包含 www 的内容没有任何文件夹。我尝试使用 -C但我明白了

Cowardly refusing to create an empty archive error

tar -pczf domain.com.tar.gz -C  /var/www/domain.com/public_html/www/ 

编辑 1 我添加了.但随后exclude不再工作,所有文件的文件名中都有一个 ./

存档中的文件名变为 .\file.txt

tar -pczf domain.com.tar.gz -C  /var/www/domain.com/public_html/www/ . --exclude='/var/www/domain.com/public_html/www/tmp/*'

真实例子

tar --exclude='tmp/cookies/*' --exclude='tmp/logs/*' -pczf filterbypass.me.tar.gz -C /var/www/filterbypass.me/public_html/www .

我希望 tar,gz 仅包含 www 中的文件,而不是文件夹 + 文件名中不包含 ./

最佳答案

在阅读了不同版本的所有这些好答案并为自己解决了问题之后,我认为有一些非常重要的小细节,并且对于 GNU/Linux 的一般用途来说很少见,压力还不够,值得更多评论。

因此,我不会尝试回答每种情况的问题,而是尝试注册当事情不起作用时在哪里查找

注意这一点非常重要:

  1. 选项的顺序很重要:将 --exclude 放在要备份的文件选项和目录之前与之后是不一样的。这至少对我来说是出乎意料的,因为根据我的经验,在 GNU/Linux 命令中,通常选项的顺序并不重要。
  2. 不同的 tar 版本需要以不同的顺序使用此选项:例如,@Andrew's answer表示在 GNU tar v 1.26 和 1.28 中排除项排在最后,而在我的例子中,对于 GNU tar 1.29,则相反。
  3. 尾部斜杠很重要:至少在 GNU tar 1.29 中,不应该有任何斜杠

就我而言,对于 Debian Stretch 上的 GNU tar 1.29,有效的命令是

tar --exclude="/home/user/.config/chromium" --exclude="/home/user/.cache" -cf file.tar  /dir1/ /home/ /dir3/

引号并不重要,有或没有它们都有效。

我希望这对某人有用。

关于unix - 使用 tar 时排除目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20841727/

相关文章:

linux - Debian Jessie (proxmox) tar 备份

c++ - 是否导出共享库中类的构造函数?

linux - 如何从 shell 脚本捕获 hbase shell 的输出

linux - 仅具有读取权限从 unix/linux 服务器复制文件的一小部分

java - 如何在 Java 中将文件追加到 .tar 存档中?

python - flask send_file 不适用于 tar.gz 文件

linux - 长时间运行的进程远程终止?

c++ - 如何持续监控消息队列?

ubuntu - 用 tar 压缩,tar : Exiting with failure status due to previous errors

linux - 如何防止长时间运行的备份作业被杀死