利用dropbox自动备份网站数据

我等小blog网站自然是用不上高大上的备份方案, 但是不备份后果很严重, 万一那天VPS公司跑路了, 或者机器挂了, 东西就全没鸟.

穷人只用的起免费的Dropbox =.=

安装

根据自己安装版本选择32或者64位的, 解压后会有一个.dropbox-dist的隐藏目录.

1
2
3
4
5
6
7
# Stable 32-bit:
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86"
 
# Or stable 64-bit:
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86_64"

tar -xvf dropbox.tar.gz

第一次在cmdline运行的时候, 会提示通过一个链接绑定帐号, 照着做就行了.

1
~/.dropbox-dist/dropbox

然后就会在home目录下建立一个Dropbox的目录.

dropbox daemon

为保证dropbox能够开机自动运行, 需要往init.d添加相应的脚本: /etc/init.d/dropbox

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
USER=oneyoung
HOMEDIR=/home/$USER

start() {
    echo "Starting dropbox..."
    start-stop-daemon -b -o -c $USER -S -x $HOMEDIR/.dropbox-dist/dropbox
}

stop() {
    echo "Stopping dropbox..."
    start-stop-daemon -o -c $USER -K -x $HOMEDIR/.dropbox-dist/dropbox
}

status() {
        dbpid=$(pgrep -u $USER 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

启用service, 并开机运行.

1
2
3
sudo chmod +x /etc/init.d/dropbox
sudo update-rc.d -f dropbox defaults
sudo update-rc.d dropbox enable

backup task

上述操作只能保证dropbox运行, 但是何时备份文件需建立一个cron task. 我等小破站一天备份一次就足够了.

备份脚本: /etc/cron.daily/backup-db

注意: 文件名不能是backup.py, 因为run-parts默认会忽略带有.的文件名

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python
import os

target = ['/www/django-blog/db',
    '/www/django-blog/media']
bak_dst = '/home/oneyoung/Dropbox/backup'

if not os.path.isdir(bak_dst):
    os.system('mkdir -p %s' % bak_dst)

for t in target:
    os.system("rsync -vaz --delete %s %s" % (t, bak_dst))

重启cron使更改生效.

1
2
sudo chmod +x /etc/cron.daily/backup-db
sudo cron restart
Ref:

留言