Después de obtener la respuesta de Stephen Kitt y discutir este comando como una posible solución:
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
Decidí esperar a ejecutarlo hasta que entendí lo que estaba sucediendo, esta respuesta describe lo que descubrí y terminé haciendo.
Estoy usando Gnu mv
que copia archivos al destino, luego solo si la operación de copia es exitosa, elimina el original.
Sin embargo, quería confirmar si mv
realiza esta secuencia un archivo a la vez, si eso fuera cierto, el contenido de la carpeta original se habría dividido limpiamente en dos partes, una parte desplazada al destino y la otra aún se queda en la fuente. Y posiblemente habría un archivo que se interrumpió durante la copia, lo que sería común entre los dos directorios, y probablemente tendría un formato incorrecto.
Para descubrir archivos que eran comunes entre los dos directorios, ejecuté:
~% sudo diff -r --report-identical-files my_data_on_60GB_partition/. /media/admin/mydata/. | grep identical | wc -l
14237
Este resultado sugirió que había 14,237 instancias de los mismos archivos en los directorios de origen y de destino, confirmé al verificar los archivos manualmente; sí, había muchos de los mismos archivos en ambos directorios. Esto sugiere que solo después de mv
copiar grandes extensiones de archivos, se realiza la eliminación de los archivos de origen. Una búsqueda rápida en info
el mv
comando mostró
[ mv
] Utiliza primero parte del mismo código que utiliza cp -a
para copiar los directorios y archivos solicitados, luego (suponiendo que la copia se realizó correctamente) elimina los originales. Si la copia falla, se elimina la parte que se copió a la partición de destino.
No ejecuté el comando pero sospecho que si intenté ejecutar
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
La -i
solicitud antes de sobrescribir probablemente se habría activado más de 14,000 veces.
Entonces, para averiguar cuántos archivos totales hay en el directorio recién creado:
~% sudo find my_data_on_60GB_partition/ -type f -a -print | wc -l
14238
Entonces, si había un total de 14238 archivos regulares en el nuevo directorio y 14237 tenía originales idénticos en la fuente, eso significa que solo había un archivo en el nuevo directorio que no tenía un archivo idéntico correspondiente en la fuente. Para averiguar cuál era ese archivo, ejecuté rsync en la dirección de la fuente:
~% sudo rsync -av --dry-run my_data_on_60GB_partition/ /media/admin/my_data
sending incremental file list
./
Education_learning_reference/
Education_learning_reference/Business_Education/
Education_learning_reference/Business_Education/Business_education_media_files/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/018 business plans-identifying main KPIs.flv
sent 494,548 bytes received 1,881 bytes 330,952.67 bytes/sec
total size is 1,900,548,824 speedup is 3,828.44 (DRY RUN)
Una comprobación rápida confirmó que se trataba del archivo con formato incorrecto, donde el archivo existía tanto en el origen como en el destino, archivo de destino = 64 MB, original = 100 MB. Este archivo y su jerarquía de directorios todavía era propiedad de root y aún no se habían restaurado los permisos originales.
Entonces en resumen:
- todos los archivos que
mv
nunca llegaron todavía están de vuelta en sus ubicaciones originales (obviamente)
- todos los archivos que se
mv
copiaron completamente todavía tenían sus copias originales en el directorio fuente
- el archivo que se copió solo parcialmente todavía tenía el original de nuevo en el directorio de origen
En otras palabras, todos los archivos originales todavía estaban intactos y la solución en este caso era simplemente eliminar el nuevo directorio.
Control-Z
(pausar) en lugar de hacerloControl-C
. En este caso, podrá ver qué archivo se estaba transfiriendo en ese momento y saber qué archivo se copió solo parcialmente. Luego puede decidir con calma cómo proceder. (Usarkill -stop
para procesos que no están en el tty).