Tar:如何忽略存档本身

Svi*_*ish 9 backup unix tar

我打算快速备份我的网站。所以我尝试在我的 webroot 中运行以下命令:

tar cvfz backup.tar.gz .
Run Code Online (Sandbox Code Playgroud)

这似乎在一段时间内运行良好。直到我发现它已经开始备份backup.tar.gz......

有一个简单的办法,我可以把它忽略我归档文件

注意:如果可以的话,我当然会把存档文件放在它上面的目录中。但我只能访问我的主目录。

Ahe*_*Ahe 8

尝试

tar cvfz backup.tar.gz *
Run Code Online (Sandbox Code Playgroud)

通过这种方式,shell 扩展了 *, 与 tar 读取当前目录。不同之处在于生成的存档不包含根文件夹。

如果您还需要包含隐藏文件(.files),您可以尝试

tar cvfz backup.tar.gz * .??*
Run Code Online (Sandbox Code Playgroud)

这包括 .files 并防止包含父目录。

  • .??*当然有问题,不包括.a等,但是写起来比.[^.]*快,而且一个点一个字符的文件很少见。 (2认同)

Ale*_*kin 6

b=backup.tar.gz; tar --exclude=$b -zcf $b .

  • 对这里发生的事情以及您的答案与已经提供的其他答案有何不同的一点解释将大大改善这个答案。 (2认同)