Бэкап сервера на mega.nz

Mega— замечательное и защищённое облачное хранилище, дающее бесплатно 50 Гб. И это ещё лучше тем, что можно бэкапить содержимое сервера. К счастью, есть хорошая библиотека приложений и инструментов для доступа Mega хранения из командной строки Linux. Этот инструмент называется megatools и выпущен под GPLv2 лицензией.01_mega_logo.svg

В этой статье я покажу , как компилировать, устанавливать и настраивать полную систему резервного копирования для вашего сервера, используя Mega и MegaTools.

cloudbackup

 

Прежде всего зарегистрируйтесь на Mega https://mega.co.nz и следуйте этим инструкциям, чтобы скомпилировать и установить megatools

Устанавливаем необходимые пакеты.

apt-get install -y build-essential pkg-config libglib2.0-dev libssl-dev libcurl4-openssl-dev libfuse-dev glib-networking
git clone https://github.com/megous/megatools.git ~/megatools
cd megatools && ./configure && make && checkinstall && ldconfig

или 

apt-get install megatools. //если в репозитории есть свежая версия дистрибутива.

Примечание: вышеуказанные инструкции применимы к Debian 7 Wheezy и Debian 8 Jessie. В случае, если у Вас другой дистрибутив Linux, пожалуйста, установите необходимые зависимости.

Теперь MegaTools установлен в /usr/local/bin с файлом конфигурации, хранящимся в  ~/.megarc.  (То есть файл .megarc находится в папке пользователя) Заполните его так:

[Login]
Username = Your_Mega_Username
Password = Your_Mega_Password

Поскольку пароль хранится в открытом виде, ограничим к нему доступ

chmod 640 ~/.megarc

Протестируем megatools и посмотрим список файлов в аккаунте

megals
/Contacts
/Inbox
/Root
/Trash

Если всё прошло хорошо, то можно создать скрипт megabackup.sh и сохранить его в домашней папке рутового пользователя

UPD: Скрипт не простой и применим для автоматической синхронизации папки, в которой хранятся все бэкапы. Можно просто регулярно скидывать на обменник архивы

#!/bin/bash
SERVER="servername"
DAYS_TO_BACKUP=7
WORKING_DIR="~/backup_tmp_dir"
BACKUP_MYSQL="true"
MYSQL_USER="root"
MYSQL_PASSWORD="MyRootPassword"
DOMAINS_FOLDER="/var/www"
##################################
# Create local working directory and collect all data
rm -rf ${WORKING_DIR}
mkdir ${WORKING_DIR}
cd ${WORKING_DIR}
# Backup /etc folder
cd /
tar cJf ${WORKING_DIR}/etc.tar.gx etc
cd - > /dev/null
# Backup MySQL
if [ "${BACKUP_MYSQL}" = "true" ]
then
 mkdir ${WORKING_DIR}/mysql
 for db in $(mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e 'show databases;' | grep -Ev "^(Database|mysql|information_schema|performance_schema|phpmyadmin)$")
 do
 #echo "processing ${db}"
 mysqldump --opt -u${MYSQL_USER} -p${MYSQL_PASSWORD} "${db}" | gzip > ${WORKING_DIR}/mysql/${db}_$(date +%F_%T).sql.gz
 done
 #echo "all db now"
 mysqldump --opt -u${MYSQL_USER} -p${MYSQL_PASSWORD} --events --ignore-table=mysql.event --all-databases | gzip > ${WORKING_DIR}/mysql/ALL_DATABASES_$(date +%F_%T).sql.gz
fi
# Backup domains
mkdir ${WORKING_DIR}/domains
for folder in $(find ${DOMAINS_FOLDER} -mindepth 1 -maxdepth 1 -type d)
do
 cd $(dirname ${folder})
 tar cJf ${WORKING_DIR}/domains/$(basename ${folder}).tar.xz $(basename ${folder})
 cd - > /dev/null
done
##################################
# Workaround to prevent dbus error messages
export $(dbus-launch)
# Create base backup folder
[ -z "$(megals --reload /Root/backup_${SERVER})" ] && megamkdir /Root/backup_${SERVER}
# Remove old logs
while [ $(megals --reload /Root/backup_${SERVER} | grep -E "/Root/backup_${SERVER}/[0-9]{4}-[0-9]{2}-[0-9]{2}$" | wc -l) -gt ${DAYS_TO_BACKUP} ]
do
 TO_REMOVE=$(megals --reload /Root/backup_${SERVER} | grep -E "/Root/backup_${SERVER}/[0-9]{4}-[0-9]{2}-[0-9]{2}$" | sort | head -n 1)
 megarm ${TO_REMOVE}
done
# Create remote folder
curday=$(date +%F)
megamkdir /Root/backup_${SERVER}/${curday} 2> /dev/null
# Backup now!!!
megasync --reload --no-progress -l ${WORKING_DIR} -r /Root/backup_${SERVER}/${curday} > /dev/null
# Kill DBUS session daemon (workaround)
kill ${DBUS_SESSION_BUS_PID}
rm -f ${DBUS_SESSION_BUS_ADDRESS}
# Clean local environment
rm -rf ${WORKING_DIR}
exit 0

Можно использовать проще

megaput --path=/Root/reserv/ /your/backup's/storage/your-backup.tar.gz

Сделайте его исполняемым и доступным только руту:

chmod 750 ~/megabackup.sh

И задайте расписание на выполнение в кроне

04 04 * * * root <Ваша папка пользователя>/megabackup.sh

Big thanks to http://www.matteomattei.com/backup-your-server-on-mega-co-nz-using-megatools/

Перевод: DiDim

Добавить комментарий

Ваш e-mail не будет опубликован.