借助 又拍云存储 和自动备份脚本 backup.sh 实现 本地 加 通用Ftp云端 双重备份

自然 2019年6月23日17:36:33 4

对于服务器运维而言,数据的备份、转移、恢复一直都是一个让人头疼不已的问题,随着时间的积累,我们的网站服务器数据量会变得非常的大,国内的服务器宽带普遍偏小,传输这么大的数据直接回影响到用户体验性,且手动传输需要漫长的等待时间,数据备份一般收拾人工手动式在深夜进行备份,这极大的降低了效能,还浪费了大量的精力。

借助 又拍云存储 和自动备份脚本 backup.sh 实现 本地 加 通用Ftp云端 双重备份

正题

今天,自然给小伙伴们分享一个自动备份脚本backup.sh,运维工作者通过crontab定时任务管理,设置定时只是这个backup.sh脚本,可以实现本地+云端的双重备份功能,让你的服务器数据更加安全,拥有更强的抗灾难性能。例如下面这个:

这就是自动化运维的方案,解放双手的同时,提供效能,让你的运维工作变得更加轻松。

脚本部署

我们只需要登录我们的服务器,使用vim新建一个backup.sh的文件,将下面的代码粘贴进去,如果你不想手动生成脚本,也可以下载文章底部的文件。

  1. #!/bin/bash
  2. #Funciont: 备份网站文件和数据库
  3. #Author: licess
  4. #Website: https://lnmp.org
  5. #中文注释:自然
  6. #自然博客:https://www.wanvi.net
  7. #IMPORTANT!!!Please Setting the following Values!
  8. #非常重要!!!请设置下面的参数!
  9. #备份文件临时目录和mysql_dump路径
  10. Backup_Home="/home/backup/"
  11. MySQL_Dump="/usr/local/mysql/bin/mysqldump"
  12. ######~Set Directory you want to backup~######
  13. ######设置你想要备份的文件目录
  14. Backup_Dir=("/home/wwwroot/wanvi.net" "/home/wwwroot/v.ixmu.net")
  15. ######~Set MySQL Database you want to backup~######
  16. ######~设置你想要备份的数据库~######
  17. Backup_Database=("maccms" "wordpress")
  18. ######~Set MySQL UserName and password~######
  19. ######~设置Mysql用户名和密码~######
  20. MYSQL_UserName='root'
  21. MYSQL_PassWord='yourrootpassword'
  22. ######~Enable Ftp Backup~######
  23. ######~开启远程ftp传送备份至远程服务器~######
  24. Enable_FTP=0
  25. # 0: enable; 1: disable
  26. # 0: 开启; 1: 关闭
  27. ######~Set FTP Information~######
  28. ######~设置远程服务器Ftp信息~######
  29. FTP_Host='1.2.3.4'
  30. FTP_Username='wanvi.net'
  31. FTP_Password='yourftppassword'
  32. FTP_Dir="backup"
  33. #Values Setting END!
  34. #参数设置到此为止!
  35. TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz
  36. TodayDBBackup=db-*-$(date +"%Y%m%d").sql
  37. OldWWWBackup=www-*-$(date -d -3day +"%Y%m%d").tar.gz
  38. OldDBBackup=db-*-$(date -d -3day +"%Y%m%d").sql
  39. Backup_Dir()
  40. {
  41.     Backup_Path=$1
  42.     Dir_Name=`echo ${Backup_Path##*/}`
  43.     Pre_Dir=`echo ${Backup_Path}|sed 's/'${Dir_Name}'//g'`
  44.     tar zcf ${Backup_Home}www-${Dir_Name}-$(date +"%Y%m%d").tar.gz -C ${Pre_Dir} ${Dir_Name}
  45. }
  46. Backup_Sql()
  47. {
  48.     ${MySQL_Dump} -u$MYSQL_UserName -p$MYSQL_PassWord $1 > ${Backup_Home}db-$1-$(date +"%Y%m%d").sql
  49. }
  50. if [ ! -f ${MySQL_Dump} ]; then
  51.     echo "mysqldump command not found.please check your setting."
  52.     exit 1
  53. fi
  54. if [ ! -d ${Backup_Home} ]; then
  55.     mkdir -p ${Backup_Home}
  56. fi
  57. if [ ${Enable_FTP} = 0 ]; then
  58.     type lftp >/dev/null 2>&1 || { echo >&2 "lftp command not found. Install: centos:yum install lftp,debian/ubuntu:apt-get install lftp."; }
  59. fi
  60. echo "Backup website files..."
  61. for dd in ${Backup_Dir[@]};do
  62.     Backup_Dir ${dd}
  63. done
  64. echo "Backup Databases..."
  65. for db in ${Backup_Database[@]};do
  66.     Backup_Sql ${db}
  67. done
  68. echo "Delete old backup files..."
  69. rm -f ${Backup_Home}${OldWWWBackup}
  70. rm -f ${Backup_Home}${OldDBBackup}
  71. if [ ${Enable_FTP} = 0 ]; then
  72.     echo "Uploading backup files to ftp..."
  73.     cd ${Backup_Home}
  74.     lftp ${FTP_Host} -u ${FTP_Username},${FTP_Password} << EOF
  75. cd ${FTP_Dir}
  76. mrm ${OldWWWBackup}
  77. mrm ${OldDBBackup}
  78. mput ${TodayWWWBackup}
  79. mput ${TodayDBBackup}
  80. bye
  81. EOF
  82. echo "complete."
  83. fi

你已经把backup.sh文件上传到了服务器/root目录下,我们还需要给脚本赋予执行权限,chmod u+x backup.sh。

ok,到这里我们可以执行以下脚本看看备份效果了,运行/root/backup.sh,稍等一会你是不是在远程云存储界面看见了网站文件和数据库的打包备份呢?

设置定时任务,我们执行crontab -e添加一条定时任务即可,

  1. 30 3 * * * cd /root;./backup.sh  > /dev/null 2>&1 &

由于备份到远程ftp服务器我们需要占用宽带资源,所以挑选备份时间为每天凌晨3点30分,这样可以有效降低对客户体验的影响,到这里备份就完成啦,是不是很简单,简单地脚本就实现了自动化运维功能。

结合又拍云

部分小伙伴可能并不像花费额外的钱去购买存储服务,那么我们可以使用免费服务呢?又拍云给用户提供了免费每个月10GB的存储配合,你还可以轻松的通过http方式将文件下载到你想要的地方。

有几点需要注意的地方,又拍云存储添加成功后还需要设置操作员喔!我们通过ftp的方式管理又拍云云存储的文件,信息要如下填写:

  1. FTP服务器地址:v0.ftp.upyun.com
  2. FTP用户名:操作员名/服务名
  3. FTP密码:操作员密码
  4. FTP端口:21

总结

这个backup.sh脚本解决了大部分的站长运维的后顾之忧,不仅实现了本地自动备份,还实现了将备份通过Ftp的方式发送到远程服务器上。真正实现了本地+云端的双备份模式,大大提高了服务器数据的灾备能力。

下载信息 backup.sh自动化运维双端备份脚本
下载地址
weinxin
网科文媒
快来关注一下,你想要的这里都有喔!
自然

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:4   其中:访客  2   博主  2

    • avatar 明月云服务 1

      还是我的ossfs感觉比较方便!直接挂载给服务器,当做一个云端的目录来使用! :grin: :mrgreen: