<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="Linux服务器备份:VPS备份脚本">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2011-05-07 17:27<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
Linux服务器备份:VPS备份脚本



准备工作：

需要提前在VPS安装好lftp，lftp功能上比较强大，CentOS直接执行：yum install lftp，Debian执行：apt-get install lftp 。

需要在VPS上创建/home/backup/ 目录，在FTP上创建backup目录。

如果VPS上数据库不多的话使用Godaddy的免费空间就可以（10GB空间，300GB流量），只要注册个域名就免费送。

下面将备份脚本进行部分注释：

 




    
        
            #!/bin/bash
            #Funciont: Backup website and mysql database
            #Author: licess
            #Website: http://lnmp.org
            #IMPORTANT!!!Please Setting the following Values!
            ######~Set Directory you want to backup~######将下面的目录修改成自己要备份的目录，一般按我的都是在/home/wwwroot/下面所有直接写了需要备份的目录。可以继续再加：Backup_Dir5=你的目录 ，Backup_Dir后面的数字依次递增。如果不足4个，直接删除不需要的就可以，同时修改下面tar zcf 部分。

            Backup_Dir1=vpser.net
            Backup_Dir2=lnmp.org
            Backup_Dir3=licess.org
            Backup_Dir4=jungehost.com

            ######~Set MySQL UserName and password~######设置MySQL的用户名和密码，最好是root，其他用户可能因为权限问题无法导出部分数据库。
            MYSQL_UserName=root
            MYSQL_PassWord=yourmysqlrootpassword

            ######~Set MySQL Database you want to backup~######设置要部分的数据库，可以继续再加：Backup_Database_Name5=数据库名，Backup_Database_Name后面的数字依次递增。
            Backup_Database_Name1=vpser
            Backup_Database_Name2=licess
            Backup_Database_Name3=junge
            Backup_Database_Name4=vpserorg

            ######~Set FTP Information~######设置用来存放备份数据的FTP信息
            FTP_HostName=184.168.192.43 //FTP服务器的IP或者域名
            FTP_UserName=vpsernet //FTP服务器用户名
            FTP_PassWord=yourftppassword //FTP服务器用户对应的密码
            FTP_BackupDir=backup //备份到FTP上的目录，需要提前创建好。

            #Values Setting END!

            TodayWWWBackup=www-*-$(date +&quot;%Y%m%d&quot;).tar.gz
            TodayDBBackup=db-*-$(date +&quot;%Y%m%d&quot;).sql
            OldWWWBackup=www-*-$(date -d -3day +&quot;%Y%m%d&quot;).tar.gz
            OldDBBackup=db-*-$(date -d -3day +&quot;%Y%m%d&quot;).sql

            tar zcf /home/backup/www-$Backup_Dir1-$(date +&quot;%Y%m%d&quot;).tar.gz -C /home/wwwroot/ $Backup_Dir1 --exclude=soft
            tar zcf /home/backup/www-$Backup_Dir2-$(date +&quot;%Y%m%d&quot;).tar.gz -C /home/wwwroot/ $Backup_Dir2
            tar zcf /home/backup/www-$Backup_Dir3-$(date +&quot;%Y%m%d&quot;).tar.gz -C /home/wwwroot/ $Backup_Dir3 --exclude=test
            tar zcf /home/backup/www-$Backup_Dir4-$(date +&quot;%Y%m%d&quot;).tar.gz -C /home/wwwroot/ $Backup_Dir4

            ###上面为备份网站文件数据，因为我的网站比较零散，而且网站目录下面有些目录属于临时目录并不需要备份，所以可以在上面加上--exclude=不备份的目录。如果在前面加了Backup_Dir5=yourdir，则再加tar zcf /home/backup/www-$Backup_Dir5-$(date +&quot;%Y%m%d&quot;).tar.gz -C
            /home/wwwroot/ $Backup_Dir5 。如果多余则删除多余行。

            /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 &gt; /home/backup/db-$Backup_Database_Name1-$(date +&quot;%Y%m%d&quot;).sql
            /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name2 &gt; /home/backup/db-$Backup_Database_Name2-$(date +&quot;%Y%m%d&quot;).sql
            /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name3 &gt; /home/backup/db-$Backup_Database_Name3-$(date +&quot;%Y%m%d&quot;).sql
            /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name4 &gt; /home/backup/db-$Backup_Database_Name4-$(date +&quot;%Y%m%d&quot;).sql

            ###上面为备份MySQL数据库，如果在前面加了Backup_Database_Name5=yourdatabasename，则再加/usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name5 &gt; /home/backup/db-$Backup_Database_Name5-$(date +&quot;%Y%m%d&quot;).sql。如果多余则删除多余行。

            rm $OldWWWBackup
            rm $OldDBBackup
            ###删除3天前的备份###

            cd /home/backup/

            ###下面为自动上传部分，不得不说lftp很强大，抛弃ftp吧####
            lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord &lt;&lt; EOF
            cd $FTP_BackupDir
            mrm $OldWWWBackup
            mrm $OldDBBackup
            mput $TodayWWWBackup
            mput $TodayDBBackup
            bye
            EOF

            

        
    



 

脚本下载地址：http://soft.vpser.net/lnmp/backup.sh

下载脚本，将脚本放到/root/ 下面，按上面的注释修改脚本中的参数，并保存，如果不熟悉vi或者nano编辑器，可以用winscp，执行：crontab -e

在crontab中加入：0 3 * * * /root/backup.sh

凌晨3点自动执行/root/bakcup.sh 脚本，备份vps上的数据并上传到FTP上。


</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
