Trabajo con carpetas que contienen muchos archivos, como 100 000 o incluso 1 000 000 de archivos por carpeta. Cuando trato de mover el contenido de una carpeta a otra, mi computadora siempre se atasca. Incluso cuando el proceso parece finalizado, no puedo ver el contenido de ninguna carpeta porque nautilus parece completamente congelado y tengo que forzar a mi computadora a reiniciarse. Noté que esto sucede también cuando intento moverme como 10 000 archivos.
¿Es un problema de mi computadora o es normal cuando trabajo con estos números?
¿Alguna forma inteligente de realizar esta transferencia de archivos?
cp -R SRC/ DEST/
)gvfs-copy
(desde elgvfs-bin
paquete) puede ser más rápido quecp
.Respuestas:
Quizás considere usar un método de línea de comando puro para transferir archivos de grandes cantidades, sin duda encontrará que el proceso es sustancialmente más rápido que usar una interfaz gráfica de usuario.
Hay muchas maneras diferentes de lograr esto, pero las siguientes funcionaron de manera rápida, segura y eficiente en mi sistema:
Alguna explicación para este comando:
<destination>
en mi ejemplo. Obviamente modifique esto para satisfacer sus propias necesidades y omita los corchetes.Son posibles permutaciones infinitas, pero esto debería funcionar bien y de manera mucho más eficiente que la interfaz gráfica de usuario. Una permutación, por ejemplo: si desea mover solo archivos PDF, puede ejecutar:
El uso de
xargs
abre muchas posibilidades, particularmente con el movimiento de una cantidad tan grande de archivos. Muchas, muchas posibilidades ...Problemas potenciales:
Hay al menos 2 posibles dificultades para reflexionar, gracias a los comentaristas a continuación por estos pensamientos:
mv
aún moverá los archivos allí! Ten cuidado aquí ...-t
opción (--target-directory
) y la carpeta de destino es en realidad un archivo, moverá un archivo y fallará en el resto.mv
tiene 2 usos: cambiar el nombre de la fuente al destino o movimiento fuente de directorio . Nuevamente ten cuidado ...fuente
find . -maxdepth 1 -type f -exec mv -t test {} +
haría solo ?-name...
pieza extraña pero me he quedadoxargs
en su lugar.-t
bandera? Creo que todos los archivos se "moverán" a un solo archivo llamadotest
, lo que provocará la pérdida de todos sus archivos excepto uno). Creo que preferiría unrsync
seguido por, si todo ha salido bien, arm
. Sin embargo, puedo imaginar escenarios en los que dicha verificación no puede automatizarse.rsync
ejemplo escrito como respuesta?mv dir1/* dir2
, y solo recurrafind -exec
si hay un problema o si necesita evitar hacer coincidir las carpetas con su glob. (Aunque dependiendo de sus convenciones de nomenclatura, a menudo*.*
coincidirá con la mayoría de los archivos, pero no con la mayoría de los directorios, ya que es común tener un.extension
archivo on y no tener.
nombres en el directorio)Tuve una experiencia similar antes, es normal cuando se trata de una gran cantidad de archivos. Estaba teniendo una gran colección de hojas de datos PDF (partes electrónicas).
Las herramientas de la GUI verifican algunos detalles del archivo y metadatos (icono / miniatura, tamaño, ...), será un gran problema en tal caso. Incluso en la Vista de iconos y sin miniaturas, se congelarán, ya que la mayoría de ellos no están diseñados para casos tan extremos. La herramienta GUI intenta cargar íconos de presentación para todos los archivos / carpetas en el directorio, incluso esos elementos no son visibles para el usuario en la parte de la pantalla actual. La clasificación también es parte del problema y no hay forma de evitarlo.
locate
para una búsqueda rápida en lugar defind
.Para la operación de movimiento, úsela
mv
en la terminal (las herramientas de la GUI son lentas porque intentan actualizar la vista periódicamente).Si está en la misma partición, el comando cambiará solo los punteros en el índice del sistema de archivos. De lo contrario, será una operación dual (copiar y eliminar). Eso será costoso.
Solo hay un caso en el que puedo ayudar, si está copiando esos archivos varias veces y no se actualizan. Como hice cuando comparto mi colección con amigos, cada vez que intento copiarla lleva una década. (Esto es más útil solo con archivos de tamaño pequeño)
fuente
Si está buscando una solución que le brinde los beneficios de las operaciones de línea de comandos con la sensación de GUI y la flexibilidad combinadas, le recomiendo
mc
( comandante de medianoche ).Es un administrador de archivos visual basado en ncurses: tiene una vista de dos paneles en sus archivos y un menú disponible. El uso del mouse es posible, incluso sobre ssh. Puede navegar por su fs, inspeccionar archivos con el visor de archivos, filtrar según los criterios sobre la marcha y realizar las operaciones de copiar o mover en la línea de comandos.
Es un clon del programa Norton commander de DOS que era popular a mediados de los años ochenta. Funciona bien cada vez que la GUI comienza a ser poco confiable para mí e ideal para su propósito.
fuente
He encontrado problemas algo similares: estaba probando mi configuración RAID y cuando hacía grandes transferencias (por ejemplo, más de 100,000 archivos y 1-2 TB de datos de una sola vez) parece que las transferencias comienzan bastante rápido, digamos ~ 200MB / seg, luego disminuya la velocidad rápidamente a una meseta razonable ~ 90-120MB / seg (posiblemente después de consumir algo de almacenamiento en caché flash en las unidades). Luego, después de 20-30 minutos, la operación comienza a caer gradualmente a una meseta mucho más baja ~ 30-40 MB / seg, peor cuando se trata de archivos pequeños, lo que lleva una operación de 4-5 horas más cerca de 15 horas.
Pasé algún tiempo tratando de diagnosticar, por ejemplo, posibles fallas en la unidad. A pesar de probar diferentes herramientas: línea de comando, nautilus, no pude mantener un rendimiento decente para operaciones de copia muy grandes.
Lo que funcionó mejor para mí fue usar el comandante de medianoche, y cada vez que la copia se volvía lenta, detenía la operación hasta que se apagaba la luz del disco duro después de que las operaciones pendientes se apagaban, generalmente un minuto más o menos, luego volvía a pausar MC y dispararía de nuevo a un ritmo decente durante otros 20-30 minutos. Aunque bastante molesto.
fuente