Отправка бэкапов с сервера в dropbox

Подумал, почему бы не отправлять бэкапы с сервера в Dropbox – чтобы не скачивать их вручную каждый раз.

Скачиваем dropbox для Linux: http://www.dropbox.com/download/?plat=lnx.x86

Распаковываем полученный архив dropbox-lnx.x86-1.4.8.tar.gz и копируем его содержимое в /usr/local/dropbox

Работать с dropbox у меня будет пользователя www-data.

Заходим от пользователя www-data и запускаем демон dropbox:
su -l www-data
/usr/local/dropbox/dropboxd

Появляется собщение о том, что нужно привязать этот компьютер (сервер то есть) к моему аккаунту dropbox – для этого надо просто перейти по ссылке, которая содержится в сообщении.
Теперь в директории пользователя www-data (/var/www) создастся папка Dropbox, которая и будет синхронизироваться с аккаунтом. В ней создаю символическую ссылку на директорию, в которую сейчас складываюся бэкапы.

Теперь, после создания бэкапа, через cron будем запускать демон dropbox, а через несколько минут выключать его.
Для этого создаём скрипт /etc/init.d/dropbox

#!/bin/sh

### BEGIN INIT INFO
# Provides: dropbox
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6

# Short-Description: starts the dropbox service
# Description: starts dropbox using start-stop-daemon
### END INIT INFO

DROPBOX_USERS="www-data"
DAEMON=/usr/local/dropbox/dropbox
unset DISPLAY

start() {
echo "Starting dropbox…"
for dbuser in $DROPBOX_USERS; do
HOMEDIR="$(getent passwd $dbuser | cut -d: -f6)"
if [ -x $DAEMON ]; then
HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $DAEMON
fi
done
}

stop() {
echo "Stopping dropbox…"
for dbuser in $DROPBOX_USERS; do
HOMEDIR="$(getent passwd $dbuser | cut -d: -f6)"
if [ -x $DAEMON ]; then
start-stop-daemon -o -c $dbuser -K -u $dbuser -x $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
sleep 1
status
;;

stop)
stop
sleep 1
status
;;

restart|reload|force-reload)
stop
start
sleep 1
status
;;

status)
status
;;

*)
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
exit 1

esac

exit 0

По мотивам рецепта initio.ru.

Leave a Reply

Your email address will not be published. *
You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>