Linux

Copia de archivos lenta a una memoria USB en Linux

Un problema que he tenido regularmente con algunos Pendrives USB es que suelen demorar demasiado las copia de archivos y llegan incluso a elevar la carga del CPU, donde incluso la copia parece detenida, cayendo la velocidad a cero.

Hay varias recomendaciones como aseguraste de usar puertos USB 3.0, formatos Ext3 y Ext3 en lugar de FAT o NTFS, editar el GRUB, etc, sin embargo esto a veces no basta.

El origen del problema es por un lado, un bug del kernel de Linux que no puede detectar correctamente la velocidad de las unidades USB y por otro la calidad de los pendrives que tienen una baja velocidad de escritura, en comparación con la velocidad de lectura de los discos de donde se copian datos.

Básicamente, el problema es que los datos son leídos en origen más rápido de lo que el pendrive puede escribir saturando los chips del pendrive, la solución que encuentre es limitar temporalmente la velocidad de escritura.

Existen algunas soluciones que permiten hacer esta limitación permanente e independiente del proceso que realiza la copia, sin embargo, es algo que a mi no me interesa, ya que me afectaría la copia a cualquier dispositivo USB y lo cierto que no todos los pendrives presentan este problema, solo los que baja velocidad y de limitarlo de manera general me afectaría a todos los pendrives y discos externos USB

La solución que encuentre copiar los archivos con rsync solo en los casos que el pendrive me genere problemas y limitando la velocidad con el parámetro bwlimit

Por ejemplo en mi caso el pendrive Kinston de 128 GB tiene una tasa de escritura de 10 Mb/s por lo que decidí limitar la copia a 9 MB/s de la siguiente forma:

rsync -av --bwlimit=1000 /ruta/origen/ /ruta/destino/

Sino han usado antes rsync algunos otros parámetros que pueden ser de utilidad son:

rsync -av --bwlimit=1000 --delete --stats -h --progress /ruta/origen/ /ruta/destino

Una explicación rápida de los parámetros aparte de bwlimit son, stats para mostrar estadísticas al final de la copia, -h para mostrar los tamaños en formato de KB, MB y GB por ejemplo en lugar de bytes predeterminados,  progress para ver algunos datos adicionales durante la copia, como por ejemplo la velocidad de escritura y porcentaje de avance, y por último el parámetro delete que es útil para eliminar de destino los archivos que no existen en el origen y asi crear copias espejo.

Conclusión

Sin dudas no es una solución definitiva, sin embargo, tiene la ventaja de permitir la copia sin mayores problemas y sin afectar el resto de los dispositivos que pudiéramos llegar a necesitar usar en el día a día o en el futuro.

Compartir
Publicado por
Alvaro De León

Entradas recientes

Estadisticas de EasyMySQL

Normalmente, a las estadísticas del blog no le presto demasiada atención, sin embargo, trabajando en…

4 days hace

Nueva pagina de Publicaciones

La idea principal detrás de este blog es marca personal, el blog es para centralizar…

2 weeks hace

Migrar una maquina virtual desde VirtualBox a KVM

El migrar el disco duro es bastante sencillo como se verá a continuación, la principal…

3 weeks hace

Instalar QEMU/KVM y Virtual Machine Manager

Cuando se trata de virtualización en el escritorio, una de las primeras opciones son sin…

1 month hace

Instalar adaptador WIFI TP-Link AX 1800/ Archer TX20U en Debian y Ubuntu

Siempre he sido un ferviente defensor de una conexión por cable UTP para trabajar por…

2 months hace

Nuevo dominio para el blog, otra vez!!!

Al fin pude recuperar alvarodeleon.com, no es que lo hubiera perdido, fue peor, lo deje…

3 months hace