¿Cómo hacer un respaldo de sus archivos a través de SSH?

Actualizado el 24 de octubre, 2016. Por BlueHosting.

Hacer un respaldo de sus datos personales o de su sitio web es una buena práctica que ayuda a asegurar que su sitio web esté protegido en caso de algún inconveniente. Hay varias formas de hacer un respaldo de datos. En este tutorial abordamos cómo hacerlo utilizando su consola de acceso Secure SHell SSH a través de dos comandos nativos de Linux: cp y tar.

Seleccionar el directorio de respaldo

El primer paso es asegurarse de que su servidor tiene habilitada la opción para acceso SSH. Los detalles para el acceso podrá encontrarlos en la pestaña Accesos de su panel de administración de BlueHosting.

Una vez conectado, puede comenzar con el respaldo de sus archivos:

Inicie sesión en su servidor con las credenciales apropiadas y diríjase al directorio cuyo contenido desea respaldar, puede seguir los consejos a continuación como apoyo:

  1. Para comprobar en qué directorio se encuentra actualmente ejecute:

    pwd
    

    Se mostrará el directorio de trabajo actual, si no ha cambiado de directorio, lo más probable es que se encuentre en el directorio home del usuario con el que inició sesión; en nuestro ejemplo:

    /home/johel
    
  2. Para mostrar los archivos en dicho directorio puede utilizar el comando ls. Si lo usa sin ningún argumento se mostrará una lista simple de los archivos en el directorio. Podemos jugar con las opciones de este comando para obtener una lista más completa, por ejemplo si usamos ls -lath obtendremos una lista completa de los archivos —sin excluir archivos ocultos que comienzan con punto (.)— ordenados por fecha de modificación, e incluyendo otros datos como los permisos y el tamaño de los archivos en formato legible. En nuestro ejemplo obtuvimos:

    total 88K
    drwx------  6 johelbs johelbs 4.0K Oct 24 15:58 .
    -rw-rw-r--  1 johelbs johelbs  42K Oct 24 15:58 datos.txt
    drwxrwxr-x  2 johelbs johelbs 4.0K Oct 24 15:56 personal
    drwxrwxr-x  2 johelbs johelbs 4.0K Oct 24 15:56 otros
    drwxrwxr-x  2 johelbs johelbs 4.0K Oct 24 15:56 contenido
    drwxrwxr-x  3 johelbs johelbs 4.0K Oct 24 15:56 public_html
    -rw-------  1 johelbs johelbs  441 Oct 24 12:56 .bash_history
    drwxr-xr-x. 6 root    root    4.0K Oct 24 11:23 ..
    -rw-r--r--  1 johelbs johelbs   18 Aug  2 12:00 .bash_logout
    -rw-r--r--  1 johelbs johelbs  193 Aug  2 12:00 .bash_profile
    -rw-r--r--  1 johelbs johelbs  231 Aug  2 12:00 .bashrc
    -rw-r--r--  1 johelbs johelbs  658 Jun 23 15:15 .zshrc
    
  3. Si el directorio de interés para el respaldo es public_html podemos cambiar a ese directorio usando:

    cd public_html
    
  4. Suponiendo que nos interesa respaldar el directorio ejemplo.com, contenido en public_html, cambiemos a ese directorio y listemos los archivos allí contenidos:

    cd ejemplo.com
    ls
    

    En nuestro ejemplo tenemos:

    css  imagenes  index.html  javascript  productos.html  servicios.html  videos
    
  5. Una vez que seleccione el directorio que desea respaldar continúe con alguna de las opciones de respaldo mostradas a continuación.

Respaldar un archivo/directorio usando tar

El comando tar de GNU constituye una potente herramienta para agrupar archivos y subdirectorios en un archivo compreso. En este tutorial no se aborda una explicación detallada del comando y simplemente se recomienda el uso de este comando para crear un archivo con formato .tar.gz.

Una vez que se encuentra en el directorio deseado puede ejecutar:

tar -zcvf respaldo.tar.gz .

En este caso el nombre asignado al archivo de respaldo es respaldo.tar.gz y estará guardado dentro del mismo directorio actual. El punto (.) al final del comando se refiere a que estamos respaldando el directorio actual. Por lo tanto es equivalente utilizar:

tar -zcvf respaldo.tar.gz /home/johelbs/public_html/ejemplo.com

Puede cambiar el nombre asignado (respaldo), pero debe mantener la extensión .tar.gz —también podría usar .tar.Z—. Este archivo contendrá todos los archivos y subdirectorios ubicados dentro del directorio al momento de crear el respaldo.

Veamos de nuevo el contenido del directorio ejemplo.com:

css       index.html  productos.html   servicios.html
imagenes  javascript  respaldo.tar.gz  videos

Podemos observar que se ha creado el archivo de respaldo correctamente. Puede mover el archivo a otro directorio utilizando el comando mv:

mv respaldo.tar.gz /directorio_de_destino

Si quiere descomprimir el contenido del archivo en el nuevo directorio utilice el siguiente comando:

Nota importante: la ejecución del siguiente comando es definitiva, si descomprime el contenido en el mismo directorio donde se encontraban los archivos antiguos, todo el contenido actual se sustituirá por lo guardado en el archivo de respaldo.

tar -zxvf respaldo.tar.gz

También recomendamos utilizar algún cliente FTP como FileZilla para descargar el respaldo y guardarlo en su computador local o en alguna otra ubicación.

Respaldar un archivo o directorio usando cp

El comando cp crea una copia de un archivo o directorio según se especifique. Normalmente, los administradores de linux utilizamos la extensión .bak para identificar las copias de archivos que se corresponden con un respaldo o backup.

Digamos que queremos guardar una copia del archivo public.html en el mismo directorio. Podemos identificar la copia de respaldo como public.bak ejecutando lo siguiente:

cp index.html index.bak

También podríamos crear un nuevo directorio de respaldos y utilizarlo para este fin:

mkdir respaldos
cp index.html respaldos/index.bak

Además, podemos hacer copias recursivas (todos los archivos y subdirectorios contenidos) del directorio actual. Por ejemplo, hagamos una copia de todo el contenido del directorio /home/johel/public_html/ejemplo.com en el directorio /home/johel/respaldos:

cp -R /home/johel/public_html/ejemplo.com /home/johel/respaldos

Una alternativa que ofrece el comando cp para proteger la creación de respaldos es el uso del parámetro --backup. Al utilizar esta opción prevenimos que se sobrescriba el archivo si este ya existe; por ejemplo: si tratamos de crear el archivo index.bak del paso anterior y agregamos el parámetro --backup se creará un nuevo archivo index.bak y el antiguo quedará bajo el nombre index.bak~:

cp --backup index.html index.bak

Lo podemos comprobar usando ls -lath:

-rw-rw-r-- 1 johelbs johelbs  34K Oct 24 17:44 index.bak
-rw-rw-r-- 1 johelbs johelbs  34K Oct 24 17:07 index.bak~

Esta segunda opción de cp es más útil si desea guardar copias de respaldo de archivos específicos dentro del servidor. Por ejemplo: si realizará cambios importantes en el archivo de configuración de Apache es recomendable que utilice, por ejemplo:

cp apache2.conf apache2.bak

Si algo sale mal después de hacer los cambios y el reinicio del servidor Apache, aún tendrá disponible un archivo apache2.bak con su antigua configuración.

Recursos adicionales

Para complementar la información aquí presentada puede consultar los siguientes recursos. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos certificar su actualidad o precisión.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...