Бекапим важные данные

Привет! Вынужден обновить систему на своем vps c Ubuntu 18 на 20. При обновлении по идее все данные должны остаться, по крайней мере в /home директории. Но гарантий, что данные баз данных Mongo и MYSQL, а также данные volume docker контейнеров не будут затронуты - нет.

Поэтому решил забекапить то, что важно.

Mongo

Для того чтобы забекапить все базы из монги, воспользуемся утилитой mongodump (если нужно забекапить конкретную, можно указать --db mydatabasename)

mongodump --host localhost --port 27017 --username adminUser --password MyPassword --authenticationDatabase admin --out ~/projects/mongo_bkp

Можно еще сжать это в архив

mongodump --host localhost --port 27017 --username adminUser --password MyPassword --authenticationDatabase admin --gzip --archive=/path/to/backup/mydatabase.gz

Чтобы накатить бекап, выполним команду:

mongorestore --host localhost --port 27017 --drop ~/projects/mongo_bkp

Кстати chatgpt предлагает сделать автоматическую джобу, которая будет бекапить автоматом данные, с помощью скрипта

#!/bin/bash
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/path/to/backup/$TIMESTAMP"
mkdir -p $BACKUP_DIR
mongodump --host localhost --port 27017 --username adminUser --password MyPassword --authenticationDatabase admin --db mydatabase --out $BACKUP_DIR

Wordpress

Wordpress поднять в докер контейнере, поэтому команда для бекапа будет с использованием докер. Но суть особо не меняется. Будем использовать утилиту mysqldump. При этом можно даже использовать заданные переменные окружения ($MYSQL_ROOT_PASSWORD). Здесь db – это название контейнера.

docker exec db sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" wordpress' > ~/projects/codeart-site/backup/wordpress.sql

Чтобы восстановить данные, выполним команду:

cat ~/projects/codeart-site/backup/wordpress.sql | docker exec -i db sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" wordpress'

Если вы не задавали имя для базы данных, то можно опустить wordpress в конце.

Контент Wordpress

Данные самого сайта (все загрузки и медиа) можно скачать из docker volume. У меня в docker-compose прописан именной volume для данных wordpress

volumes:
- wordpress:/var/www/html

Посмотрев информацию о volumes docker volume ls , можно понять, что volume называется codeartsite_wordpress. Выполним команду создания временного контейнера, который монтирует codeartsite_wordpress себе и бекапит данные с помощью busybox tar:

docker run --rm -v codeartsite_wordpress:/data -v ~/projects/codeart-site/backup:/backup busybox tar czf /backup/wordpress_content_backup.tar.gz -C /data wp-content

Восстановить данные можно будет командой

docker run --rm -v codeartsite_wordpress:/data -v /path/to/backup:/backup busybox tar xzf /backup/wordpress_content_backup.tar.gz -C /data

Как скачать данные с vps

Скопируем данные на локальную тачку. Есть несколько способов: подключиться через sftp через какой нить TotalCommander или FileZilla, либо использовать консольную команду scp:

scp usename@ip_address:~/projects/codeart-site/backup/wordpress_content_backup.tar.gz  ~/Documents/vps_backup

На этом все! Всем удачи в бекапах и обновлениях!)