Los casos de uso son variados según la necesidad, por ejemplo, tenemos una copia local de archivos fuente de un proyecto web, deseamos publicar las modificaciones en el servidor de producción. Este sería el más común (por lo menos en mi caso) de los escenarios.
La carpeta src dentro del server A (o pc de trabajo) puede tener archivos que no se necesiten subir, o carpetas que no debe porque matchear contra la que está en el servidor B, todo esto lo resuelve el rsync según la configuración utilizada.
Como dije antes, es un comando de Unix, es por esto que tenemos la ventaja de usar "la bash" para generar un script
Especificación del comando
rsync {opciones} {conexión} {origen} {destino}
Opciones
- -v, --verbose Extender info
- -q, --quiet Suprimir información que no sean errores
- -c, --checksum utilizar solo el checksum para evaluar la comparación de archivos
- -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
- -r, --recursive recursivo dentro de directorios
- -b, --backup realizar un backup (ver --suffix & --backup-dir)
- --backup-dir=DIR realizar backup dentro de DIR
- --suffix=SUFFIX backup suffix (default ~ w/o --backup-dir)
- -p, --perms preservar permissions
- -E, --executability preservar executability
- -o, --owner preservar owner (super-user only)
- -g, --group preservar group
- -t, --times preservar modification times
- -n, --dry-run Realizar una corrida en seco, excelente para poder probar si lo que hacemos es lo que necesitamos.
- -z, --compress comprimir durante la transferencia
- --compress-level=NUM compression level
- -f, --filter=RULE Necesario al momento de realizar exclusiones (por ejemplo, carpetas .svn, archivos .project, etc)
- --exclude=PATTERN matching PATTERN
- --exclude-from=FILE Desde un archivo "FILE"
- --include=PATTERN inverso al exclude
- --include-from=FILE inverso exclude-from
- --files-from=FILE inverso files-from
- -h, --human-readable En formato legible por humanos
- --progress Mostrar el progreso (esto genera mucha suciedad al momento de ver el log)
- -4, --ipv4 preferir uso de IPv4
- -6, --ipv6 preferir uso de IPv6
- --delete borrar archivos del destino que no macheen
Yo particularmente utilizo la configuración: -avz con eso basta para transferir los archivos de una carpeta a otra.
Script para bash:
#!/bin/bash
HOME=/home/usuario/carpeta/src/
DEST=/var/www/sitio/src/
rsync -avz --delete --exclude=.svn --exclude=Thumbs.db $HOME $DEST
echo "Done"
En los casos donde deba copiar por ssh al servidor de destino:
#!/bin/bash
HOME=/home/usuario/carpeta/src/
DEST=usuario@ip_destino_o_direccion:/var/www/sitio/src/
rsync -avz --delete --exclude=.svn --exclude=Thumbs.db $HOME $DEST
echo "Done"
Luego podemos combinar opciones del ssh (como por ejemplo obtener el password para conectarse desde un archivo) para incrementar los usos de ambas herramientas según nuestra necesidad.
No hay comentarios:
Publicar un comentario