{"id":163,"date":"2026-02-12T07:48:51","date_gmt":"2026-02-12T11:48:51","guid":{"rendered":"https:\/\/juredev.com\/blog\/?p=163"},"modified":"2026-02-16T10:22:27","modified_gmt":"2026-02-16T14:22:27","slug":"vale-la-pena-cambiar-rsync-por-rclone","status":"publish","type":"post","link":"https:\/\/juredev.com\/blog\/2026\/02\/vale-la-pena-cambiar-rsync-por-rclone\/","title":{"rendered":"\u00bfVale la pena cambiar rsync por rclone? Mi experiencia real en entornos de verdad"},"content":{"rendered":"\n<p>Durante muchos a\u00f1os <strong>rsync <\/strong>ha sido mi herramienta por defecto en Linux para casi todo: backups, despliegues, sincronizaciones entre servidores, migraciones\u2026 Es s\u00f3lida, predecible y muy dif\u00edcil de romper. La mayor\u00eda de sysadmins la tenemos la primera opci\u00f3n para utilizar.<\/p>\n\n\n\n<p>Pero en los \u00faltimos tiempos, trabajando con vol\u00famenes cada vez m\u00e1s grandes \u2014sobre todo cuando el destino es almacenamiento en la nube\u2014, empec\u00e9 a notar que las sincronizaciones tardaban m\u00e1s de lo razonable. No era por falta de ancho de banda ni por CPU saturada\u2026 era simplemente el modelo de ejecuci\u00f3n de <strong>rsync <\/strong>el que empezaba a sufrir.<\/p>\n\n\n\n<p>Ah\u00ed fue cuando decid\u00ed darle una oportunidad seria a <strong>rclone<\/strong>.<\/p>\n\n\n\n<p>Esta nota no va de enterrar <strong>rsync <\/strong>ni de decir que \u00ab<strong>rclone es el futuro y ya<\/strong>\u00ab. Es m\u00e1s bien una reflexi\u00f3n honesta, desde la trinchera, sobre en qu\u00e9 casos <strong>rclone <\/strong>me ha dado una mejora real y en cu\u00e1les sigo prefiriendo <strong>rsync <\/strong>sin dudarlo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El tal\u00f3n de Aquiles de rsync (en algunos escenarios concretos)<\/h2>\n\n\n\n<p><strong>rsync <\/strong>es imbatible en lo que fue dise\u00f1ado para hacer:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Transferencia diferencial por bloques (solo env\u00eda lo que cambi\u00f3 dentro del archivo).<\/li>\n\n\n\n<li>Preservaci\u00f3n casi perfecta de permisos, ACLs, atributos extendidos, hardlinks\u2026<\/li>\n\n\n\n<li>Replicaci\u00f3n muy fiel en entornos POSIX.<\/li>\n\n\n\n<li>Sincronizaci\u00f3n eficiente cuando hay pocos archivos grandes con cambios peque\u00f1os.<\/li>\n<\/ul>\n\n\n\n<p>Pero hay un detalle clave en su arquitectura: carga toda la lista de archivos en memoria (tanto del origen como del destino) y luego procesa la transferencia de manera b\u00e1sicamente secuencial, archivo por archivo. En \u00e1rboles de directorios peque\u00f1os o medianos esto no molesta. El problema aparece cuando tienes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Millones de archivos peque\u00f1os.<\/li>\n\n\n\n<li>Estructuras de directorios muy profundas.<\/li>\n\n\n\n<li>Latencia de red notable (incluso en enlaces r\u00e1pidos).<\/li>\n\n\n\n<li>Conexiones de alta capacidad (10 Gbps o m\u00e1s).<\/li>\n<\/ul>\n\n\n\n<p>En esos casos, el tiempo que se va en recorrer metadatos, hacer stat(), comparar checksums y gestionar cada archivo individualmente empieza a pesar m\u00e1s que la propia transferencia de datos. El enlace de red se queda medio vac\u00edo, los discos no van al l\u00edmite\u2026 simplemente la herramienta no escala tan bien como podr\u00eda.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 trae rclone a la mesa (y por qu\u00e9 cambia el juego)<\/h2>\n\n\n\n<p><strong>rclone <\/strong>naci\u00f3 pensando en almacenamiento de objetos (S3, Google Cloud Storage, Backblaze B2, etc.), pero tambi\u00e9n funciona perfectamente entre rutas locales o con backends como SFTP, WebDAV, etc.La gran diferencia no es que sea \u201cm\u00e1s nuevo\u201d o tenga un algoritmo m\u00e1gico. Es que desde el dise\u00f1o est\u00e1 pensado para paralelismo configurable.<\/p>\n\n\n\n<p>Por defecto ya hace varias transferencias simult\u00e1neas, y puedes subir o bajar el n\u00famero seg\u00fan necesites:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rclone sync \/data remoto:backup \\\n  --transfers 16 \\\n  --checkers 32 \\\n  --progress<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#8211;transfers &#8211;> cu\u00e1ntos archivos se copian en paralelo.<\/li>\n\n\n\n<li>&#8211;checkers &#8211;> cu\u00e1ntos hilos comparan origen vs destino (muy \u00fatil cuando hay millones de archivos).<\/li>\n<\/ul>\n\n\n\n<p>En datasets con muchos ficheros peque\u00f1os la diferencia es brutal. En mi caso, sincronizando varios millones de objetos hacia almacenamiento remoto, el tiempo total se qued\u00f3 en menos de la mitad solo con ajustar el paralelismo. No porque el algoritmo sea \u201cmejor\u201d en teor\u00eda, sino porque aprovecha mucho mejor la CPU, los discos y la red disponibles hoy en d\u00eda.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comparativa r\u00e1pida y sin fanatismos<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Aspecto<\/th><th>rsync<\/th><th>rclone<\/th><\/tr><\/thead><tbody><tr><td>Transferencia diferencial (solo deltas)<\/td><td>S\u00ed<\/td><td>No (copia archivo completo)<\/td><\/tr><tr><td>Paralelismo nativo<\/td><td>No (secuencial por defecto)<\/td><td>S\u00ed (configurable)<\/td><\/tr><tr><td>Preservaci\u00f3n completa POSIX (ACLs, xattrs, hardlinks)<\/td><td>Excelente<\/td><td>Limitada \/ parcial<\/td><\/tr><tr><td>Integraci\u00f3n nativa con proveedores cloud<\/td><td>B\u00e1sica (v\u00eda fuse o s3fs)<\/td><td>Excelente (muchos backends)<\/td><\/tr><tr><td>Escala bien con millones de archivos peque\u00f1os<\/td><td>Regular \/ sufre<\/td><td>Muy bien<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Esto deja claro lo principal: no son herramientas que hagan exactamente lo mismo. Son complementarias m\u00e1s que enemigas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Escenarios donde rsync sigue siendo mi primera opci\u00f3n<\/h2>\n\n\n\n<p>Hay casos en los que no se me ocurrir\u00eda cambiar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Backups bare-metal o clonado fiel de servidores enteros.<\/li>\n\n\n\n<li>Necesidad estricta de preservar ACLs, atributos extendidos, hardlinks\u2026<\/li>\n\n\n\n<li>Sincronizaciones donde solo cambian partes peque\u00f1as de archivos grandes (logs rotados, bases de datos con appends, etc.).<\/li>\n<\/ul>\n\n\n\n<p>Aqu\u00ed el algoritmo delta de <strong>rsync <\/strong>sigue siendo imbatible en consumo de ancho de banda y tiempo real.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00f3nde rclone me ha hecho ganar mucho tiempo<\/h2>\n\n\n\n<p>Lo elijo sin pensarlo dos veces cuando:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El destino es un bucket S3, GCS, Azure Blob, B2\u2026<\/li>\n\n\n\n<li>Tengo millones (o cientos de miles) de objetos\/archivos peque\u00f1os.<\/li>\n\n\n\n<li>La ventana de backup o migraci\u00f3n es cr\u00edtica.<\/li>\n\n\n\n<li>Quiero saturar de verdad un enlace de 10 Gbps o superior.<\/li>\n<\/ul>\n\n\n\n<p>Tambi\u00e9n es la opci\u00f3n l\u00f3gica cuando el cuello de botella real no es la red, sino el procesamiento secuencial de la herramienta que est\u00e1s usando.<\/p>\n\n\n\n<p>Ojo: subir mucho &#8211;transfers sin medir puede saturar discos HDD, disparar IOPS en bases de datos o incluso hacer que el sistema se vuelva inestable. Siempre hay que probar con n\u00fameros razonables seg\u00fan el hardware (8\u201316\u201332 suele ser un buen rango de prueba).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lo que me llevo despu\u00e9s de usar ambos a diario<\/h2>\n\n\n\n<p>La conclusi\u00f3n m\u00e1s honesta que saqu\u00e9 es que no se trata de moderno vs cl\u00e1sico. Se trata de arquitectura y tipo de workload.<\/p>\n\n\n\n<p><strong>rsync <\/strong>sigue siendo una herramienta brutalmente buena dentro de su nicho. <strong>rclone <\/strong>simplemente encaja mejor en infraestructuras cloud-native y en datasets masivos con mucha concurrencia.<\/p>\n\n\n\n<p>En mi d\u00eda a d\u00eda ya no uso rsync para todo. Sigo tirando de \u00e9l para tareas donde la fidelidad POSIX absoluta es imprescindible (clonados de servidores, copias locales cr\u00edticas, etc.). Pero para sincronizaciones grandes hacia la nube o buckets remotos, <strong>rclone <\/strong>se ha convertido en mi opci\u00f3n por defecto.<\/p>\n\n\n\n<p>Si est\u00e1s empezando a lidiar con vol\u00famenes grandes o con almacenamiento cloud, te recomiendo hacer la prueba t\u00fa mismo:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Elige un dataset representativo de tu entorno.<\/li>\n\n\n\n<li>Mide rsync con las opciones que m\u00e1s sueles usar (-aHAX &#8211;info=progress2 por ejemplo).<\/li>\n\n\n\n<li>Prueba rclone con &#8211;transfers 8..32, &#8211;checkers 16..64 y &#8211;fast-list si el backend lo soporta.<\/li>\n\n\n\n<li>Compara tiempos reales y saturaci\u00f3n de red\/CPU\/disco.<\/li>\n<\/ol>\n\n\n\n<p>Muchas veces la respuesta no es \u201cuna herramienta gana siempre\u201d, sino \u201cesta me ahorra 3\u20134 horas cada noche\u2026 pues ya se que voy a usar\u201d.<\/p>\n\n\n\n<p>\u00a1Gracias por llegar hasta aqu\u00ed! Sigamos administrando.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Durante muchos a\u00f1os rsync ha sido mi herramienta por defecto en Linux para casi todo: backups, despliegues, sincronizaciones entre servidores, migraciones\u2026 Es s\u00f3lida, predecible y muy dif\u00edcil de romper. La mayor\u00eda de sysadmins la tenemos la primera opci\u00f3n para utilizar. Pero en los \u00faltimos tiempos, trabajando con vol\u00famenes cada vez m\u00e1s grandes \u2014sobre todo cuando [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[24],"class_list":["post-163","post","type-post","status-publish","format-standard","hentry","category-nota","tag-linux"],"_links":{"self":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts\/163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/comments?post=163"}],"version-history":[{"count":0,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts\/163\/revisions"}],"wp:attachment":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/media?parent=163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/categories?post=163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/tags?post=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}