Tengo una gran cantidad de archivos para copiar. Quiero copiar los archivos en paralelo en un sistema de archivos de Amazon Elastic File System (Amazon EFS) para mi instancia de Amazon Elastic Compute Cloud (Amazon EC2).
Resolución
Usa una de las siguientes herramientas para ejecutar trabajos en paralelo en un sistema de archivos de Amazon EFS:
GNU Parallel
Sigue estos pasos:
-
Para instalar GNU Parallel, ejecuta los siguientes comandos para el sistema operativo que utilices.
Amazon Linux y RHEL 6:
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
sudo yum install parallel nload -y
Red Hat Enterprise Linux (RHEL) 7:
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install parallel nload -y
Amazon Linux 2:
sudo amazon-linux-extras install epel
sudo yum install nload sysstat parallel -y
Amazon Linux 2023 (AL2023):
No hay paquetes adicionales para Enterprise Linux (EPEL) ni repositorios de tipo EPEL para AL2023. En su lugar, instala paquetes desde las páginas del repositorio de GitHub para las herramientas individuales. Consulta nload, sysstat y gnu-parallel en el sitio web de GitHub.
Ubuntu:
sudo apt-get install parallel
-
Ejecuta uno de los siguientes comandos para copiar los archivos en Amazon EFS.
Con rsync:
sudo time find -L /src -type f | parallel rsync -avR {} /dst
Alternativa:
Sin rsync:
sudo time find /src -type f | parallel -j 32 cp {} /dst
-
Ejecuta el siguiente comando para supervisar el tráfico de red y el ancho de banda en la consola de la aplicación nload:
sudo nload -u M
msrsync
Nota: msrsync solo es compatible con Python. Para ejecutar el script msrsync, usa la versión 2.7.14 o posterior de Python.
Sigue estos pasos:
-
Ejecuta el siguiente comando para instalar msrsync:
sudo curl -s https://raw.githubusercontent.com/jbd/msrsync/master/msrsync -o /usr/local/bin/msrsync && sudo chmod +x /usr/local/bin/msrsync
-
Para especificar el número de procesos rsync que deseas ejecutar en paralelo, ejecuta el siguiente comando. Incluye la opción**-p** para mostrar el progreso de cada trabajo:
sudo time /usr/local/bin/msrsync -P -p X --stats --rsync "-artuv" /src/ /dst/
Nota: Sustituye X por el número de procesos de rsync.
fpsync
Sigue estos pasos:
-
Activa el repositorio EPEL.
-
Para instalar el paquete fpart, ejecuta los siguientes comandos para el sistema operativo que utilices.
RHEL 6:
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
sudo yum install fpart -y
RHEL 7:
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install fpart -y
Amazon Linux 2:
sudo amazon-linux-extras install epel
sudo yum install fpart -y
Amazon Linux 2023:
No hay ningún repositorio EPEL o tipo EPEL para AL2023. En su lugar, instala los paquetes de las páginas del repositorio para las herramientas individuales. Consulta nload, sysstat y gnu-parallel en el sitio web de GitHub.
Ubuntu:
sudo apt-get install fpart
Nota: En Ubuntu, fpsync forma parte del paquete fpart.
-
Ejecuta el siguiente comando para sincronizar los directorios /dst y /src:
sudo fpsync -n X /src /dsthttps://github.com/martinda/gnu-parallel
Nota: Sustituye X por el número de procesos de Fpsync que deseas ejecutar en paralelo.