我正在做一个 :tar -cvf
并且我不得不用ctrl-C
. 我知道我应该做一个Ctrl-Z
然后将任务带回前台......但这不是故事。
我可以从我停止任务的那一点继续吗?
Ruc*_*t88 13
此方法将重新创建您的 tar 存档,并将完成的部分附加到现有文件中。如果通过网络连接进行备份,这会很有用。如果您的 INFILES 中的任何数据发生更改,您可能会导致存档损坏。请务必在完成后测试您的存档。
在下一行中将 INFILES 和 OUTFILE 更改为正确的名称。
INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"
Run Code Online (Sandbox Code Playgroud)
解释:
SIZE="$(wc -c < $OUTFILE)"
# 获取档案的当前大小。
tar -cz --to-stdout "$INFILES" |
# 开始创建存档并将输出发送到tail
命令。
tail -c +$(($SIZE+1)) >>
# 忽略 $SIZE+1 之前的数据,并恢复存档 $OUTFILE 的其余部分。
小智 5
如果我有一个不完整的tar
档案,我会在档案中创建一个文件列表:
tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done
Run Code Online (Sandbox Code Playgroud)
该sed
命令删除所有那些带有斜杠的行:这些是目录,而不是文件,我们想再次转储目录,只跳过那些目录中的文件,我们已经在第一个 tar 存档中。此外,我们让sed
删除最后一个文件名,因为它很可能只是部分转储,所以我们将再次存档。
然后只需通过files-done
-X 选项将列表传递给新tar
命令:
tar cfvX archive2.tar files-done SOURCEDIR
Run Code Online (Sandbox Code Playgroud)
确保在新的 tar 命令上使用不同的输出文件名,否则您将覆盖部分存档。不要尝试直接附加到损坏的 tar 存档。
归档时间: |
|
查看次数: |
17268 次 |
最近记录: |