¿Cómo reanudar de forma segura y confiable el proceso de copia de archivos $A
en la ubicación de copia de seguridad $B
realizada con pv "$A" > "$B"
o cat "$A" > "$B"
?
(supongamos que el archivo $A
es muy grande, por ejemplo, el archivo de instantánea LVM2)
¿Se puede lograr con dd
?
Preferido: soluciones bash o python (preferiblemente python3).
Escenario de ejemplo: pv "$A" > "$B"
interrumpido después de copiar el 90%. ¿Cómo reanudarlo para finalizar el proceso de copia pero no repetir todo el trabajo nuevamente?
Respuestas:
Sí, puede usar dd para omitir los bloques.
Los parámetros importantes aquí son
skip
así comoseek
:skip
: omite BLOQUES bloques del tamaño de ibs al inicio de la entradaseek
: omite BLOQUES de bloques de tamaño obs al inicio de la salidafuente
Tu quieres
rsync
:fuente
--append
.--append
ha cambiado desde la versión 3.0.0. ¿Podría asegurarme si actualmente--append
ignora la parte ya copiada, mientras--append-verify
lee todo A para verificar la suma de verificación? (antes de la versión 3.0.0. se--append
comportaba como--append-verify
-> Esa es la razón del malentendido)--append
agrega ciegamente al archivo.--append-verify
hace lo mismo pero ejecuta sumas de comprobación al final, si las sumas de comprobación no coincidenrsync
parece hacer una nueva copia.¿Intentó
dd skip
con un desplazamiento del tamaño de archivo real de B (independiente del tamaño del bloque de partición)?Eso te daría la parte que falta. En ese punto, podría
cat
juntarlos directamente en un nuevo archivo concat "$B" "$A2" >> "$C"; #mv "$C" "$B"
(donde,$C
por supuesto, es la parte que falta en una ruta con suficiente espacio).cat
también funciona bien para concatenar binarios y, en este caso, no tiene múltiples encabezados de archivo que precedan fusiones simples con script. Existe la posibilidad de que el final$B
esté dañado, pero en ese caso podría acortarlo y releer más$A
en el paso inicial de dd.fuente