Tengo acceso SSH (usando un par de claves SSH) a una máquina remota. Quiero mantener un directorio en la máquina remota exactamente igual a un directorio local determinado (sincronización unidireccional). La verificación de la igualdad de archivos debe realizarse en función de un hash del contenido del archivo binario (no del tamaño/fecha).
- ¿Cuál es el comando rsync correcto para hacer eso (no el servicio rsync)?
- ¿Cómo se manejan los permisos de archivos?
- ¿Cómo se manejan las fechas de modificación de archivos?
- ¿Cómo reacciona rsync ante fallas y cuál es el código de salida?
Respuesta1
Rsync verifica el contenido del archivo, no la fecha y/o el tamaño del archivo. Si los contenidos son diferentes pero tienen la misma ruta y nombre, el archivo se sobrescribirá.
La sintaxis de rsync es rsync options source destination
la siguiente: si desea mantener un directorio remoto sincronizado con uno local, esto debería funcionar:
rsync -azh local_folder user@remote_server:/path/to/destination/
Si desea utilizar SSH como protocolo de transferencia, esto funciona para mí:
rsync -azhe ssh local_folder user@remote_server:/path/to/destination
¿Cómo se manejan los permisos de archivos? ¿Cómo se manejan las fechas de modificación de archivos?
El a
parámetro conserva enlaces simbólicos, permisos de archivos, marcas de tiempo... si no desea transferir esta información, simplemente exclúyala del comando, será propiedad del usuario con el que inició sesión SSH.
¿Cómo reacciona rsync ante fallas y cuál es el código de salida?
La mayoría de los comandos/programas devuelven 0 cuando tienen éxito y cualquier otro número en caso de error.Aquí hay una lista de códigos de salida de rsyncpara referencia