Это мой backup.sh для резервного копирования сайта Wordpress с конфигурацией docker-compose с помощью Restic.
См. Конфигурация Wordpress docker-compose с reverse proxy Traefik для рекомендуемой конфигурации docker-compose.
Для выполнения автоматических ежедневных резервных копий с помощью systemd см. Как создать systemd backup timer & service за 10 секунд
См. Как установить Restic REST server на Synology NAS для дополнительной информации о том, как активировать Restic REST server на Synology NAS.
Скрипт резервного копирования
Убедитесь, что ввели правильное имя пользователя и пароль (restic и abc123 в этом примере), правильный IP-адрес (10.1.2.3 в этом примере) и порт (16383 в этом примере).
Также создайте файл .restic_password с паролем шифрования резервной копии. СДЕЛАЙТЕ ОТДЕЛЬНУЮ РЕЗЕРВНУЮ КОПИЮ ЭТОГО ПАРОЛЯ — без него вы не сможете восстановить резервную копию!
#!/bin/bash
export NAME=$(basename $(pwd))
export RESTIC_REPOSITORY=rest:http://restic:abc123@10.1.2.3.4:16383/$NAME
export RESTIC_PASSWORD_FILE=.restic_password
if [ ! -f "${RESTIC_PASSWORD_FILE}" ]; then
echo "Please create .restic_password with the backup encryption password AND BACKUP THAT PASSWORD SEPARATELY!!!"
exit 1
fi
echo "Initing repo, please ignore any 'already exists' errors"
if [ ! -f ".restic_inited" ]; then
# Run the restic init command
restic init
if [ $? -eq 0 ]; then # if init successful
# Create the initialization file
touch ".restic_inited"
echo "Restic initialized"
fi
fi
# Backup
source .env
docker-compose exec -T mariadb mysqldump -uroot -p${MARIADB_ROOT_PASSWORD} --all-databases | restic --verbose backup --stdin --stdin-filename="mariadb.sql"
# Backup files
restic --verbose backup backup.sh docker-compose.yml wordpress --exclude wordpress/wp-content/cache