dropbox的一大作用就是同步+备份,一般来说,这功能会被用于不同台式机,笔记本或者智能手机之间的文件同步,但是有没有想过,其实这也可以用于服务器,包括dedicated server和vps。
也就是说,只要能够在没有安装xserver的linux/unix服务器上,安装,特别是绑定dropbox客户端就可以了。
网上已经有很多人实现了。dropbox的论坛,则提供了针对现在流行的主要linux发行版的安装包。只需要按照教程做就可以了。
英文的官方wiki在这里,这个应该是经常更新的,建议保留。我相信能用linux server的人,至少能够在计算机辅助下,看懂英文,所以我就不翻译了。更何况,这里有一篇转贴的中文教程。他这个可能比较早,安装完成之后,程序没有自动报出需要复制粘贴到别处的浏览器里访问的捆绑链接,类似这样:
This client is not linked to any account…
Please visit https://www.dropbox.com/cli_link?host_id=7d44a557aa58f285f2da0x67334d02c1 to link this machine.
新的安装器只有在出现错误的时候,才需要使用dbreadconfig.py这个文件来hackdropbox的sqlite数据库,取出捆绑id,然后就像中文教程里边说的从第5步开始做。
安装成功之后,有两种用法:
1、直接同步文件。可以多服务器之间同步+备份,也可以和台式机上的开发环境同步。
需要同步的目录,直接用符号链接,和dropbox的默认同步目录(~/Dropbox)关联即可。
比如要备份/var/www这个目录
$ cd ~/Dropbox $ ln -s /var/www web_backup
这就可以了,或者要备份/etc目录(不要用Windows 的思维来备份Linux,只要不乱故意删除什么,linux系统自己很难坏的,所以只要备份自己的配制文件, 比如 apache 的配制等/etc下的设置文件。)
$ cd ~/Dropbox $ ln -s /etc etc_backup
2、只同步压缩过的备份文件(这里是某前辈提供的代码,他用的linode的VPS)
【1】每月备份 monthly-backup-linode-to-dropbox.sh,产生 Linode-Backup-201001.tgz, Linode-Backup-201002.tgz 这种备份文件,每月一个。
#!/bin/sh FILE=/tmp/Linode-Backup-<code>date+'%Y%m'</code>.tgz tar czf $FILE --exclude='<em>.exe' --exclude='</em>.tgz' /www/conf/scripts</p> <h3>这里可以加入你想备份的所有目录。exclude选项会去掉相应的文件或目录</h3> <p>mv $FILE ~username/Dropbox/Linode</p> <h3>~username/Dropbox是你的dropbox目录,Linode是你要存放备份文件在DropBox中的子目录
数据库的话,如果是mysql,mysqldump;如果是postgresql,pg_dumpall。tar有个–exclude-from参数,指定一个文件做参数,在这个文件里把目录名写上即可,每个文件或目录名单独占一行,就不会把他们打包压缩。
【2】最新备份linode-snapshot-to-dropbox.sh(可以每天、或者每周运行),只产生一个文件: Linode-SnapShot-Full.tgz
#!/bin/sh FILE=/tmp/Linode-SnapShot-Full.tgz tar czf $FILE /www/conf/scripts mv $FILE ~username/Dropbox/Linode
【3】然后在 crontab 加入如下行 (其中xxxxx 是这些脚本的绝对路径名)
58 23 * * * [ <code>date -d tomorrow +%d</code> -eq '01' ] && /xxxxx/monthly-backup-linode-to-dropbox.sh 30 23 * * * /xxxxx/linode-snapshot-to-dropbox.sh
从此,你的dropbox账号每月月末的最后2分钟,会产生当月的备份。
并且每天都会更新当前的最新备份。通常来说备份出来的文件名称要打日期错后再传,不然备份到一半拓机就不好了,不过dropbox有历史记录和垃圾箱,比起他的备份方法好一些。
ps,如果不用dropbox的话,会使用类似下边的代码(由另一位前辈提供):
tar -cpzvf backup.tar.gz /xxx (要备份的目录) scp ./backup.tar.gz root@another-vps.com:/data
但是这里边都没有设计数据库的备份代码,那个我认为用php备份出来比较好。