装lnmp都知道,利用SSH备份是很快很简单的事。其实官方也提供了sh脚本,下载地址脚本下载地址:http://soft.vpser.net/lnmp/backup.sh。
运行前:
需要提前在VPS安装好lftp,lftp功能上比较强大,CentOS直接执行:yum install lftp,Debian执行:apt-get install lftp 。
需要在VPS上创建/home/backup/ 目录,在FTP上创建backup目录。
根据官方的sh文件修改也行。因为某些方面的需求,我也根据自己的情况修改了一下,觉得更符合用户的需要。
backup.sh内容如下:
#!/bin/bash #Funciont: Backup website and mysql database #Author: 皇家元林 #Website: https://hjyl.org/ #IMPORTANT!!!Please Setting the following Values! ######~Set MySQL UserName and password~###### MYSQL_UserName=数据库用户名 MYSQL_PassWord=数据库密码 ######~Set MySQL Database you want to backup~###### Backup_Database_Name1=数据库名称 Backup_Database_Name2=数据库名称 Backup_Database_Name3=数据库名称 Backup_Database_Name4=数据库名称 ######~Set FTP Information~###### FTP_HostName=FTP地址 FTP_UserName=用户名 FTP_PassWord=密码 FTP_BackupDir=/home/backup #路径 #Values Setting END! TodayWWWBackup=xhjyl_$(date +"%Y%m%d").tar.gz TodayDBBackup=db-*-$(date +"%Y%m%d").sql.gz OldWWWBackup=xhjyl_$(date -d -7day +"%Y%m%d").tar.gz OldDBBackup=db-*-$(date -d -7day +"%Y%m%d").sql.gz # backup nginx configure files tar -czvf /home/wwwroot/nginx_conf_$(date +%Y%m%d).tar.gz /usr/local/nginx/conf/vhost #backup mysql /usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 | gzip > /home/backup/db-$Backup_Database_Name1-$(date +"%Y%m%d").sql.gz /usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name2 | gzip > /home/backup/db-$Backup_Database_Name2-$(date +"%Y%m%d").sql.gz /usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name3 | gzip > /home/backup/db-$Backup_Database_Name3-$(date +"%Y%m%d").sql.gz /usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name4 | gzip > /home/backup/db-$Backup_Database_Name4-$(date +"%Y%m%d").sql.gz # backup wwwroot and mysql tar -czvf /home/backup/xhjyl_$(date +%Y%m%d).tar.gz /home/wwwroot --exclude=ftp --exclude=phpmyadmin rm $OldWWWBackup rm $OldDBBackup cd /home/backup lftp fish://$FTP_UserName:$FTP_PassWord@$FTP_HostName << EOF cd $FTP_BackupDir mrm $OldWWWBackup mrm $OldDBBackup mput $TodayWWWBackup mput $TodayDBBackup bye EOF
这里需要说明一下不同地方:我这里添加了Nginx的配置,并备份到/home/wwwroot,所以直接跟整站代码一起打包就好了。至于数据库还是分开打包好,不然数据库太大,容易导出却不容易导入。 --exclude=ftp 这个ftp是不需要打包的文件夹。最后是lftp,我这里是直接发到我另外一个VPS上,因为那个搭建FTP,所以用SFTP的功能。经过测试,这段代码是正常的。即使在运行的时候,开始有tar: Removing leading `/’ from member names 这样的警告,那是正常的,这表示:
这样的一个压缩包,如果我们再去解开,就会当前目录(也即此例中的“~”)下再新建出“./home/robin/” 两级目录。对于这样的压缩包,解压方法是使用参数 “-C”指解压的目录为根目录(“/”):tar -xzvf robin.tar.gz -C /
如果强制使用绝对路径,可加上P参数。比如tar -czvPf robin.tar.gz /home/robin/
完了。
本文地址:VPS:通过SSH备份Nginx配置 整站代码和数据库
发表评论