Бесплатный «Облачный» бэкап 7z+Dropbox
В последнее время особую популярность обретают различные «облачные» сервисы, в том числе резервное копирование. В интернете можно найти десяток сайтов представляющих подобные услуги, в том числе на платной основе.
Рассмотрим настройку автоматического бекапа веб-сервера с помощью архиватора 7z и сервиса Dropbox в Debian/Ubuntu Linux.
Создадим непривилегированного пользователя из-под которого будет запущен клиент Dropbox.
root@localhost:~$ useradd backupus
Далее в соответсвии с официальной вики устанавливаем консольного клиента, для созданного ранее пользователя
backupus@localhost:~$ cd ~/ backupus@localhost:~$ wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86 backupus@localhost:~$ tar -zxof dropbox.tar.gz
Запускаем клиента
backupus@localhost:~$ ~/.dropbox-dist/dropboxd
Через несколько секунд в консоле появится ссылка для привязки данного компьютера к вашему аккаунту.
Изменяем каталог за которым следит демон Dropbox на «/backup»:
backupus@localhost:~$ cp ~/.dropbox/dropbox.db dropbox.db.backup backupus@localhost:~$ wget http://dl.dropbox.com/u/119154/permalink/dropboxdir.py backupus@localhost:~$ chmod +x dropboxdir.py backupus@localhost:~$ mv ~/Dropbox /backup backupus@localhost:~$ ./dropboxdir.py --setfolder=/backup
Добавим скрипт автозапуска /etc/init.d/dropbox
# dropbox service DROPBOX_USERS="backupus" DAEMON=.dropbox-dist/dropbox start() { echo "Starting dropbox..." for dbuser in $DROPBOX_USERS; do HOMEDIR=`getent passwd $dbuser | cut -d: -f6` if [ -x $HOMEDIR/$DAEMON ]; then HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON fi done } stop() { echo "Stopping dropbox..." for dbuser in $DROPBOX_USERS; do HOMEDIR=`getent passwd $dbuser | cut -d: -f6` if [ -x $HOMEDIR/$DAEMON ]; then start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON fi done } status() { for dbuser in $DROPBOX_USERS; do dbpid=`pgrep -u $dbuser dropbox` if [ -z $dbpid ] ; then echo "dropboxd for USER $dbuser: not running." else echo "dropboxd for USER $dbuser: running (pid $dbpid)" fi done } case "$1" in start) start ;; stop) stop ;; restart|reload|force-reload) stop start ;; status) status ;; *) echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}" exit 1 esac exit 0
Делаем исполняемым, разрешаем запуск при загрузке и запускаем:
root@localhost:~$ chmod +x /etc/init.d/dropbox root@localhost:~$ update-rc.d dropbox defaults root@localhost:~$ /etc/init.d/dropbox start
Синхронизация файлов с онлайн-хранилищем работает, перейдем непосредственно к бекапу:
#!/bin/sh DATE=`/bin/date +%Y%m%d` BACKUP_DIR="/backup/${DATE}" SZ_CMD="/usr/bin/7za" SZ_PSW="secret" SZ_OPT="a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -p${SZ_PSW}" SITES="example.org site.com blog.me" MYSQL_USR="backup" MYSQL_PSW="secret" MYSQL_DBS="mysql example_org site_com blog_me" # Create Dirs /bin/mkdir ${BACKUP_DIR} /bin/mkdir ${BACKUP_DIR}/db /bin/mkdir ${BACKUP_DIR}/www # Installed packages /usr/bin/dpkg --list | $SZ_CMD $SZ_OPT -si ${BACKUP_DIR}/dpkg.list.7z # Configs $SZ_CMD $SZ_OPT ${BACKUP_DIR}/etc.7z /etc/ # Crontabs $SZ_CMD $SZ_OPT ${BACKUP_DIR}/crontabs.7z /var/spool/cron/crontabs/ # Sites for SITE in $SITES; do $SZ_CMD $SZ_OPT ${BACKUP_DIR}/www/${SITE}.7z /srv/www/${SITE}/ done # MySQL for DB in $MYSQL_DBS; do /usr/bin/mysqldump --opt -u $MYSQL_USR -p${MYSQL_PSW} $DB | $SZ_CMD $SZ_OPT -si ${BACKUP_DIR}/db/${DB}.sql.7z done
Итак, что делает это скрипт:
- Слепок установленных пакетов
- Резервную копию конфигов и кронтабов
- Резервную копию сайтов example.org, site.com и blog.me
- Резервную копию mysql баз mysql, example_org, site_com и blog_me
Архивы в данном скрипте шифруются с помощью пароля $SZ_PSW, так как доверять никому не стоит