Saya sedang melakukan: tar -cvf
dan saya harus membunuhnya ctrl-C
. Saya tahu saya harus melakukan Ctrl-Z
dan kemudian membawa kembali tugas ke latar depan ... tapi bukan ceritanya.
Bisakah saya melanjutkan dari titik saya menghentikan tugas?
Saya sedang melakukan: tar -cvf
dan saya harus membunuhnya ctrl-C
. Saya tahu saya harus melakukan Ctrl-Z
dan kemudian membawa kembali tugas ke latar depan ... tapi bukan ceritanya.
Bisakah saya melanjutkan dari titik saya menghentikan tugas?
Jawaban:
Metode ini akan membuat kembali arsip tar Anda, dan menambahkan bagian yang sudah jadi ke file yang ada. Ini dapat berguna jika membuat cadangan melalui koneksi jaringan. Anda kemungkinan akan menghasilkan arsip yang rusak jika salah satu data di INFILES Anda telah berubah. Pastikan untuk menguji arsip Anda setelah selesai.
Ubah INFILES dan OUTFILE ke nama yang benar pada baris berikut.
INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"
Penjelasan:
SIZE="$(wc -c < $OUTFILE)"
# Dapatkan ukuran arsip saat ini.
tar -cz --to-stdout "$INFILES" |
# Mulailah membuat arsip dan mengirim output ke tail
perintah.
tail -c +$(($SIZE+1)) >>
# Abaikan data sebelum $ SIZE + 1, dan lanjutkan sisa arsip $ OUTFILE.
Solusi terbaik adalah dengan menghapus file tar dan memulai kembali proses yang diawali dengan nohup
dan ditambahkan &
. Atau, Anda bisa menjalankan tar -tfv
dan menggunakannya sebagai pengecualian untuk yang baru tar -cvf
.
tar -cvf
akan menimpa file yang ada. Apakah maksud Anda tar -rvf
? Juga, file terakhir yang ditulis ke arsip kemungkinan tidak lengkap.
tar -rvf
?
Apa yang saya lakukan dalam kasus ini, bahwa saya memiliki tar
arsip yang tidak lengkap , saya membuat daftar file dalam arsip:
tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done
The sed
perintah menghapus semua garis, yang memiliki garis miring: ini adalah direktori, bukan file, dan kami ingin membuang direktori lagi dan hanya melewatkan file-file di direktori tersebut, bahwa kita sudah di arsip tar pertama. Selanjutnya, kami membiarkan sed
menghapus nama file terakhir, karena itu kemungkinan besar telah dibuang hanya sebagian, jadi kami akan mengarsipkannya lagi.
Kemudian hanya meneruskan files-done
daftar melalui opsi -X ke tar
perintah baru :
tar cfvX archive2.tar files-done SOURCEDIR
Pastikan untuk menggunakan nama file keluaran yang berbeda pada perintah tar baru, atau Anda akan menimpa arsip parsial Anda. Jangan mencoba menambahkan langsung ke arsip tar yang rusak.