Mega— замечательное и защищённое облачное хранилище, дающее бесплатно 50 Гб. И это ещё лучше тем, что можно бэкапить содержимое сервера. К счастью, есть хорошая библиотека приложений и инструментов для доступа Mega хранения из командной строки Linux. Этот инструмент называется megatools и выпущен под GPLv2 лицензией.
В этой статье я покажу , как компилировать, устанавливать и настраивать полную систему резервного копирования для вашего сервера, используя Mega и MegaTools.
Прежде всего зарегистрируйтесь на 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