Las bondades de la consola son infinitas, algo que los winboys desconocen, pero bueno no vamos ahora a contarles nada nuevo, sobre todo después de tantos años quienes pretenden administar seriamente un departamento de IT o se cuelguen el cartelito de experto en estas labores o se convirtieron a Linux o siguen sufriendo :P
Pero bueno, vamos a lo que nos compete.
Tengo en un ambiente de desarrollo un sitio web y quiero tener sincronizado el servidor de producción con el ambiente de desarrollo.
La primera es copiar y reescribir todo, pero bueno, sincronizar no es esta brutalidad de copiar y pisar todo, sino, agregar lo nuevo, reemplazar solo lo necesario y quitar lo que no va.
entonces con esta simple linea en la consola haremos lo siguiente:
conectarnos via ssh a nuestro server de produccion
copiar con rsync desde la carpeta origen a la carpeta destino
agregar los archivos nuevos
actualizar solo los que fueron modificados
eliminar de la carpeta destino los que ya no estan en la carpeta origen
en la practica:
Comando y parámetros
Lo primero que necesitamos es acceso vía SSH al equipo remoto. Puede ser por clave pública o con usuario y contraseña. Luego nos ubicamos en la carpeta que queremos respaldar y ejecutamos el comando:
$ rsync -ravz /directorio/subdir/origen/
usuario@IP:
/directorio/subdir/destino/
Donde:
- r: recorre los directorios de manera recursiva
- a: conserva los atributos de los archivos (usuario, permisos, etc)
- v: imprime información en pantalla
- z: comprime los datos antes de enviar
Notar que tanto origen/ y destino/ tienen una barra al final / porque sin esta barra se pueden copiar un directorio dentro de otro existente por ejemplo. Entonces para asegurarnos que se va a trabajar dentro de los directorios que deseamos tenemos que usar la barra al final.
Si agregamos el parametro --delete borrara del destino todo lo que no se encuentre en origen.
Ej.
$ rsync -ravz --delete /directorio/subdir/origen/
usuario@IP:
/directorio/subdir/destino/
A jugar.