Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

AutoBackupWebServer(Web directory + MySQL) - WEB 服务器自动备份脚本

License

Notifications You must be signed in to change notification settings

ehaut/WebServerAutoBackup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

134 Commits

Repository files navigation

WebServerAutoBackup

This is a script that automatically backs up your site and database to local or to Qiniu,UpaiYun,TencentCOS,BaiDuCloud,ftp

WEB 服务器自动备份脚本 (Shell)

仅在CentOS 6 x64 && CentOS 7 x64 && Ubuntu 16.04 x64 测试通过

已实现功能:

  • 自动备份网站和数据库到本地
  • 自动记录日志到文件
  • 自动删除三天前的备份文件和日志
  • 备份脚本和配置文件分离(通过ini解析引擎解析外置config.ini)
  • 自动判断机器类型,下载相应的云上传工具
  • 自动将备份文件上传到七牛云并和本地同步删除
  • 自动将备份文件上传到又拍云并和本地同步删除
  • 自动将备份文件上传到腾讯云对象存储并和本地同步删除
  • 自动将备份文件上传到百度云并和本地同步删除
  • 自动将备份文件上传到ftp服务器并和本地同步删除
  • 自动将备份文件上传到远程服务器并和本地同步删除(通过SFTP命令)

将来会实现的功能:

  • 自动下载最新版云上传工具,并且可以选择自动更新(和云工具作者提意见中)
  • 脚本选择自动更新功能
  • 其他细节优化
  • 兼容更多的linux发行版
  • 添加更多云存储平台
  • 改进备份过程等

欢迎给我们提建议!

原理:

  • 通过ini解析引擎bash-ini-parser解析用户配置文件config.ini
  • 通过mysqldump导出数据库
  • zip压缩备份
  • 判断是否存在七牛官方qshell,又拍官方upx,如果没有使用wget下载,
  • 下载好调用qshell上传七牛云或者upx又拍云
  • 判断是否安装腾讯云对象存储命令行工具coscmd,如果没有则通过pip安装,调用coscmd上传腾讯云对象存储
  • 调用bpcs_uploader 上传百度云(请保证安装phpcurl)
  • 调用ftp上传ftp
  • 备份日志通过echotee同时显示屏幕和输出到文件
  • 通过sshsftp连接到远程服务器,实现传输文件,ssh传递密码通过sshpass实现

不足:

  • 由于能力原因可能存在很多bug,欢迎提交issue指出
  • 由于绝对路径压缩可能存在问题,故将所有备份文件放在一个临时文件夹中,操作完自动清除
  • 无法忽略mysql-5.6及以上密码传递造成安全警告
  • 由于无法在ftp里写判断语句,所以使用ftp每次强制创建备份文件夹,因此会有警告
  • 同样由于ftp命令支持语句较少,因此没有上传进度条,且ftp上传极易受网络影响
  • 更多的容错处理

打包下载:https://github.com/CHN-STUDENT/WebServerAutoBackup/archive/master.zip

使用方法:

yum -y install wget zip ftp curl ssh sftp sshpass #for CentOS/Redhat
# apt-get -y install wget zip ftp curl ssh sftp sshpass #for Debian/Ubuntu
git clone https://github.com/CHN-STUDENT/WebServerAutoBackup.git 
cd WebServerAutoBackup
vi config.ini //修改配置文件内的网站、数据库等参数
chmod a+x backup.sh
./backup.sh //使用默认配置文件运行
./backup.sh config-customize.ini //使用指定配置文件运行

注意:请勿将临时目录设置成根/等重要目录,不然可能会造成系统及重要数据丢失的情况!!!这些目录也尽量不要设置到移动硬盘上,防止移动断电等意外情况。

添加计划任务,每天凌晨两点自动备份

crontab -e
0 2 * * * cd /root/WebServerAutoBackup && ./backup.sh > /data/backup/log/backup-cron.log 2>&1 & 
#请自行修改脚本文件目录和输出日志文件目录

注意事项:

  • 如果国内clone速度慢,可以只下载 config.ini 和 backup.sh 上传即可,机器安装好wget命令且网络通畅下程序会自动下载相应的上传工具
  • 使用前请保证机器安装zip、mysql,以及配置文件设置正确
  • 如果要使用ftp上传请确保ftp服务器防火墙设置放行,权限正确,本机安装ftp命令
  • 使用百度云上传需要安装php和curl
  • 注意在第一次使用bpcs_uploader工具上传到百度云时需要进行工具的快速初始化,请根据脚本里的提示进行操作
  • 若使用coscmd,需要python且版本为2.7
  • 若使用SFTP密码上传功能,由于使用了sshpass命令,该命令会记住第一次正确的密码,后期为了安全可以将该密码删除

bpcs_uploader工具使用说明:bpcs_uploader/README.md

Thanks:

About

AutoBackupWebServer(Web directory + MySQL) - WEB 服务器自动备份脚本

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

AltStyle によって変換されたページ (->オリジナル) /