Arrastro y suelto una carpeta en otra por error en FileZilla.
~/big_folder
~/some_other_folder
La carpeta que se movió es muy grande. Incluye cientos de miles de archivos (node_modules, pequeños archivos de imagen, muchas carpetas)
Lo que es tan extraño es que después de soltar mi mouse, el movimiento está listo. La carpeta "big_folder" se mueve a "some_other_folder".
~/some_other_folder/big_folder
(no hay big_folder
en el ~/
después de mudarse)
Luego me doy cuenta del error e intento retroceder, pero falla tanto en FileZilla como en la terminal.
Luego tengo cp -r
que copiar los archivos nuevamente porque hay códigos del lado del servidor que acceden a esos archivos en~/big_folder
Y lleva como siempre esperar ...
¿Qué tengo que hacer?
Por cierto, aquí están los resultados de FileZilla (es la falla del retroceso):
Status: Renaming '/root/big_folder' to '/root/some_other_folder/big_folder'
Status: /root/big_folder -> /root/some_other_folder/big_folder
Status: Renaming '/root/some_other_folder/big_folder' to '/root/big_folder'
Command: mv "big_folder" "/root/big_folder"
Error: mv /root/some_other_folder/big_folder /root/big_folder: received failure with description 'Failure'
received failure with description 'Failure'
.mv /root/some_other_folder/big_folder /root/big_folder
. ¿Qué mensaje de error recibes?cp -al
mv vs cp
Se aborda la pregunta de OP , pero me encantaría saber por qué pudo mover la carpeta en una dirección al instante, pero no en la otra.Respuestas:
Si un directorio se mueve dentro del mismo sistema de archivos (la misma partición), todo lo que se necesita es cambiar el nombre de la ruta del archivo del directorio. No hay datos aparte de la entrada del directorio para el directorio en sí tiene que ser alterado.
Al copiar directorios, los datos para cada archivo deben duplicarse. Esto implica leer todos los datos de origen y escribirlos en el destino.
Mover un directorio entre sistemas de archivos implicaría copiar los datos al destino y eliminarlos de la fuente. Esto tomaría casi tanto tiempo como copiar (duplicar) los datos dentro de un solo sistema de archivos.
Si FileZilla renombró exitosamente el directorio de
~/big_folder
a~/some_other_folder/big_folder
, entonces lo revertiría usando... después de asegurarse de que no había un directorio llamado
~/big_folder
(si lo hubiera, el movimiento se colocaríabig_folder
desdesome_other_folder
el~/big_folder
directorio como una subcarpeta).fuente
mv ~/some_other_folder/big_folder ~/
después de asegurarme de que no haya otrobig_folder
en el directorio de inicio. Nunca he usado FileZilla.La respuesta existente es excelente, pero me gustaría ampliarla un poco mostrando exactamente lo que sucede cuando te mueves o cuando copias un archivo. Cuando observa las llamadas al sistema durante una copia, ve:
Esto abre el archivo fuente, luego crea un segundo archivo. Luego lee el contenido del archivo de origen en la memoria y escribe esa memoria en el archivo de destino. Esto requiere varios cambios de contexto y algunas E / S de disco que pueden ser bastante altas para archivos grandes. Sin embargo, si mueve un archivo, verá:
Es importante recordar que solo verá el nombre del archivo si está en la misma partición en el mismo disco físico. Si crea un archivo enorme de varios gigabytes y luego lo mueve entre dos ubicaciones en su hogar, notará que la acción se completa al instante. Si, por otro lado, lo mueve a un dispositivo externo, tardará tanto tiempo en moverse como si lo usara en su
cp
lugar. Esto se debe a que mover un archivo solo se puede hacer cambiando el nombre si está en la misma partición.fuente
getdents()
ymkdir()
llamadas dispersas.