手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

备份:自动备份VPS数据到Dropbox

首页 > Linux >

以下的文字来自于网址:http://www.wutianqi.com/?p=3115,我和他一样,都遇到了类似的问题
上个月我的数据全没有了,所幸我真的只丢了一小部分数据。还能忍。但现在。。。我想自动化一点,这样或许会安全一点吧?
全文如下:

最近一直在考虑备份的问题,因为随着站越来越大,付出了两年的心血,如果真因为没有备份而导致数据丢失,那就真是欲哭无泪了,而对于那么多的站点及 数据,如果要时常备份,肯定会烦躁的,在网上找到了一个脚本,专门可以把VPS上的数据和数据库中的数据自动备份到dropbox中。

dropbox是什么?不解释,美丽的度娘,万能的谷哥,等着你去找他们。

脚本来至这个网站:http://davehope.co.uk/Blog/backup-your-linux-vps-to-dropbox/

XML/HTML代码
  1. #!/bin/bash  
  2. DROPBOX_USER="Your Dropbox username"   #dropbox账号  
  3. DROPBOX_PASS="Your Dropbox password"   #dropbox密码  
  4. DROPBOX_DIR="Directory in your dropbox account to store the backups, e.g. /backups" #dropbox中存放备份的文件夹  
  5. BACKUP_SRC="/home /var/www /var/git /etc /root" #VPS中需要备份的目录  
  6. BACKUP_DST="/tmp" #备份存放的地方  
  7. MYSQL_SERVER="127.0.0.1"  #本地数据库服务器  
  8. MYSQL_USER="root"  #数据库用户名  
  9. MYSQL_PASS="Your MySQL password"  #数据库密码  
  10. #下面的就不需要修改了  
  11.   
  12. #  
  13. # Stop editing here.  
  14. NOW=$(date +"%Y.%m.%d")  
  15. DESTFILE="$BACKUP_DST/$NOW.tgz"  
  16.   
  17. #  
  18. # Upload a file to Dropbox.  
  19. # $1 = Source file  
  20. # $2 = Destination file.  
  21. function dropboxUpload  
  22. {  
  23.     #  
  24.     # Code based on DropBox Uploader 0.6 from http://www.andreafabrizi.it/?dropbox_uploader  
  25.     LOGIN_URL="https://www.dropbox.com/login"  
  26.     HOME_URL="https://www.dropbox.com/home"  
  27.     UPLOAD_URL="https://dl-web.dropbox.com/upload"  
  28.     COOKIE_FILE="/tmp/du_cookie_$RANDOM"  
  29.     RESPONSE_FILE="/tmp/du_resp_$RANDOM"  
  30.   
  31.     UPLOAD_FILE=$1  
  32.     DEST_FOLDER=$2  
  33.   
  34.     # Login  
  35.     echo -ne " > Logging in..."  
  36.     curl -s -i -c $COOKIE_FILE -o $RESPONSE_FILE --data "login_email=$DROPBOX_USER&login_password=$DROPBOX_PASS&t=$TOKEN" "$LOGIN_URL"  
  37.     grep "location: /home" $RESPONSE_FILE > /dev/null  
  38.   
  39.     if [ $? -ne 0 ]; then  
  40.         echo -e " Failed!"  
  41.         rm -f "$COOKIE_FILE" "$RESPONSE_FILE"  
  42.         exit 1  
  43.     else  
  44.         echo -e " OK"  
  45.     fi  
  46.   
  47.     # Load home page  
  48.     echo -ne " > Loading Home..."  
  49.     curl -s -i -b "$COOKIE_FILE" -o "$RESPONSE_FILE" "$HOME_URL"  
  50.   
  51.     if [ $? -ne 0 ]; then  
  52.         echo -e " Failed!"  
  53.         rm -f "$COOKIE_FILE" "$RESPONSE_FILE"  
  54.         exit 1  
  55.     else  
  56.         echo -e " OK"  
  57.     fi  
  58.   
  59.     # Get token  
  60.     TOKEN=$(cat "$RESPONSE_FILE" | tr -d '\n' | sed 's/.*<form action="https:\/\/dl-web.dropbox.com\/upload"[^>]*>\s*<input type="hidden" name="t" value="\([a-z 0-9]*\)".*/\1/')  
  61.   
  62.     # Upload file  
  63.     echo -ne " > Uploading '$UPLOAD_FILE' to 'DROPBOX$DEST_FOLDER/'..."  
  64.     curl -s -i -b $COOKIE_FILE -o $RESPONSE_FILE -F "plain=yes" -F "dest=$DEST_FOLDER" -F "t=$TOKEN" -F "file=@$UPLOAD_FILE"  "$UPLOAD_URL"  
  65.     grep "HTTP/1.1 302 FOUND" "$RESPONSE_FILE" > /dev/null  
  66.   
  67.     if [ $? -ne 0 ]; then  
  68.         echo -e " Failed!"  
  69.         rm -f "$COOKIE_FILE" "$RESPONSE_FILE"  
  70.         exit 1  
  71.     else  
  72.         echo -e " OK"  
  73.         rm -f "$COOKIE_FILE" "$RESPONSE_FILE"  
  74.     fi  
  75. }  
  76.   
  77. # Backup files.  
  78. mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$NOW-Databases.sql"  
  79. tar cfz "$DESTFILE" $BACKUP_SRC "$NOW-Databases.sql"  
  80.   
  81. dropboxUpload "$DESTFILE" "$DROPBOX_DIR"  
  82.   
  83. rm -f "$NOW-Databases.sql" "$DESTFILE"  

代码只需要在几个地方修改,已在上面的代码中注释出来。

直接:

XML/HTML代码
  1. #随便找个地方,存放backup.sh,比如我:  
  2. #cd /home/wwwroot/到这里来放置这个shell script  
  3. vi backup.sh  
  4. #粘贴上代码后  
  5. chmod +x backup.sh  
  6. #因为授予了权限,所以直接运行即可:  
  7. ./backup.sh  
  8. #接着设置定时任务,可以man crontab自己看看具体用法  
  9. $ crontab -e  
  10. # m h  dom mon dow   command  
  11. #这里分别对应minute hour 'day of month' month 'day of week'  
  12. #下面这行,意思就是每月第一天备份  
  13. 0 0 1 * *       /bin/bash /home/wwwroot/backup.sh  

OK,玩网站,就一句话,勤备份,靠别人不如靠自己,要想玩得好,首先要勤劳!

---EOF---
其实类似的软件很多,比如 还有google drive,而且相应的工具也已经有了,当然你甚至可以搞一台VPS来做双机互备,rsync,多方便啊。




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):