He estado usando rsync para copiar archivos por algún tiempo. Tengo entendido que rsync es más rápido que cp cuando algunos de los archivos a transferir ya están en el directorio de destino, transfiriendo solo la diferencia incremental (es decir, los "deltas").
Si esto es correcto, ¿tendría alguna ventaja usar rsync para mover el contenido de una carpeta A , por ejemplo, una carpeta B , con B vacío?
La carpeta A tiene cerca de 1 TB de datos (y millones de archivos). La transferencia se realizaría a través de una red local ( A y B en diferentes sistemas de archivos, ambos montados en una supercomputadora, por ejemplo, A es NFS y B es lustre ).
Aparte de eso, ¿qué indicadores debo usar para pedirle a rsync que mueva (no copie) archivos de A a B (es decir, que elimine A cuando la transferencia haya finalizado con éxito)?

rsyncpueda reemplazarmv. Esperaríamvser más rápido en la mayoría de los tipos de sistemas de archivos cuando el origen y el destino están dentro del mismo sistema de archivos, yarsyncque tendría que hacer una copia sin importar qué, ymvprobablemente podría salirse con el cambio de algunas entradas de directorio. Lo más parecido que puedo encontrar a unrsync mves el--remove-source-filescomando, pero eso no elimina los directorios.mvmás rápido?mvno puede operar a través de una red; tendría que depender de un montaje local (por ejemplo, NFS). Si el cuello de botella es la red,rsyncprobablemente sería más rápido quemvporquersyncpuede hacer compresión.cptiene-ula opción de copiar el archivo de origen si es más reciente que el archivo de destino o cuando el archivo de destino no se encuentraRespuestas:
Puede pasar
--remove-source-filesa rsync para mover archivos en lugar de copiarlos.Pero en su caso, no tiene sentido usar rsync, ya que el destino está vacío. Un llano
mvhará el trabajo lo más rápido posible.En su caso, lo que podría marcar una diferencia en el rendimiento es la elección del protocolo de red, si tiene la opción de elegir entre NFS, Samba, sshfs, sftp, rsync sobre ssh, tar pipe en ssh, etc. La velocidad relativa de estos métodos depende en cuanto al tamaño de los archivos, la red y el ancho de banda del disco, y otros factores, por lo que no hay forma de dar consejos generales, deberá ejecutar sus propios puntos de referencia.
fuente
--remove-source-filessolo elimina los archivos en la fuente. si desea borrar nuestra fuente, ¿no tendría que hacer un rm -rf (ofindtodos los directorios y pasar-delete) en la fuente después de que rsync se ejecute correctamente?--checksumpara indicarle que verifique los resultados de la primera sincronización.Como
--remove-source-filesno elimina directorios, emito los siguientes comandos para mover archivos a través de ssh:Personalmente, me gusta la
--progressfunción, ya que hago esta transferencia manualmente. Elimínelo si está utilizando un script. Espero que ralentice las transferencias marginalmente. Lafindopción de eliminación del comando solo elimina directorios vacíos; no los userm -rf, ya que puede eliminar directorios no vacíos en caso de que no se transfiera un archivo. La-deleteopción activa la-depthopción para que los árboles de directorios vacíos se eliminen de "abajo" hacia arriba.fuente
-deletees mucho más agradable que-exec rmdir {} +etc.En general, como dijo Gilles, no hay ninguna ventaja en usar
rsyncpara mover archivos cuando semvhará el mismo trabajo de manera más simple y no hay una ganancia potencial de velocidad entre los sistemas de archivos normales.Sin embargo, hay ocasiones en que hay una ventaja. En particular, si tiene dudas sobre la estabilidad de la fuente, el destino o la máquina que realiza el trabajo, el uso
rsyncle brinda la capacidad de reanudar. Esto puede ser una ventaja notable si la transferencia es muy grande y, por ejemplo, su red eléctrica no es confiable. El uso de rsync será una forma más estable de evitar la corrupción de datos en caso de falla y continuar donde lo dejó.fuente
mvque solo es mejor si el destino y la fuente están en la misma partición, de modo quemvsolo edita los metadatos del archivo en lugar de hacer una copia.rsynclugar de mv es cuando quiero preservar la estructura de la carpeta (si la usa--relative).Me he encontrado en una situación en la que rsync ES más rápido que mv simplemente porque mv no puede manejar la cantidad de archivos en el directorio. Tengo 1,8 millones de fotos de una cámara de seguridad que funcionó durante 20 días y el comando mv sale con un error porque no puede asignar recursos.
Sin embargo, rsync parece manejar todos los archivos sin problemas.
fuente
Si desea fusionar directorios de forma recursiva ... mueva un directorio a otro directorio con nombres de directorio potencialmente duplicados , entonces vea mi respuesta aquí en serverfault.com.
mvhace un mal trabajo cuando existen directorios con el mismo nombre, yrsynccopia (leer + escribir datos completos) cada archivo en lugar de simplemente moverlos (leer y escribir solo metadatos).fuente
No hay forma de mover archivos usando rsync como lo haría el comando mv de Linux. Al usar --remove-source-files, esencialmente está copiando archivos al destino y luego eliminando archivos (excepto directorios) de la fuente. Esto puede lograr su propósito de mover archivos, pero NO ahorrará tiempo u operación de E / S.
fuente