Öldürülen katran komutunu nasıl devam ettirebilirim?


11

Yapıyordum: tar -cvfve onu öldürmek zorunda kaldım ctrl-C. Yapmalıydım Ctrl-Zve sonra görevi ön plana getirmeliyim ... ama hikaye değil.

Görevi durdurduğum noktadan devam edebilir miyim?


Hedef konumda eksik bir tar dosyası var mı?
Karthik T

Evet tamamlanmamış bir katran var.
mthpvg

Yanıtlar:


11

Bu yöntem, katran arşivinizi yeniden oluşturur ve bitmiş parçayı mevcut dosyaya ekler. Bir ağ bağlantısı üzerinden yedekleme yapıyorsanız bu yararlı olabilir. INFILES'ınızdaki verilerden herhangi biri değiştiyse büyük olasılıkla bozuk bir arşive neden olursunuz. Tamamlandıktan sonra arşivinizi test ettiğinizden emin olun.

INFILES ve OUTFILE dosyalarını aşağıdaki satırdaki doğru adlarla değiştirin.

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

Açıklama:

SIZE="$(wc -c < $OUTFILE)" # Arşivin geçerli boyutunu alın.

tar -cz --to-stdout "$INFILES" |# Arşiv oluşturmaya başlayın ve tailkomutu komuta gönderin .

tail -c +$(($SIZE+1)) >> # $ SIZE + 1 öncesindeki verileri dikkate almayın ve geri kalan $ OUTFILE arşivine devam edin.


2
Bunun sadece tar sürecini yeniden başlatmaktan daha hızlı olduğunu varsayıyorum çünkü aslında diske bir şey yazmıyor mu?
Tyler

2

En iyi çözüm, tar dosyasını silmek nohupve eklenmiş ve eklenmiş işlemi yeniden başlatmak olacaktır &. Alternatif olarak, bunu çalıştırıp tar -tfvyeni için hariç tutma olarak kullanabilirsiniz tar -cvf.


2
tar -cvfmevcut dosyanın üzerine yazacaktır. Bunu mu demek istediniz tar -rvf? Ayrıca, arşive yazılan son dosya büyük olasılıkla tamamlanmamıştır.
Gilles 'SO- kötü olmayı bırak'

Buradaki fikir, tarballda olan dosyaların bir listesini yapmaktır, eksi muhtemelen tamamlanmamış olan sonuncusu. Ve sonra bir tar -rvf?
mthpvg

2

Yapamazsınız; sadece baştan başlaman gerek.


1

Eksik bir tararşivim olması durumunda, arşivdeki dosyaların bir listesini oluşturuyorum:

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

sedBu dizinler değil, dosyalar, ve biz tekrar dizinleri dökümü ve sadece biz ilk katran arşivinde zaten sahip olduğunu, o dizinlerde bu dosyaları atlamak istiyorum: komut tüm eğik çizgi bulunduran bu satırları siler. Ayrıca, sedson dosya adını silmeye izin veriyoruz , çünkü bu büyük olasılıkla sadece kısmen dökülmüş, bu yüzden tekrar arşivleyeceğiz.

Sonra files-donelisteyi -X seçeneği ile yeni bir tarkomuta iletin :

tar cfvX archive2.tar files-done SOURCEDIR

Yeni tar komutunda farklı bir çıktı dosya adı kullandığınızdan emin olun yoksa kısmi arşivinizin üzerine yazarsınız. Bozuk katran arşivine doğrudan eklemeye çalışmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.