1º Creando el script
Creamos un script con extensión .sh con las instrucciones que necesitaremos hacer. Si necesitan más documentación sería interesante verse por ahí cualquier documentación sobre bin/bashPor ejemplo este seria mi código para hacer una copia de seguridad de la web yofriki.com en una carpeta FTP (no accesible al público) que se llamará backup. Es importante que la carpeta donde se vaya hacer la copia de seguridad tenga permisos 755, y que el archivo .sh creado tenga permisos 644.
#!/bin/bash
#archivo yofriki_backup.sh
#-------------------------------------------------
# Inicio copia de seguridad yofriki.com
#--------------------------------------------------
#borramos todas las copias de seguridad realizadas anteriormente menos las 4 más nuevas
cd ~/backup/
ls ~/backup/ -t | tail -n +4 | xargs rm
#volcando la base de datos, sustituir los parámetros en rojo por los tuyos
mysqldump -u USUARIO --password=PASSWORD --host=localhost BASE_DE_DATOS | gzip > ~/backup/yofriki_sql.gz
#creando paquete con los archivos de la web y el volcado de la base de datos
tar czf ~/backup/web_yofriki_$(date +%d-%m-%y).tgz ~/yofriki.com ~/backup/yofriki_sql.gz/
#----------Fin del archivo ---------------------------------------
No solo podemos crear archivos para realizar backups de nuestras webs, sino también para gestionar nuestras cuentas correo. En mi caso, por ejemplo tengo mis correos redireccionado a Gmail, y envío los correos desde gmail utilizando mi propio servidor smtp. Como los correos que recibo en mi servidor se acumulan en mi carpeta de INBOX (bandeja de entrada) me hice un script para vaciar dicha carpeta periódicamente. Para este caso tenemos 2 opciones:
Opción A: en el caso que podamos acceder a la carpeta de correo directamente, podemos eliminar su inbox con un comando semejante a este:
rm ~/mail/yofriki.com/account/new
Opcion B: En el caso que no podamos, también podremos hacerlo accediendo por Telnet a nuestro servidor POP para borrar los emails de uno en uno. Para ello recomiendo hacer dos archivos. 1º, el script (empty.sh)para eliminar los correos que sería este, acuerdense de darle permisos 644:
#!/bin/bash
#empty.sh
i=1
sleep 1
echo "user $1"
sleep 2
echo "pass $2"
sleep 2
while [ $i -le 200 ]
do
echo "DELE $i"
sleep 0.01
i=$(( $i + 1 ))
done
echo "quit"
el 2º script será una lista de los emails junto con sus contraseñas a eliminar. Lo podemos llamar lista.sh, cuando programemos el cron, deberías de invocar este archivo. Recuerden que este archivo necesita permisos 644 también!
#!/bin/bash
#archivo lista.sh
#personal
sh empty.sh nombre_de_usuario contraseña | telnet servidor_pop 110
sh empty.sh nombre_de_usuario2 contraseña2 | telnet servidor_pop 110
2º Programando la tarea Cron
Hay varias formas de hacerlo, según el servidor. Los que tienen Cpanel lo podrán hacer directamente a través del interfaz gráfico, y sino los que puedan acceder a través de SSH podrán configurar la tarea a través de crontabsEjemplo comandos Cron:
curl "http://koko.es/cron.php"
/bin/sh ~/respaldo.sh usuario contraseña tu_email@sudominio.com
/bin/sh ~/backup/lista.sh tu_email@sudominio.com
Si lo hacen a través de consola se pueden instalar crontab (los clientes de 1and1 ya lo tendrán instalado) con sudo apt-get install crontab deberás de conectarte al servidor mediante SSH y definir el cronjob manualmente:
ssh tudominio.com -l tu_usuario_ssh #ej. u265794563
una vez logeado
crontab -e
veras mucho texto comentado, pulsa 'i' para editarlo, y borra todo y añade las tareas cron que quieras
#copia de seguridad diaria 5:30 am
30 5 * * * sh ~/backup/lista.sh
#cada 5 mins
*/5 * * * * sh ~/backup/respaldo.sh
#horas 3:30 y 4:30
30 4,5 * * * sh ~/backup/backup.sh
#horas 3:10, los días 1 y 15 de cada mes.
3 10 1,15 * * sh ~/backup/backup.sh
cuando termines, pulsa ESC,ESC y luego SHIFT+Z o :wq
para verificar que se guardo correctamente introduce:
crontab -l
Una información muy interesante y útil. Es fundamental realizar copias de seguridad de toda nuestra información de forma periódica, para garantizar la integridad de la misma en todo momento. Saludos.
ResponderEliminar