Intenté mover un árbol grande de un disco a otro, pero era demasiado pequeño. Ahora, me queda algo que realmente no puedo entender: parece que algunos archivos se quitaron del árbol de origen mientras que otros simplemente se copiaron. Lo más probable es que esto no sea cierto y simplemente estoy pasando por alto algo, como lo hice cuando verifiqué el espacio libre en el disco de destino. :D
El comando era simplemente mv source-dir destination-dir
, donde ambos directorios residen en discos diferentes. Estoy usando mv (GNU coreutils) 7.4
. En ninguna parte de la página de manual encontré las respuestas a las siguientes preguntas:
- ¿Se pueden crear archivos truncados?
- En caso de errores, ¿se eliminará algo del árbol de fuentes?
- ¿Cómo recuperarse (de forma fácil y rápida)?
Respuesta1
Cuando mv se mueve a un sistema de archivos diferente, primero copia todos los datos al nuevo sistema de archivos. Una vez que se copian los datos nuevos, elimina los datos antiguos. Esto significa que si el movimiento se interrumpe o falla, la ubicación de origen aún debería contener todos los datos.
En cuanto a la recuperación, sólo los datos de destino deberían estar dañados. En lugar de usar mv nuevamente, simplemente use rsync y luego rm manualmente
rsync -av source-dir/ dest-dir/
rm -rf source-dir
Respuesta2
Creo que la introducción a la info
página responde a todas tus preguntas:
Primero usa algo del mismo código que usa `cp -a' para copiar los directorios y archivos solicitados, luego (suponiendo que la copia se haya realizado correctamente) elimina los originales. Si la copia falla, se elimina la parte que se copió en la partición de destino. Si copiara tres directorios de una partición a otra y la copia del primer directorio se realizó correctamente, pero el segundo no, el primero se dejaría en la partición de destino y el segundo y el tercero se dejarían en la partición original.
La recuperación no debería ser un problema, ya que los datos se conservan. No se cuanto intenta seratómico( mkdir
por ejemplo, es necesaria una inspección de la fuente) o si está en su dominio (frente al del kernel), pero podría haber corrupción si la interrupción ocurre cuando ya se está eliminando la fuente. En ese punto, ya tendría una buena copia en el directorio de destino, por lo que una simple verificación del tamaño de los bytes podría ser la solución.
EDITAR: Hice algunas pruebas con archivos enormes (algunos G) creados con dd
, pero no obtuve resultados concluyentes. Nunca logré copiar solo algunas de las fuentes: cancelé toda la operación (siendo demasiado rápido) o luego no tuve ninguna posibilidad debido al almacenamiento en caché del disco y tal vez al buen diseño del sistema de archivos (mi ^C siempre aterrizó después de que el movimiento se realizó correctamente). ).