Estaba haciendo un: tar -cvf
y tuve que matarlo con ctrl-C
. Sé que debería haber hecho una Ctrl-Z
y luego volver a poner la tarea en primer plano ... pero no es la historia.
¿Puedo reanudar desde el punto en que detuve la tarea?
Estaba haciendo un: tar -cvf
y tuve que matarlo con ctrl-C
. Sé que debería haber hecho una Ctrl-Z
y luego volver a poner la tarea en primer plano ... pero no es la historia.
¿Puedo reanudar desde el punto en que detuve la tarea?
Respuestas:
Este método recreará su archivo tar y agregará la parte terminada al archivo existente. Esto puede ser útil si realiza una copia de seguridad a través de una conexión de red. Probablemente resultará en un archivo corrupto si alguno de los datos en sus INFILES ha cambiado. Asegúrese de probar su archivo una vez completado.
Cambie INFILES y OUTFILE a los nombres correctos en la siguiente línea.
INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"
Explicación:
SIZE="$(wc -c < $OUTFILE)"
# Obtener el tamaño actual del archivo.
tar -cz --to-stdout "$INFILES" |
# Comience a crear el archivo y envíe la salida al tail
comando.
tail -c +$(($SIZE+1)) >>
# Haga caso omiso de los datos antes de $ SIZE + 1 y reanude el resto del archivo $ OUTFILE.
La mejor solución sería eliminar el archivo tar y reiniciar el proceso antepuesto nohup
y anexado &
. Alternativamente, puede ejecutar tar -tfv
y usar eso como una exclusión para lo nuevo tar -cvf
.
tar -cvf
sobrescribirá el archivo existente. Quiso decir tar -rvf
? Además, el último archivo que se escribió en el archivo probablemente estaba incompleto.
tar -rvf
?
Lo que hago en el caso, que tengo un tar
archivo incompleto , creo una lista de los archivos en el archivo:
tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done
El sed
comando elimina todas esas líneas, que tienen una barra inclinada final: son directorios, no archivos, y queremos volcar los directorios nuevamente y solo omitir esos archivos en esos directorios, que ya tenemos en el primer archivo tar. Además, dejamos que sed
eliminemos el último nombre de archivo, porque es muy probable que se haya volcado solo parcialmente, por lo que lo archivaremos nuevamente.
Luego, simplemente pase la files-done
lista a través de la opción -X a un nuevo tar
comando:
tar cfvX archive2.tar files-done SOURCEDIR
Asegúrese de utilizar un nombre de archivo de salida diferente en el nuevo comando tar, o sobrescribirá su archivo parcial. No intente agregar directamente al archivo tar corrupto.