MyTetra Share
Делитесь знаниями!
Бэкапим Linux-сервер в Dropbox
Время создания: 28.04.2016 03:37
Автор: Роман Теличко
Текстовые метки: linux, DropBox, консоль, сервис, бекап, backup
Раздел: Компьютер - Linux - Dropbox в Linux
Запись: xintrea/mytetra_syncro/master/base/1461803819cwze4wgled/text.html на raw.github.com

Если ваши серверные бэкапы могут вместиться в размер виртуального диска Dropbox’a, то думаю что разумным будет бэкапить файлы, помимо другого веника, ещё и в облако.
Начнём.

Скачиваем с официального сайта дистрибутив для командной строки (в моём случаи архитектура процессора х64, для иных процессоров вот ссылка)


sudo su


cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

Перемещаем Dropbox из домашней папки вон:


mv .dropbox-dist /usr/local/lib/dropbox && chown -R root:root /usr/local/lib/dropbox

Запускаем в первый раз Dropbox руками:


/usr/local/lib/dropbox/dropboxd

Видим такое:


This client is not linked to any account...

Please visit https://www.dropbox.com/cli_link?host_id=2dc73ba6a3aXXXX to link this machine.

Открываем ссылку в браузере, вводим пароль и присоединяем сервер к нашему Dropbox-аккаунту.
После чего в консоли видим


Client successfully linked, Welcome Roman!

Ждём пока все файлы перетянутся из Dropbox’a в папку, иначе будут «бока».
Когда всё завершится — останавливаем процесс нажатием CTRL+C

В домашней директории создалась папка ~/Dropbox/ и подтянулись мои файлы.
Поскольку мне это дело в домашней папке не нужно — я переношу саму папку, за которой следит Dropbox-демон в другое место, оставляя только сим-линк (в моём случаи — /var/__dropbox)

mkdir /var/__dropbox

mv ~/Dropbox/* Dropbox/.d* /var/__dropbox/

rm -Rf ~/Dropbox && ln -s /var/__dropbox ~/Dropbox

Теперь установим Dropbox в качестве сервиса.
Для этого создаём файл /etc/init.d/dropbox с таким содержанием:

### BEGIN INIT INFO

# Provides: dropbox

# Required-Start: $local_fs $remote_fs $network $syslog $named

# Required-Stop: $local_fs $remote_fs $network $syslog $named

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# X-Interactive: false

# Short-Description: dropbox service

### END INIT INFO

#!/bin/sh

 

start() {

echo "Starting dropbox..."

HOME="/root/" start-stop-daemon -b -o -c root -S -u root -x /usr/local/lib/dropbox/dropbox

}

 

stop() {

echo "Stopping dropbox..."

start-stop-daemon -o -c root -K -u root -x /usr/local/lib/dropbox/dropbox

}

 

status() {

dbpid=$(pgrep -u root dropbox)

if [ -z $dbpid ] ; then

echo "dropbox not running."

else

echo "dropbox running."

fi

}

 

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

Обратите внимание, что я буду запускать Dropbox от пользователя root, поэтому я устанавливаю ему HOME="/root/" перед запуском демона, для того, чтобы демон понимал где лежат настройки.

Устанавливаем скрипту запуска правильные права


chmod +x /etc/init.d/dropbox

Добавляем в автозагрузку


update-rc.d dropbox defaults

И наконец-то запускаем:


/etc/init.d/dropbox start

Опционально. Есть инструмент на Питоне для отображения текущего статуса работы демона (копирование, простой и пр.)


Если интересует — загружаем его и устанавливаем ему права, иначе — переходим дальше.


wget -O /usr/local/lib/dropbox/dropbox.py "https://www.dropbox.com/download?dl=packages/dropbox.py"


chmod 755 /usr/local/lib/dropbox/dropbox.py

Теперь мы можем смотреть чем занимается демон с помощью команды


/usr/local/lib/dropbox/dropbox.py status

Осталось последнее — написать скрипт, что будет копировать файлы в нашу папку прямо в облако.
Для этого мы будем использовать любимый rsync.


#!/bin/sh

 

HOST=$(hostname)

SOURCE_DIR="/var/__backup"

DROPBOX_DIR="/var/__dropbox"

 

/usr/bin/rsync -avz --delete $SOURCE_DIR $DROPBOX_DIR/$HOST/$SOURCE_DIR;

Вот. Теперь папка /var/__backup будет в полном объеме уезжать в облако Dropbox’a (в папку /<имя_сервера>, что удобно, когда есть более одного сервера).

Ставим запуск этого скрипта каждый день, после выполнения всех бэкапов на сервере (у меня это 5 утра).


vi /etc/crontab


0 5 * * * root /var/__backup/__scripts/backup_to_dropbox.sh > /dev/null 2>&1


 
MyTetra Share v.0.59
Яндекс индекс цитирования