終了したtarコマンドを回復する方法

終了したtarコマンドを回復する方法

tar -cvf私はそれを殺すために使用する必要があります:を作成していますctrl-C。私は1つを行い、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最後のファイル名は部分ダンプである可能性が高いため、削除するため、再度アーカイブします。

次に、-Xオプションを使用してfiles-doneリストを新しいコマンドに渡します。tar

tar cfvX archive2.tar files-done SOURCEDIR

新しいtarコマンドで別の出力ファイル名を使用する必要があります。それ以外の場合は、アーカイブの一部を上書きします。破損したtarアーカイブに直接追加しようとしないでください。

答え3

最善の解決策はtarファイルを削除して再起動することですnohup&またはtar -tfv新しいtar -cvf

答え4

できません。再起動してください。

関連情報