Stavo facendo un: tar -cvf
e ho dovuto ucciderlo con ctrl-C
. So che avrei dovuto fare un Ctrl-Z
e poi riportare il compito in primo piano ... ma non è la storia.
Posso riprendere dal punto in cui ho interrotto l'attività?
Stavo facendo un: tar -cvf
e ho dovuto ucciderlo con ctrl-C
. So che avrei dovuto fare un Ctrl-Z
e poi riportare il compito in primo piano ... ma non è la storia.
Posso riprendere dal punto in cui ho interrotto l'attività?
Risposte:
Questo metodo ricrea il tuo archivio tar e accoda la parte finita al file esistente. Questo può essere utile se si esegue il backup su una connessione di rete. Probabilmente si otterrà un archivio corrotto se uno qualsiasi dei dati in INFILES è cambiato. Assicurati di testare il tuo archivio dopo il completamento.
Modificare INFILES e OUTFILE con i nomi corretti nella riga seguente.
INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"
Spiegazione:
SIZE="$(wc -c < $OUTFILE)"
# Ottieni le dimensioni correnti dell'archivio.
tar -cz --to-stdout "$INFILES" |
# Inizia a creare l'archivio e invia l'output al tail
comando.
tail -c +$(($SIZE+1)) >>
# Ignora i dati prima di $ SIZE + 1 e riprendi il resto dell'archivio $ OUTFILE.
La soluzione migliore sarebbe quella di eliminare il file tar e riavviare il processo anteposto nohup
e aggiunto &
. In alternativa, è possibile eseguirlo tar -tfv
e utilizzarlo come esclusione per il nuovo tar -cvf
.
tar -cvf
sovrascriverà il file esistente. Volevi dire tar -rvf
? Inoltre, l'ultimo file che è stato scritto nell'archivio era probabilmente incompleto.
tar -rvf
?
Quello che faccio nel caso in cui disponga di un tar
archivio incompleto , creo un elenco dei file nell'archivio:
tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done
Il sed
comando elimina tutte quelle righe che presentano una barra finale: si tratta di directory, non di file, e vogliamo scaricare di nuovo le directory e saltare solo quei file in quelle directory, che abbiamo già nel primo archivio tar. Inoltre, lasciamo sed
eliminare l'ultimo nome di file, perché molto probabilmente è stato scaricato solo parzialmente, quindi lo archiveremo di nuovo.
Quindi passa l' files-done
elenco tramite l'opzione -X a un nuovo tar
comando:
tar cfvX archive2.tar files-done SOURCEDIR
Assicurati di usare un nome file di output diverso sul nuovo comando tar, altrimenti sovrascriverai il tuo archivio parziale. Non provare ad aggiungere direttamente all'archivio tar corrotto.