VPS自动备份Shell脚本
VPS自动备份Shell脚本,用于Linux系统上一键备份和管理MySQL数据库以及Web数据,并自动上传至远程备份服务器。
一、特点与功能
1、纯shell脚本,使用简单,技术门槛低,容易修改,删除即可卸载。
2、可指定数据备份频率及保存的备份数量,能自动删除不必要的旧备份。
3、可指定多个需要备份的Mysql数据库,甚至排除某个数据库不备份。
4、可指定多个需要备份的数据目录,甚至支持二级目录打包备份。
5、支持本地和多重备份(ftp,scp,amazon s3),异地备份可选完全和增量备份。
二、下载与使用
2.1、下载脚本
https://gist.github.com/1505857
1 2 3 | wget http://wangyan.org/download/shell/vps_auto_backup.sh chmod 100 vps_auto_backup.sh mkdir /var/shell && mv vps_auto_backup.sh /var/shell |
2.2、设置cron守护进程
自动执行频率可随意设置,一般一小时一次就足够了。
1 2 | crontab -e 0 * * * * /bin/bash /var/script/sys-mon.sh |
2.3、安装附加软件
如果你需要进行远程FTP、SCP备份,则需安装lftp、expect。
1 2 | yum -y install lftp expect #centos apt-get -y install lftp expect #ubuntu |
三、配置选项
# 备份数据存放目录
1 | BACKUP_DIR="/root/vps-bak" |
MySQL备份选项
# 是否启用Mysql备份,0是关闭,1是启用。
1 | ENABLE_MYSQL_BACKUP="1" |
# 数据库备份时间间隔,1小时=3600秒。
1 | MYSQL_BACKUP_CYCLE="43200" |
# 数据库备份保存数量,默认保存最近4次备份。
# 例如:一天备份二次,需要保存最近二天备份,则此处填"4"
1 | MYSQL_BACKUP_NUM="4" |
# 数据库主机、用户名、密码。
1 2 3 | MYSQL_HOST="localhost" MYSQL_USER="root" MYSQL_PWD="123456" |
# 需要备份的数据库名,多个数据库要用空格分开,all表示所有数据库。
1 | MYSQL_DB_NAMES="all" |
# 需要排除备份的数据库名,多个数据库要用"|"分开。
1 | MYSQL_EXCLUDE_DB="phpmyadmin|information_schema|performance_schema" |
web备份选项
# 是否启用Web数据本地备份,0是关闭,1是启用。
1 | ENABLE_LOCAL_BACKUP="1" |
# 数据备份时间间隔,1小时=3600秒。
1 | WWW_BACKUP_CYCLE="86400" |
# 数据备份保存数量,默认保存最近2次备份。
# 例如:一天备份一次,需要保存最近二天备份,则此处填"2"
1 | WWW_BACKUP_NUM="2" |
# 需要备份的数据源目录,多个目录要用空格分开。
1 | WWW_BACKUP_DIRS="/home /var/www" |
# 需要备份的数据源目录深度,文件夹=0,文件夹+子文件夹=1
1 | WWW_BACKUP_DEPTH="1" |
FTP备份选项
# 是否启用远程FTP备份,0是关闭,1是启用。
1 | ENABLE_FTP_BACKUP="0" |
# FTP备份间隔,0表示禁用,1小时=3600秒
1 | FTP_BACKUP_CYCLE="0" |
# FTP备份模式,完全备份=0,增量备份=1
1 | FTP_BACKUP_MODE="0" |
# 远程FTP存储备份文件夹,如果不存在,则脚本会自动创建。
1 | FTP_REMOTE_DIR="vps-bak" |
# 远程FTP主机、用户名、密码。
1 2 3 | FTP_HOSTNAME="192.168.8.128" FTP_USERNAME="test" FTP_PASSWORD="test" |
SCP备份选项
# 是否启用远程scp备份,0是关闭,1是启用。
# 注意:为支持免证书登陆,需安装“expect”(yum -y install expect)
1 | ENABLE_SCP_BACKUP="0" |
# SCP备份间隔,0表示禁用,1小时=3600秒
1 | SCP_BACKUP_CYCLE="0" |
# 远程主机、用户名、密码。
1 2 3 | SCP_HOST="192.168.8.128" SCP_USER="root" SCP_PASSWD="123456" |
# 远程主机存储备份文件夹。
1 | SCP_REMOTE_PATH="/root/vps-bak" |
Amazon S3备份选项
# 是否启用Amazon s3备份,0是关闭,1是启用。
1 | ENABLE_S3_BACKUP="0" |
# Amazon s3 备份间隔,0表示禁用,1小时=3600秒
1 | S3_BACKUP_CYCLE="0" |
# Amazon s3备份模式,完全备份=0,增量备份=1
1 | S3_BACKUP_MODE="0" |
# Amazon s3 BUCKET名称,如果不存在,则脚本会自动创建。
1 | S3_BUCKET="vps-bak" |
# Amazon access key
1 | ACCESS_KEY_ID="123456" |
# Amazon secret access key
1 | SECRET_ACCESS_KEY="123456" |
四、建议反馈
如果您发现脚本存在错误或有更好的建议,可直接留言或发邮件至:
myidwy(at)gmail.com
五、更新历史
2011.12.23: 更新至0.2版,支持自定义远程备份频率、优化代码减少冗余。
2012.01.26: 更新至0.3版,修复在特定条件下,备份时间间隔值设置无效。
本站遵循 : 知识共享署名-非商业性使用-相同方式共享 3.0 版权协议
版权声明 : 原创文章转载时,请务必以超链接形式标明 文章原始出处
不错,一直忘记推荐了
哈哈,要是能改成PHP版就好了。
php脚本更容易啦
crontab -eript/sys-mon.sh
0 * * * * /bin/bash /var/sc
这里怎么操作错误,我是小白- -
呃,这里可以了,但是我还不是很明白,配置项直接在 [root@server ~]这里输入就可以了吗?
修改sys-mon.sh文件里的配置选项,不能在当前shell直接输入。