欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Linux VPS/服务器 网站及数据库自动本地备份并FTP上传备份脚本

程序员文章站 2023-11-23 16:16:22
准备工作: 需要提前在vps安装好lftp,lftp功能上比较强大,centos直接执行:yum install lftp,debian执行:apt-get install...
准备工作:

需要提前在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 +"%y%m%d").tar.gz
todaydbbackup=db-*-$(date +"%y%m%d").sql
oldwwwbackup=www-*-$(date -d -3day +"%y%m%d").tar.gz
olddbbackup=db-*-$(date -d -3day +"%y%m%d").sql

tar zcf /home/backup/www-$backup_dir1-$(date +"%y%m%d").tar.gz -c /home/wwwroot/ $backup_dir1 --exclude=soft
tar zcf /home/backup/www-$backup_dir2-$(date +"%y%m%d").tar.gz -c /home/wwwroot/ $backup_dir2
tar zcf /home/backup/www-$backup_dir3-$(date +"%y%m%d").tar.gz -c /home/wwwroot/ $backup_dir3 --exclude=test
tar zcf /home/backup/www-$backup_dir4-$(date +"%y%m%d").tar.gz -c /home/wwwroot/ $backup_dir4

###上面为备份网站文件数据,因为我的网站比较零散,而且网站目录下面有些目录属于临时目录并不需要备份,所以可以在上面加上--exclude=不备份的目录。如果在前面加了backup_dir5=yourdir,则再加tar zcf /home/backup/www-$backup_dir5-$(date +"%y%m%d").tar.gz -c
/home/wwwroot/ $backup_dir5 。如果多余则删除多余行。

/usr/local/mysql/bin/mysqldump -u$mysql_username -p$mysql_password $backup_database_name1 > /home/backup/db-$backup_database_name1-$(date +"%y%m%d").sql
/usr/local/mysql/bin/mysqldump -u$mysql_username -p$mysql_password $backup_database_name2 > /home/backup/db-$backup_database_name2-$(date +"%y%m%d").sql
/usr/local/mysql/bin/mysqldump -u$mysql_username -p$mysql_password $backup_database_name3 > /home/backup/db-$backup_database_name3-$(date +"%y%m%d").sql
/usr/local/mysql/bin/mysqldump -u$mysql_username -p$mysql_password $backup_database_name4 > /home/backup/db-$backup_database_name4-$(date +"%y%m%d").sql

###上面为备份mysql数据库,如果在前面加了backup_database_name5=yourdatabasename,则再加/usr/local/mysql/bin/mysqldump -u$mysql_username -p$mysql_password $backup_database_name5 > /home/backup/db-$backup_database_name5-$(date +"%y%m%d").sql 。如果多余则删除多余行。

rm $oldwwwbackup
rm $olddbbackup
###删除3天前的备份###

cd /home/backup/

###下面为自动上传部分,不得不说lftp很强大,抛弃ftp吧####
lftp $ftp_hostname -u $ftp_username,$ftp_password << eof
cd $ftp_backupdir
mrm $oldwwwbackup
mrm $olddbbackup
mput $todaywwwbackup
mput $todaydbbackup
bye
eof

上文大部分都是以代码的形式表现出来,对于初学者可能比较难理解,一看到就懵啦,还是认真学习就一定能够有收获,希望上文中讲到的内容对大家能够有所帮助。