如何tar目录然后删除包括该目录的原件?

Modified on: Mon, 19 Nov 2018 20:40:03 +0800

我正在尝试tar一个名为“my_directory”的目录中的文件集合,并使用以下命令删除原件:

tar -cvf files.tar my_directory --remove-files

但是它只删除目录中的单个文件而不是目录本身(这是我在命令中指定的)。我在这里错过了什么?

修改强>

是的,我认为'remove-files'选项是相当文字的。虽然我也发现手册页不清楚。 (在linux中,我倾向于在目录和文件之间没有太多区别,并且有时会忘记它们不是同一个东西)。看起来共识是它不会删除目录。

然而,我提出这个问题的主要提示点源于焦油对绝对路径的处理。因为必须指定要压缩的文件的相对路径,所以必须更改为父目录以正确地对其进行tar。正如我所看到的那样使用任何后续的“rm”命令在这种情况下具有潜在的危险性。因此,我希望通过使tar本身进行删除来简化事情。

例如,假设一个备份脚本,其中备份目录(即tar)作为shell变量包含在内。如果输入的shell变量值很糟糕,那么结果可能会从您最后遇到的目录中删除文件。

最佳答案

您缺少将--remove-files选项删除文件后添加到存档中的部分。

您可以使用类似

的命令执行存档和文件删除操作

  

find / path / to / be / archived / -depth -type d -empty -exec rmdir {} \;


更新:您可能有兴趣阅读这篇简短的Debian讨论,
错误424692: - remove文件抱怨目录“在我们阅读时已更改”

作者:,nik

相关问答

添加新评论