如何恢复被终止的 tar 命令

如何恢复被终止的 tar 命令

我正在做一个 : tar -cvf,我必须用 来杀死它ctrl-C。我知道我应该做一个Ctrl-Z,然后将任务带回到前台......但这不是故事。

我可以从停止任务的地方继续执行吗?

答案1

此方法将重新创建 tar 存档,并将完成的部分附加到现有文件中。如果通过网络连接进行备份,这会很有用。如果 INFILES 中的任何数据发生更改,则可能会导致存档损坏。请务必在完成后测试您的存档。

将以下行中的 INFILES 和 OUTFILE 更改为正确的名称。

INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"

解释:

SIZE="$(wc -c < $OUTFILE)"# 获取当前存档的大小。

tar -cz --to-stdout "$INFILES" |# 开始创建存档并将输出发送到tail命令。

tail -c +$(($SIZE+1)) >># 忽略$SIZE+1之前的数据,并恢复归档文件$OUTFILE的其余部分。

答案2

在我的存档不完整的情况下,我会做什么tar,我创建存档中的文件列表:

tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done

sed命令删除所有带有尾部斜杠的行:这些是目录,而不是文件,我们希望再次转储这些目录,并且只跳过这些目录中的那些文件,这些文件已经在第一个 tar 存档中。此外,我们sed删除最后一个文件名,因为它很可能只是部分转储,所以我们将再次归档它。

然后只需files-done通过 -X 选项将列表传递给新tar命令:

tar cfvX archive2.tar files-done SOURCEDIR

确保在新的 tar 命令上使用不同的输出文件名,否则您将覆盖部分存档。不要尝试直接附加到损坏的 tar 存档。

答案3

最好的解决方案是删除 tar 文件并重新启动nohup&.或者,您可以运行tar -tfv并将其用作新tar -cvf.

答案4

你不能;你只需要重新开始。

相关内容