回答:
この方法では、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を再開します。
最善の解決策は、tarファイルを削除して、先頭にとnohupを付けてプロセスを再開すること&です。または、それを実行tar -tfvして、新しいの除外として使用することもできますtar -cvf。
tar -cvf既存のファイルを上書きします。もしかしてtar -rvf?また、アーカイブに書き込まれた最後のファイルはおそらく不完全でした。
tar -rvf?
不完全な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アーカイブに直接追加しないでください。