gpt4 book ai didi

unix - 使用 tar 时排除目录

转载 作者:行者123 更新时间:2023-12-02 21:38:37 26 4
gpt4 key购买 nike

我使用以下命令创建 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com