导航
导航
文章目录
  1. 一、特点与功能
  2. 二、下载与使用
    1. 2.1、下载脚本
    2. 2.2、设置cron守护进程
    3. 2.3、安装附加软件
  3. 三、配置选项
    1. 备份数据存放目录
    2. MySQL备份选项
    3. web备份选项
    4. FTP备份选项
    5. SCP备份选项
    6. Amazon S3备份选项
  4. 四、建议反馈
  5. 五、更新历史

VPS自动备份Shell脚本

VPS自动备份Shell脚本,用于Linux系统上一键备份和管理MySQL数据库以及Web数据,并自动上传至远程备份服务器。

一、特点与功能

  • 纯shell脚本,使用简单,技术门槛低,容易修改,删除即可卸载。
  • 可指定数据备份频率及保存的备份数量,能自动删除不必要的旧备份。
  • 可指定多个需要备份的Mysql数据库,甚至排除某个数据库不备份。
  • 可指定多个需要备份的数据目录,甚至支持二级目录打包备份。
  • 支持本地和多重备份(ftp,scp,amazon s3),异地备份可选完全和增量备份。

二、下载与使用

2.1、下载脚本

https://gist.github.com/1505857

wget http://blog.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守护进程

自动执行频率可随意设置,一般一小时一次就足够了。

crontab -e
0 * * * * /bin/bash  /var/shell/vps_auto_backup.sh

2.3、安装附加软件

如果你需要进行远程FTP、SCP备份,则需安装lftp、expect。

yum -y install lftp expect #centos
apt-get -y install lftp expect #ubuntu

三、配置选项

备份数据存放目录

BACKUP_DIR="/root/vps-bak"

MySQL备份选项

# 是否启用Mysql备份,0是关闭,1是启用。
ENABLE_MYSQL_BACKUP="1"
# 数据库备份时间间隔,1小时=3600秒。
MYSQL_BACKUP_CYCLE="43200"
# 数据库备份保存数量,默认保存最近4次备份。
# 例如:一天备份二次,需要保存最近二天备份,则此处填"4"
MYSQL_BACKUP_NUM="4"
# 数据库主机、用户名、密码。
MYSQL_HOST="localhost"
MYSQL_USER="root"
MYSQL_PWD="123456"
# 需要备份的数据库名,多个数据库要用空格分开,all表示所有数据库。
MYSQL_DB_NAMES="all"
# 需要排除备份的数据库名,多个数据库要用"|"分开。
MYSQL_EXCLUDE_DB="phpmyadmin|information_schema|performance_schema"

web备份选项

# 是否启用Web数据本地备份,0是关闭,1是启用。
ENABLE_LOCAL_BACKUP="1"
# 数据备份时间间隔,1小时=3600秒。
WWW_BACKUP_CYCLE="86400"
# 数据备份保存数量,默认保存最近2次备份。
# 例如:一天备份一次,需要保存最近二天备份,则此处填"2"
WWW_BACKUP_NUM="2"
# 需要备份的数据源目录,多个目录要用空格分开。
WWW_BACKUP_DIRS="/home /var/www"
# 需要备份的数据源目录深度,文件夹=0,文件夹+子文件夹=1
WWW_BACKUP_DEPTH="1"

FTP备份选项

# 是否启用远程FTP备份,0是关闭,1是启用。
ENABLE_FTP_BACKUP="0"
# FTP备份间隔,0表示禁用,1小时=3600秒
FTP_BACKUP_CYCLE="0"
# FTP备份模式,完全备份=0,增量备份=1
FTP_BACKUP_MODE="0"
# 远程FTP存储备份文件夹,如果不存在,则脚本会自动创建。
FTP_REMOTE_DIR="vps-bak"
# 远程FTP主机、用户名、密码。
FTP_HOSTNAME="192.168.8.128"
FTP_USERNAME="test"
FTP_PASSWORD="test"

SCP备份选项

# 是否启用远程scp备份,0是关闭,1是启用。
# 注意:为支持免证书登陆,需安装“expect”(yum -y install expect)
ENABLE_SCP_BACKUP="0"
# SCP备份间隔,0表示禁用,1小时=3600秒
SCP_BACKUP_CYCLE="0"
# 远程主机、用户名、密码。
SCP_HOST="192.168.8.128"
SCP_USER="root"
SCP_PASSWD="123456"
# 远程主机存储备份文件夹。
SCP_REMOTE_PATH="/root/vps-bak"

Amazon S3备份选项

# 是否启用Amazon s3备份,0是关闭,1是启用。
ENABLE_S3_BACKUP="0"
# Amazon s3 备份间隔,0表示禁用,1小时=3600秒
S3_BACKUP_CYCLE="0"
# Amazon s3备份模式,完全备份=0,增量备份=1
S3_BACKUP_MODE="0"
# Amazon s3 BUCKET名称,如果不存在,则脚本会自动创建。
S3_BUCKET="vps-bak"
# Amazon access key
ACCESS_KEY_ID="123456"
# Amazon secret access key
SECRET_ACCESS_KEY="123456"

四、建议反馈

如果您发现脚本存在错误或有更好的建议,可直接留言或发邮件至:

<myidwy(at)gmail.com>

五、更新历史

  • 2011.12.23: 更新至0.2版,支持自定义远程备份频率、优化代码减少冗余。
  • 2012.01.26: 更新至0.3版,修复在特定条件下,备份时间间隔值设置无效。
支持一下
扫一扫,支持一下