Linux VPS/服务器 网站及数据库自动本地备份并FTP上传备份脚本
程序员文章站
2022-06-14 14:37:42
准备工作: 需要提前在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
上文大部分都是以代码的形式表现出来,对于初学者可能比较难理解,一看到就懵啦,还是认真学习就一定能够有收获,希望上文中讲到的内容对大家能够有所帮助。
需要提前在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
上文大部分都是以代码的形式表现出来,对于初学者可能比较难理解,一看到就懵啦,还是认真学习就一定能够有收获,希望上文中讲到的内容对大家能够有所帮助。
上一篇: 你知道青枣吃多了会怎么样吗