如果我在 tar 处理文件时删除该文件,会发生什么情况?

如果我在 tar 处理文件时删除该文件,会发生什么情况?

我正在尝试使用以下命令备份我的文件系统:

tar -cvjf /fs.bz2 --exclude=/fs.bz2 --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys /

此命令一直在运行,并输出已处理的每个文件,并且已处理到名为 的某个 2 GB 文件20130601.tgz。我决定不需要保留此文件,因此在 tar 处理它时,我用 删除了此文件rm

tar 似乎仍在处理该文件,因为它尚未输出要处理的下一个文件,并且 bzip2 文件的文件大小继续增长。以前,tar 似乎识别出文件在编辑时已发生更改并已告知,然后继续处理下一个文件。我还使用以下命令重新创建了该文件:echo hello > 20130601.tgz

三个相关问题:

  • 这次为什么没有识别到​​已经被修改了呢?
  • 我需要重新启动我的 tar 命令吗?
  • 如果我删除了同一个文件但它仍在处理它,那么它会从哪里获取文件内容以便对其进行处理?

编辑:问题 1 和 2 由我的命令的以下输出回答:

tar: /srv/www/nachtkriecher.com/backups/20130601.tgz: file changed as we read it

但问题 3 仍然存在!我在等待的时候它在做什么?

答案1

如果我在 tar 处理文件时删除该文件,会发生什么情况?

绝对没有。删除文件只是从目录中删除名称。只要文件在另一个目录中有名称,或者任何进程已经打开它,文件本身仍然存在。由于tar已经打开了文件,它会继续正常处理它。

相关内容