¿Por qué el espacio libre en la partición de origen no cambia durante "mv"?

13

Estoy corriendo mvpara mover un directorio (que contiene muchos archivos) de una partición a otra. Mientras mvmueve archivos individuales en el directorio uno por uno, noto que el tamaño de espacio libre de la partición de origen no cambia, mientras que el tamaño de espacio libre de la partición de destino está disminuyendo.

¿Por qué está funcionando de esa manera, en lugar de que la suma de los tamaños de espacio libre de las particiones de origen y destino permanezca igual?

Tim
fuente

Respuestas:

16

Como define POSIX, mv duplicará el archivo fuente a la ruta de destino, y si nada sale mal, el archivo fuente se eliminará:

  1. La jerarquía de archivos enraizada en source_file se duplicará como una jerarquía de archivos enraizada en la ruta de destino

  2. Se eliminará la jerarquía de archivos enraizada en source_file. Si esto falla por algún motivo, mv escribirá un mensaje de diagnóstico al error estándar, no hará nada más con el archivo fuente actual y continuará con los archivos fuente restantes.

Si se mueve en el mismo sistema de archivos, solo mueve la entrada de una ubicación en el sistema de archivos a otra.

Garantizó que no perderá el archivo fuente si se producen errores durante el proceso de movimiento.

Cuonglm
fuente
16

Es conservador y no elimina archivos hasta que la copia se realiza correctamente. Esto facilita la recuperación si algo sale mal.

hildred
fuente
pero el directorio tiene muchos archivos
Tim
77
@Tim: no comienza a eliminar archivos de origen hasta que todos los archivos se hayan duplicado en el volumen de destino. Si necesita mover los archivos de uno en uno, de modo que nunca haya más espacio "extra" utilizado que el del archivo más grande, debe crear un bucle para hacerlo.
Warren Young
44
¿Alguna vez ha realizado un movimiento en MS-Windows y, a la mitad del proceso, algo sale mal? Tanto el origen como el destino son un desastre, y tienes que arreglarlo. Si no eres un geek de la cena, entonces probablemente solo elimines ambos y aprendas a no volver a hacerlo.
ctrl-alt-delor