GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué sucede si se interrumpe mv?

Si mueve un directorio en el mismo sistema de archivos, solo mueve la entrada del directorio de una ubicación en el sistema de archivos a otra. Por ejemplo, mv /source/dir /target/dir eliminará la entrada de directorio de dir de /source y crea uno nuevo en /target . Eso se hace mediante una llamada al sistema atómico (es decir, ininterrumpible). El inodo que contiene las entradas del directorio de dir así como el contenido real del directorio en sí no se ve afectado.

Si mueve el directorio de un sistema de archivos a otro, todos los archivos se copian primero en el nuevo sistema de archivos y luego se desvinculan del original. Entonces, si interrumpes mv mientras se está copiando, puede terminar con dos copias de algunos de los archivos:en la ubicación anterior y en la nueva.


La implementación de GNU itera sobre los argumentos en la línea de comando, intenta cambiar el nombre primero y, si eso falla, copia recursivamente y luego elimina recursivamente la fuente. Entonces

mv a b c/

eliminará a antes de copiar b , y no comenzará a eliminar nada en a antes de que se complete la copia de destino.

Tenga en cuenta que esto se aplica solo a la implementación de GNU.

Para aclarar: si un es un directorio que contiene d y e y b es un archivo, el orden será

  • crear c/a
  • copiar a/d -> c/a/d
  • copiar a/e -> c/a/e
  • eliminar a/d
  • eliminar un/e
  • eliminar un
  • copiar b -> c/b
  • eliminar b

Mueve un directorio, interrumpe el movimiento y el directorio original permanecerá intacto:

$ mv a b/

Si mueve varios directorios, cada uno permanecerá intacto en el origen o en el destino, dependiendo de cuándo interrumpió:

$ mv a b c/

Cómo obtuve mi respuesta:

$ mv --version
mv (GNU coreutils) 8.21

$ info mv
... It first uses some of the same code that's used by `cp -a'
to copy the requested directories and files, then (assuming the copy
succeeded) it removes the originals.  If the copy fails, then the part
that was copied to the destination partition is removed.  If you were
to copy three directories from one partition to another and the copy of
the first directory succeeded, but the second didn't, the first would
be left on the destination partition and the second and third would be
left on the original partition.

Como prueba, copié una carpeta grande en un directorio NFS, la interrumpí y la cantidad de archivos en mi carpeta grande de origen permaneció igual, y los contenidos parciales quedaron en el directorio NFS. Usé "find . -type f | wc -l" para verificar.

Parece que la respuesta de Simon es correcta.


Linux
  1. Filtro Rsync:¿Copiar un solo patrón?

  2. ¿Para qué sirven los inodos?

  3. ¿Qué devuelve el comando Ls -al .*?

  4. ¿Qué sucede si desactivo y desinstalo Plymouth?

  5. ¿Qué genera pwd?

¿Qué son los Microservicios? Introducción a la Arquitectura de Microservicios

¿Cómo bajar un directorio?

¿Qué sucede cuando un hilo se bifurca?

¿Qué significa montar un dispositivo en Linux?

¿Podemos montar varios discos como un directorio?

¿Qué significa el sufijo .d en Linux?