实现通用的本地与远程数据备份SHELL脚本
2012-06-01 23:50:41   来源:我爱运维网   评论:0 点击:

备份工作是运维人员必须需要完成的,常规的,且极其重要的工作内容。备份操作常用于日常维护,升级,迁移,灾难恢复,一个通用的重要的备份...

备份工作是运维人员必须需要完成的,常规的,且极其重要的工作内容。备份操作常用于日常维护,升级,迁移,灾难恢复,一个通用的重要的备份工具或脚本必不可少。

一般地讲,备份数据包括但不限于:系统配置,系统参数,应用代码,应用数据,自定义工具,定时任务,重要文件等等;备份周期或频次可以是小时,天或周(一般是天),备份时间通常放在业务低峰值(如凌晨2-8点);备份的方法有全备份与增量备份(一般全备份);备份的拷贝应该保留7份以上(考虑到7天长假因素);备份还要考虑本地与异地(防灾难)。

实现通用的本地与远程数据备份SHELL脚本


综合考虑到以上提到的备份工作要素,经过多年的优化,终于实现通用的本地与远程数据备份SHELL脚本,也可以说是Unix系统下较完善的备份工具:
一、建立备份用户及SSH免密码认证方式--实现远端备份前提
1、备份机与远端存放备份机需均规划备份用户及备份数据存放目录,运行以下命令:
#建备份数据存放目录,如/data/backup/bak_data
mkdir -p /data/backup/bak_data;
#建备份脚本存放目录,如/data/backup/tools
mkdir -p /data/backup/tools;
#建备份用户,如backup
useradd -d /data/backup backup;
chown -R backup.backup /data/backup
注:并不需要为backup设置密码;备份机与远端存放备份的服务器均需运行。

2、实现备份机与远端存放备份服务器之间的免密码SSH认证
在备份机上运行:
su - backup
ssh-keygen (请按3次回车,将在backup的家目录的.ssh目录下生成2个文件:id_rsa,id_rsa.pub)
cd ~backup/.ssh
echo "id_rsa" > identification

在远端服务器上运行:
su - backup
mkdir -p ~backup/.ssh
cd ~backup/.ssh
将备份机上生成的id_rsa.pub文件内容存为authorized_keys2文件(或者先传入id_rsa.pub文件,再使用cat id_rsa.pub >> authorized_keys2)

在备份机上以backup身份测试一下:
ssh server_ip(远端存放备份的服务器IP)

3、备份脚本backup.sh(建议放置在backup家目录的tools目录下,如/data/backup/tools):
#!/bin/sh
#Backup Tools, named:backup.sh
#developed by Senior OP Engineer
#Powered by www.5iops.com
DATE=`date +%w`
#定义备份运行家目录
ROOT="/data/backup"
#配置需要备份的数据BASE,如本例中备份了网络参数,NGINX配置,CRONJOB,密码及应用代码等数据
BASE="/etc/sysconfig/network /etc/hosts* /usr/local/nginx/conf/*.conf* /var/spool/cron/* /etc/passwd /etc/shadow /etc/group /data/www"
#定义应用代码中不需要数据EXFILE,如临时用户上传的数据
#EXFILE="/data/www/uploadfile"
EXFILE=""
#定义远端存放备份的服务器IP,如120.132.233.66
DEPOT="120.132.233.66"
#定义运行备份的用户名,如backup
USERNAME="backup"
#定义备份

相关热词搜索:SHELL 备份脚本 备份方法

上一篇:活用awk高效进行文本或日志分析处理
下一篇:有用的Nginx日志分析awk脚本

分享到: 收藏
评论排行