Respaldos usando rsync
y scp
1. ¿Por qué las copias de seguridad son importantes?
Hoy vamos a hablar de una de las tareas más importantes para todos los que trabajan en el mundo de IT y la programación: hacer copias de seguridad. Si alguna vez perdiste datos importantes por un fallo en el disco o un error humano, entiendes lo crítico que puede ser. Y si aún no te pasó, estamos aquí para ayudarte a prevenirlo.
Imagínate: has trabajado en un proyecto durante meses y, de pronto, un día tu disco duro decide declararse en huelga. Sí, es tan frustrante como olvidar poner un punto y coma al final de una consulta SQL, solo que mil veces peor. Los sistemas no siempre son fiables, las personas cometen errores y los archivos se pierden. Las copias de seguridad te ayudan a estar preparado para esos sustos inesperados.
En Linux, hay varias herramientas potentes para realizar copias de seguridad. Hoy conoceremos dos de ellas: rsync
y scp
.
2. El comando rsync
: una herramienta rápida e inteligente para copiar datos
rsync
es una de las herramientas más populares para copiar y sincronizar datos. Su principal fuerza está en la velocidad y eficiencia. En lugar de copiar todo, rsync
copia solo los archivos que han cambiado. Esto lo hace perfecto para realizar copias de seguridad regulares de grandes volúmenes de datos.
Sintaxis de rsync
Este es el formato básico del comando:
rsync [opciones] fuente destino
Dónde:
fuente
— la ruta al archivo o carpeta que quieres copiar.destino
— el lugar donde quieres enviar los datos.
Principales flags y sus funciones
Aquí tienes algunas opciones comunes:
-a
(archive): incluye la copia de todos los metadatos (permisos, marcas de tiempo, etc.).-v
(verbose): muestra un output detallado para que sepas qué está pasando.--progress
: indica el progreso de la copia (muy útil si estás copiando archivos grandes).--delete
: elimina en el destino los archivos que ya no están en el origen. Útil para sincronización completa.-z
(compress): comprime los datos antes de transferirlos, acelerando el proceso (especialmente en operaciones en red).
Ejemplo: copia local de datos
Vamos a crear el directorio /backup
para guardar las copias de seguridad.
mkdir /backup
Copiamos todo el contenido del directorio /home
a /backup
:
rsync -av /home /backup
Analicemos este ejemplo:
-a
conserva la estructura y los permisos de los archivos.-v
proporciona información sobre el progreso.
Si ejecutas el comando nuevamente, solo copiará los archivos modificados o nuevos.
Ejemplo: copia de seguridad remota
Ahora supongamos que quieres enviar una copia de seguridad a un servidor remoto. Para esto, rsync
admite el uso de SSH.
rsync -av /backup user@remote_server:/remote_backup
Dónde:
user
— el nombre del usuario en el servidor remoto.remote_server
— la dirección de tu servidor remoto (por ejemplo, IP o nombre de dominio)./remote_backup
— la ruta en el servidor donde quieres guardar los datos.
Si tienes una clave SSH para la autenticación, la transferencia será aún más sencilla (y segura).
3. Comando scp
: simple y eficiente
scp
(Secure Copy Protocol) — es una herramienta para copiar archivos entre una máquina local y una remota. Es un poco más simple que rsync
y es adecuada para casos donde no se necesita una sincronización completa.
Sintaxis de scp
Así es cómo se ve el formato básico del comando:
scp [opciones] origen destino
Dónde:
origen
— la ruta al archivo que quieres copiar.destino
— la dirección donde se debe entregar.
Principales opciones y sus funciones
Algunas opciones útiles:
-r
: copia recursiva para carpetas.-C
: comprime archivos antes de transferirlos.-P
: especifica el puerto SSH si es diferente del estándar (22).
Ejemplo: copiar un archivo a una máquina remota
Quieres transferir archivos desde tu ordenador local al servidor. Supongamos que el archivo se llama document.txt
.
scp document.txt user@remote_server:/remote_folder
Si el archivo está en la carpeta /home/user/documents
, el comando se verá así:
scp /home/user/documents/document.txt user@remote_server:/remote_folder
Ahora el archivo estará disponible en la máquina remota en la carpeta /remote_folder
.
Ejemplo: copiar archivos desde el servidor a la máquina local
El proceso funciona a la inversa:
scp user@remote_server:/remote_folder/document.txt /home/user/documents
En este caso, el archivo document.txt
estará en tu carpeta local.
4. Diferencias entre rsync
y scp
Aunque ambos comandos permiten copiar archivos, tienen sus propias particularidades.
Particularidad | rsync | scp |
---|---|---|
Velocidad | Solo los datos modificados, más rápido para grandes volúmenes | Copia todo, incluso si el archivo no ha cambiado |
Sincronización | Soporte completo de sincronización | No soporta sincronización |
Compresión de datos | Existe -z |
Existe -C |
Facilidad de uso | Más difícil de configurar | Interfaz sencilla |
Entonces, si solo necesitas transferir un archivo rápidamente, usa scp
. Si se trata de sincronización regular y grandes volúmenes de datos, definitivamente rsync
.
5. Ejemplo real: configuración del respaldo
Aquí hay una tarea práctica: quieres configurar un proceso completo de respaldo de tu proyecto en un servidor remoto.
Supongamos que los archivos de tu proyecto están en la carpeta
/home/user/project
. Quieres que se respalden en el servidorbackup.server.com
en la carpeta/backups/project
.Para que la copia sea más rápida, vamos a usar
rsync
.
Configuración del script de respaldo
Crea un archivo backup.sh
:
#!/bin/bash
SOURCE="/home/user/project"
DESTINATION="user@backup.server.com:/backups/project"
# Realizamos el respaldo usando rsync
rsync -av --delete "$SOURCE" "$DESTINATION"
# Mostramos un mensaje al finalizar
echo "¡Respaldo completado!"
Haz que el archivo sea ejecutable:
chmod +x backup.sh
Ahora puedes ejecutar este script manualmente:
./backup.sh
O agregarlo a cron
para que se ejecute automáticamente (hablaremos de cron más adelante en el curso).
6. Errores típicos y cómo evitarlos
Rutas incorrectas en la línea de comandos. Si pones una ruta incorrecta a los archivos,
rsync
oscp
no copiarán nada. Usa los comandosls
opwd
para asegurarte de que las rutas sean correctas.Falta de clave de autorización. Si al usar SSH no tienes configurada una clave, constantemente te pedirá la contraseña. Configura tus claves SSH para simplificar el proceso.
Interrupción del proceso de copia. Si la red es inestable,
rsync
continuará la transmisión en el próximo intento. Pero conscp
tendrás que empezar de nuevo.
Con rsync
y scp
podrás copiar y sincronizar tus datos de manera confiable tanto en tu computadora local como en servidores remotos. Estas herramientas son tus aliadas de confianza cuando necesitas proteger archivos importantes.
GO TO FULL VERSION