Thursday, March 19, 2009

Copiar via ssh un archivo o directorio comprimiendo al vuelo con bzip2

Este metodo es un poco distinto del anterior, ya que lo unico que se requiere es ssh, tar y bzip2 (no dependemos de rsync). Por supuesto, este metodo va comprimiendo cada archivo con bzip2, asi que es util para pasar backups de un server a otro sin gastar espacio para el backup

tar cjf - ./archivo | ssh "-oPort=1234" root@192.168.1.1 'cd /tmp && tar xjpvf -'

esto copia /archivo comprimiendo el envio via ssh a 192.168.1.1 en el directorio /tmp

o para copiar un directorio:

tar cjf - mydir/ | ssh "-oPort=1234" root@192.168.1.1 'cd /tmp && tar xjpvf -'

esto copia el directorio mydir comprimiendo el envio via ssh a 192.168.1.1 en el directorio /tmp

y ahora, quiza otra variante interesante sea comprimir un archivo o directorio y dejar el resultado comprimido en un tar en el host remoto:

tar cjf - ./archivo | ssh "-oPort=1234" root@192.168.1.1 'cd /tmp && cat - > ./archivo.tar.bz2'

o para un directorio:

tar cjf - directorio/ | ssh "-oPort=1234" root@192.168.1.1 'cd /tmp && cat - > ./directorio.tar.bz2'

Supongamos que tenemos un disco de 20 GB y tenemos 19.5 GB ocupados. Logicamente hacer un backup dentro de ese disco es imposible, asi que con el metodo que menciono arriba se comprimen los datos al vuelo y se envian al host remoto sin utilizar espacio en la maquina local.

Espero que resulte util.

No comments:

Followers

About me

Santa Fe, Argentina
Programador Web, PHP, MySQL, JQuery, Administrador Linux. LAMP, Lighttpd, Nginx.