Podrías pensar que scp solo podría hacer un buen trabajo, pero sin compresión podrías estar desperdiciando ancho de banda y tiempo (hablando de copiar sistemas de archivos de cientos de gigabytes entre servidores lejanos uno del otro). Pero si tienes mucho espacio en disco disponible, por qué no comprimir el sistema de archivos primero y después transferirlo? Bueno, porque comprimir grandes sistemas de archivos requiere mucho tiempo y la entrada/salida de tu disco es severamente degradada (el servidor lee un archivo e intenta escribirlo comprimido al mismo tiempo); podrías volver tu servidor prácticamente inusable mientras comprimes archivos grandes, por lo menos en AIX.
Pero puedes hacer un respaldo, comprimirlo y enviarlo al otro servidor, descomprimirlo y escribir sólo los archivos que quieres transferir (sin escribir archivos comprimidos en disco), comprimiéndolos al vuelo con tuberías. Para esto, puedes escribir este pequeño script y ponerlo en un directorio apropiado en el servidor origen:
tar -cf - $1 | compress -c
Entonces si nombraste este script mycompressedtar por ejemplo, puedes transferir archivos o directorios a tu servidor destino de esta manera:
otheruser@targetsrv> ssh -l myuser sourcesrv /path/mycompressedtar /some/dir | uncompress -c | tar -xf -
Si lanzas este comando en tu servidor destino, copiarás /some/dir del servidor origen al directorio donde estabas en el momento de la ejecución; por supuesto tienes que tener acceso a /some/dir con la cuenta myuser.
Pero algunas veces tienes pocos archivos pero muy grandes (como datafiles de Oracle), y no puedes transferirlos con tar sin obtener un error en AIX; en ese caso puedes sólo transferir archivo por archivo con este pequeño script:
cat $1 | compress -c
Entonces si nombras este script mycompress por ejemplo, puedes copiar un archivo a tu servidor destino de esta forma:
otheruser@targetsrv> ssh -l myuser sourcesrv /path/mycompress /some/file | uncompress -c > somefile
Si ejecutas este comando en tu servidor destino, copiarás file del servidor origen al directorio donde estés al momento de la ejecución y se llamará somefile; puedes usar el mismo nombre del archivo origen o uno diferente.
Pero estamos hablando acerca de servidores diferentes, y los archivos son tan valiosos que no podemos darnos el lujo de cambiar un solo byte. Cómo podemos estar seguros de que los archivos son exactamente iguales? En AIX, puedes usar el comando cksum:
myuser@sourcesrv> cksum myfile.txt
1656934735 2229 myfile.txt
===================================
otheruser@targetsrv> cksum myfile.txt
1656934735 2229 myfile.txt
De esta manera estarás seguro que ambos archivos son iguasles.
Más información:
cksum Command
No hay comentarios.:
Publicar un comentario