Copia de seguridad de PeerTube con Rsync

Aquí el script para hacer la copia de seguridad de PeerTube
(instalación estándar según la documentación oficial en /var/www/peertube)

Si en el servidor remoto has cambiado el puerto de ssh, por ejemplo la 10022, pon 'ssh -p 10022'

Copia el id de ssh desde el servidor de peertube al servidor de copia de seguridad

ssh-copy-id user@IP_SERVER

Si te da un error diciendo que no encuentra una “identidad”, es que aún no has generado ninguna llave ssl en este equipo, y por lo tanto:

ssh-keygen
(pulsa enter a todas las preguntas) y luego vuelve a dar
ssh-copy-id user@IP_SERVER
(te pide la contraseña del otro usuario)

Una vez copiada la llave pública en el otro servidor te propondrá de hacer el login sin contraseña para probar que todo funciona correctamente. Hazlo, y comprueba que el usuario del otro equipo tenga los permisos para acceder y crear carpetas donde quiere guardar la copia de seguridad. En mi caso es: /mnt/Disk/SRV/backup/rsync

Comprueba que el servidor tenga rsync instalado, y si no lo tiene, instala lo con: apt install rsync

Cuando todo está preparado en el otro servidor sal de allí y vuelve a su servidor de PeerTube.

Copia el contenido del script a bajo en un fichero llamado peertube_backup.sh.
Acuerdate de cambiar las variables como el usuario y remote_host

#!/bin/bash

# Variable zone
########################
pt_home="/var/www/peertube" # peertube home - without final slash!!
rs_user="max" # ssh user in the other server
rs_remote_host="backup.tormentasolar.win"  # ssh remote server
max_old=7 # max number of sql backup to leave in the server
remote_path="/mnt/Disk/SRV/backup/rsync/videos.tormentasolar.win"
#########################

# please install rsync and ssh-server in the remote server and use ssh-copy-id in order to have a login without password

# PROGRAM BEGIN ########################
# DB Dump
DATE=$(date +%Y-%m-%d)
mkdir -p $pt_home/storage/DB
sudo -u peertube pg_dump -Fc peertube_prod > $pt_home/storage/DB/$DATE-peertube_prod-dump.db
find $pt_home/storage/DB/*-peertube_prod-dump.db -mtime +$max_old -exec rm {} \;

#Rsync
rsync -arvz --delete -e 'ssh -p 22' --progress  $pt_home/config $rs_user@$s_remote_host:$remote_path
rsync -arvz --delete -e 'ssh -p 22' --progress  $pt_home/storage $rs_user@$s_remote_host:$remote_path

y luego lo instalamos en /usr/local/bin usando el comando install

install peertube_backup.sh /usr/local/bin

Todo está listo ahora: lanza el script con

peertube_backup.sh

en pocos segundos empezará a subir el contenido al otro servidor. La configuración y la base de datos no tarda mucho, pero los vídeos en cambio si.

Lo mejor es automatizar la tarea y que esta copia se haga de noche. Para esto creamos una regla de cron. Pulsa Ctrl-C para parar rsync y escribe:

root@peertube:~# crontab -e

Pega la siguente linea al fondo del fichero

* 5 * * * /usr/local/bin/peertube_backup.sh >/dev/null 2>&1

Guarda y sal. te dará este mensajoe final

crontab: installing new crontab
root@peertube:~# 

La mañana siguiente vete a comprobar que se haya copiado todo. Según el tamaño de los vídeos la primera vez puede durar más de un día entero, pero los día siguientes será mucho más rápido.

Crontab es bastante simple de usar, pero a veces cometes errores tontos, y para averiguar el error tienes que esperar horas. Así que yo uso este generador de cron online:

https://crontab-generator.org/

Comments are closed.