2 de jul. 2010

Copiar Archivos por red entre maquina linux, ssh, mover ficheros o directorios entre servidores

http://www.profesionalhosting.com/soporte-en-linea/mover-directorios-o-ficheros-entre-servidores-preg212.html


Con Linux podemos copiar archivos entre máquinas conectadas, ya sea en una red local o en Internet, sin necesidad de configurar un servidor de NFS o Samba. En este truco explico brevemente como usar 2 instrucciones que nos pueden facilitar la vida: scp y rsync

Página1/1

Estas dos utilidades vienen en cualquier distribución de linux y ambas funcionan usando ssh
scp

scp es un reemplazo del rcp, sus ventajas son que permite un nivel de seguridad mayor (ssh vs telnet) y que permite compresión de datos. La sintáxis de scp es muy sencilla
scp fichero_origen [otros_ficheros_a_copiar] fichero_destino

Es la misma que la del cp normal, ¿dónde está el truco? La gracia está en la forma de escribir los nombres de los ficheros, un nombre de fichero tiene la siguiente estructura:
[usuario@][maquina_remota:][directorio]nombre_del_fichero
Veamos ahora algún ejemplo:

Copiar el archivo local prueba en el directorio /tmp de la maquina test.bulma.net
scp prueba test.bulma.net:/tmp

Si la conexión es lenta y lo que trasmitimos es fácilmente comprimible podemos usar la opción -C
Copia un archivo texto.txt en el directorio /tmp de test.bulma.net usando el usuario pepe
scp -C texto.txt pepe@test.bulma.net:/tmp

También podemos usarlo para copiar directorios de forma recursiva con la opción -r
Copia el directorio /mnt/prueba y todo su contenido en el destino anterior
scp -r /mnt/prueba pepe@test.bulma.net:/tmp
rsync

rsync está diseñado para mantener sincronizados archivos y directorios ubicados en diferentes máquinas usando el mínimo de ancho de banda, aunque aumentamos el consumo de cpu en las dos máquinas implicadas en la transferencia. La idea a "grosso modo" es dividir el fichero en bloques, hacer una serie de operaciones con estos bloques (tipo md5) y comprobar las diferencias, en caso de que existan diferencias sólo se trasmiten estas. Un ejemplo de uso bastante práctico es cuando bajamos una imagen iso y al comprobar el checksum no nos coincide, en vez de volver a bajar la imagen completa nos conectamos al servidor rsync y "sincronizamos" nuestra imagen iso con la del servidor, más o menos en unos 20 minutos está hecho :) rsync es bastante más completo y complejo que scp y aquí sólo vamos a ver un par de ejemplos sencillos.

Comprobar si existe y copiar, a su vez borrar los que no existan en el origen y destino si.

================================
rsync -arzvl --delete prueba test@bulma.net:/tmp
================================

Copiar el archivo local prueba en el directorio /tmp de la maquina test.bulma.net
rsync prueba test.bulma.net:/tmp

Copia un archivo texto.txt en el directorio /tmp de test.bulma.net usando el usuario pepe y compresión de datos (opción -z)
rsync -z texto.txt pepe@test.bulma.net:/tmp

Copia el directorio /mnt/prueba y todo su contenido en el destino anterior
rsync -r /mnt/prueba pepe@test.bulma.net:/tmp

otra forma de escribirlo es
rsync /mnt/prueba/ pepe@test.bulma.net:/tmp

Mucho ojo, he escrito /mnt/prueba/ con / al final, si hubiese utilizado /mnt/prueba sólo habría copiado el directorio /mnt/prueba

rsync es muy práctico para realizar copias de seguridad, este comando realiza la copia del directorio local /home en la máquina copias.bulma.net usando el usuario backups, la opción --delete indica que los ficheros existentes en la copia que no estén en el original serán borrados, mucho ojo al usar esta opción, os recomiendo probar las opciones -n (modo simulado) y -v (o -vv verbose) antes de ejecutar el comando de forma definitiva.
La opción -a inidica que preserve los enlaces simbólicos y demás ficheros "extraños"
rsync -arzvv --delete /home backups@copias.bulma.net:/var/spool/copias

Últimas consideraciones, el uso de scp es mucho más rápido si no existen los ficheros que tenemos que copiar o si estos tienen un porcentaje de cambios muy elevado. Para evitar que nos pida el password cada vez podemos usar el programa ssh-agent o bien indicar un fichero de claves con la opcion -i en el caso de scp

Fuente: http://bulma.net/body.phtml?nIdNoticia=1267