GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la forma más rápida de mover un millón de imágenes de un directorio a otro en Linux?

rsync sería una mala elección porque realiza una gran cantidad de trabajo en segundo plano de cliente/servidor que representa tanto los sistemas locales como los remotos.

mv es probablemente la mejor opción. Si es posible, deberías probar mv directory_old directory_new en lugar de mv directory_old/* directory_new/ . De esta manera, mueves una cosa en lugar de un millón de cosas.


find src_image_dir/ -type f -name '*.jpg' -print0 | xargs -0r mv -t dst_image_dir/ 
  • Esto no desbordará la expansión del argumento.
  • Puede especificar la extensión del archivo, si lo desea. (-nombre...)
  • find -print0 con xargs -0 le permite usar espacios en los nombres.
  • xargs -r no ejecutará mv a menos que haya algo que mover. (mv se quejará si no se proporcionan archivos fuente).
  • La sintaxis mv -t le permite especificar primero el destino y luego los archivos fuente, necesarios para xargs .
  • Mover todo el directorio es, por supuesto, mucho más rápido, ya que se lleva a cabo en un tiempo constante, independientemente de la cantidad de archivos que contenga, pero:
    • el directorio de origen desaparecerá por una fracción de tiempo y podría causarle problemas;
    • si el proceso usa el directorio actual como directorio de salida (en contraste con siempre hacer referencia a una ruta completa desde una ubicación inmóvil), deberá reiniciarlo. (como lo hace con la rotación de registros ).

Por cierto, me preguntaría si realmente tengo que mover una cantidad tan grande de archivos a la vez. El procesamiento por lotes está sobrevalorado. Trato de no acumular grandes cantidades de trabajo si puedo procesar las cosas en el momento en que se generan.


Si los dos directorios residen en el mismo sistema de archivos, use mv en el DIRECTORIO y no en el contenido del directorio.

Si residen en dos sistemas de archivos diferentes, use rsync:

rsync -av /source/directory/ /destination

Observe el final / en la fuente Esto significa que copiará el CONTENIDO del directorio y no el directorio en sí. Si dejas el / apagado, aún copiará los archivos pero se ubicarán en un directorio llamado /destination/directory . Con /, los archivos solo estarán en /destination

rsync mantendrá la propiedad del archivo si lo ejecuta como root o si los archivos son de su propiedad. También mantendrá el mtime de cada archivo individual.


Linux
  1. Compara dos imágenes al estilo python/linux

  2. ¿Cómo mover (y sobrescribir) todos los archivos de un directorio a otro?

  3. ¿Cuál es la forma más rápida de combinar dos o más archivos en Linux?

  4. ¿Cuáles deberían ser los permisos de directorio de inicio ideales en Linux?

  5. ¿Cuál es la forma más rápida de eliminar todos los archivos y subcarpetas de un directorio?

¿Cómo copiar un archivo de otro directorio al actual?

Linux:¿cómo se inspecciona la información de la estructura del directorio de un archivo Unix/linux?

¿La forma más rápida de extraer un Iso?

Ruta absoluta vs relativa en Linux:¿Cuál es la diferencia?

Mover un volumen lógico de un grupo de volúmenes a otro

¿Cuál es la forma más rápida de ejecutar un script?