
¿Cuáles son los rsync
comandos equivalentes a mv
/a/b/ /c/d/, es decir, para mover un árbol de directorios de una ubicación a otra, posiblemente en otro sistema de archivos?
Es decir, no sólo copiar, sino eliminar los archivos de la ubicación original. La razón por la que quiero usarlo rsync
es que quiero poder reanudar un movimiento parcial y limitar el uso del ancho de banda.
Respuesta1
Este comando sincronizará todos los archivos desde /a/b a /c/d, preservará permisos, fechas de modificación, enlaces simbólicos y recurrirá a directorios ('-a' o '--archive' hace todo eso, es lo mismo que usar '-rlptgoD', que son opciones separadas para todo eso), -v es para detallado y '--remove-source-files' eliminará los archivos fuente una vez que se hayan creado completamente en el destino.
Si el directorio d dentro de /c/ no existe, se creará.
rsync -av --remove-source-files /a/b /c/d
Si desea pasar al servidor remoto, esto se sincronizará con la ruta del servidor remoto, '-z' comprimirá los datos del archivo durante la transferencia.
rsync -avz --remove-source-files /a/b user@hostname_or_ip:/c/d
Los directorios no se eliminarán mediante '--remove-source-files', por lo que debe ejecutar rm -rf /a/b después de rsync para eliminar todos los directorios dentro de /a/b/
En un comando de una línea puedes ponerlo todo así.
rsync -av --remove-source-files /a/b /c/d; if find /a/b/ -type f | read; then echo "Not all files were synced"; else rm -rf /a/b; fi
Esto ejecutará rsync, luego verificará si quedan archivos para evitar que se elimine la carpeta si algunos archivos no se sincronizaron completamente y, por lo tanto, no se eliminaron, y luego imprimirá que no todos los archivos se sincronizaron o eliminará la carpeta si hay. No hay archivos en él.