Categorías
Curso WEB

Crear respaldos WEB con SSH y SFTP

¿Acaso eres de los que descargan el directorio de su sitio web a través de FileZilla?

¿Sabías que comprimir el archivo antes de descargarlo o subirlo te puede ahorrar horas de espera?

Hoy vas a aprender a hacer respaldos de tus sitios web (archivos y tablas) de forma rápida y sencilla con un para de simples comandos. Para facilitarte la vida y sobre todo ahorrarte mucho tiempo.

Este proceso es para todos aquellos que tengan acceso a UNIX a través de una conexión SSH

Lo que primero haremos es ingresar como root de otra forma tendremos que escribir sudo antes de cualquier comando que hagamos.

Para ello usaremos:

sudo su

Ahora que ya somos usuarios root vamos a crear una carpeta en nuestro servidor para meter ahí los respaldos. Puedes crearla donde se te de la gana, yo que tengo muchos sitios web y a fin de tenerlo más organizado lo hice en: /home/respaldos/goldwatches.top/30-jun-2021 creando un directorio con el nombre de la fecha que hago el respaldo, así sabré cuando lo hice

mkdir -p /home/respaldos/goldwatches.top/30-jun-2021

Ahora vamos a hacer un respaldo de la base de datos del sitio al que queremos respaldar. Esto lo podrías hacer fácilmente desde phpMyAdmin, pero ya que estamos con la terminal UNIX abierta lo haremos por aquí. Necesitarás saber el nombre de la base de datos, el usuario de acceso (puede ser root) y la contraseña de acceso a la base de datos

Podríamos hacerlo así:

cd /home/respaldos/goldwatches.top/30-jun-2021
mysqldump -u root -pcontraseña nombredelabasededatos > nombre_que_le_quieras_dar_al_archivo.sql

Por ejemplo:

cd /home/respaldos/goldwatches.top/30-jun-2021
mysqldump -u root -pcontraseña goldwatches.top > goldwatches.top-30-jun-2021.sql
crear respaldo de la base de datos del sitio web con ssh

El problema es que dejamos expuesta la contraseña. Por ello mejor usa el comando:

mysqldump -u root -p goldwatches.top > goldwatches.top-30-jun-2021.sql

Te pedirá que ingreses la contraseña pero esta no se verá.

Si quieres no tener que estar poniendo la contraseña, puedes intentar el siguiente método: vamos primero a crear un archivo .my.cnf y dentro del archivo pondremos el usuario y contraseña de la base de datos

cd /home
vi ~/.my.cnf

Ahora copia y pega remplazando el texto amarillo por la contraseña de acceso a la base de datos (del usuario root). Presiona i para activar modo de escritura, pega con Ctrl y clic derecho del ratón y pegar. Después para guardar el archivo con Esc :wq

[mysqldump]
user = root
password = contraseña-root


Después debes restringir el permiso para que ningún otro usuario lo pueda leer

chmod 600 ~/.my.cnf

Listo. Ahora ya no será necesario poner el usuario y contraseña, así que puedes usar el siguiente comando en vez de los ejemplos anteriores:

cd /home/respaldos/goldwatches.top/30-jun-2021
mysqldump goldwatches.top > goldwatches.top-30-jun-2021.sql

Si tienes no demasiados sitios puedes hacerte una lista y las ejecutas al mismo tiempo. Por ejemplo:

cd /home/respaldos/goldwatches.top/30-jun-2021
mysqldump altagama.top > altagama.top.sql
mysqldump aprende.top > aprende.top.sql
mysqldump bestproducts.deals > estproducts.deals.sql
mysqldump consejos.top > consejos.top.sql
mysqldump consultas.top > consultas.top.sql
mysqldump criticos.top > criticos.top.sql
mysqldump cual.top > cual.top.sql
mysqldump cuales.top > cuales.top.sql
mysqldump goldwatches.top > goldwatches.top.sql

mysqldump informacion.top > informacion.top.sql
mysqldump maquinas.top > maquinas.top.sql
mysqldump mejor.top > mejor.top.sql
mysqldump mejoreslaptops.top > mejoreslaptops.top.sql
mysqldump menwatches.uk > menwatches.uk.sql
mysqldump premios.top > premios.top.sql
mysqldump sitios.top > sitios.top.sql
mysqldump terrenos.top > terrenos.top.sql
mysqldump truckercaps.store > truckercaps.top.sql
mysqldump webgratis.top > webgratis.top.sql
mysqldump zechinelli.com > zechinelli.com.sql

Esta forma de hacer respaldos de las base de datos es más efectiva, ya que si por ejemplo tienes un sitio web gigante que posee muchas tablas, muchas veces al tratar de descargar la base de datos desde phpMyAdmin pueda provocar un error de descarga no antes del aviso “advertencia un formulario en esta página tiene más de 1000 campos” y aún en ocasiones configurando el archivo php.ini puede que no logres solucionarlo. Así que utilizar este comando para descargar la base de datos del sitio web desde SSH es una solución efectiva y muy simple.

Comprimir el directorio del sitio web desde SSH

Ahora que ya tenemos la base de datos descargada. Vamos a crear un archivo ZIP del directorio de los archivos del sitio web para que la descarga desde FileZilla en vez de durar horas dure minutos o segundos.

Puedes comprimir con ZIP con o sin contraseña. Para ello lo primero que tenemos que instalar es ZIP en nuestro servidor. El siguiente comando va bien con Apache y Debian:

apt install zip

Comprimir el directorio web con ZIP

Primero tienes que establecerte en la ruta donde se encuentra el directorio de nuestro sitio web. En mi caso el directorio del sitio se llama goldwatches.top y se encuentra dentro del directorio www, así que la ruta es: /var/www/

cd /var/www/

Pero lo cierto es que yo comprimo todo el directorio www con todos los sitios dentro que poseo. No le veo sentido hacerlo uno por uno.

Así que yo siempre me ubico en /var

cd /var

Ahora vamos a comprimir el directorio del sitio web (el directorio original quedará intacto, sólo se creará un archivo ZIP nuevo adicional)

zip -r nombre_que_le_quieras_dar_al_archivo.zip nombre_del_directorio_a_comprimir
zip -r www.zip www

Lo puedes ya descargar a tu ordenador con FileZilla. También si quieres puedes moverlo donde se encuentra el respaldo de la base de datos que hicimos con el comando:

mv nombre_que_le_diste_al_archivo.zip direccion_donde_lo_moveremos

Ejemplo general:

cd /var
zip -r www.zip www
mv www.zip /home/respaldos/goldwatches.top/30-jun-2021
mover un directorio en unix

Ahora ya puedes descargar ambos archivos a tu ordenador de forma rápida (arrastrarlos al escritorio por ejemplo).

Puedes ir creando todos los respaldos que desees en la carpeta que creamos, pero dependiendo del tamaño de disco que posea tu servidor vas a tener que ir borrando respaldos viejos si ves que te estás quedando sin espacio.

Para borrar un directorio completo sólo usa el siguiente comando:

rm -rf /ubicación_del_directorio_a_borrar

Por ejemplo:

rm -rf  /home/respaldos/goldwatches.top/30-jun-2021

Así se borrara el respaldo que hice el día 30-jun-2021

Comprimir el directorio web con ZIP Y CONTRASEÑA

Si por alguna razón necesitas que el archivo ZIP esté encriptado deberás agregar a la línea de comando un -e y después te pedirá ingresar una contraseña que elijas

zip -e -r goldwatches.top.zip nombredelacarpetaacomprimir

Deja un comentario