Linux 通过脚本实现远程数据的自动备份,linux脚本备份
Linux 通过脚本实现远程数据的自动备份,linux脚本备份
在数据化飞速发展的今天,数据的定期备份成了数据安全首要考虑的问题。一旦出现了问题或故障,导致数据无法正常读取,那么原有的重要数据又如何得以保存下来呢。当然不能采用本机备份了,这样的备份风险很大,极有可能鸡飞蛋打,如果机器都宕掉了,本机备份的数据也就没法利用啦。因此,采取远程服务器作为备份机(远程数据备份)就变的很重要了。
远程手动备份费时费力而且还不及时,最好的办法就是通过脚本实现远程自动备份。但远程备份无论是通常通过SSH方法登陆到业务服务器(数据服务器),通过scp拷贝文件时都说需要不断输入登录密码。为了解决这个问题可以采用“SSH证书登录方式”,实现SSH无需输入密码来进行登录啦。说了这么多的废话,现在就开始一步步动手做吧。
1.配置“SSH证书登录方式(无密码验证登录)”
※具体配置请参看SSH证书登录方式(无密码验证登录)
2.编辑crontab文件
※crontab是Linux下的一个命令,位于/etc/crontab,用来将指定的脚本等在指定的时间进行执行,即:定时用来某个任务。
如设置每天凌晨1:00执行cron.daily中的脚本:
00 1 * * * root run-parts /etc/cron.daily
3.编辑自动备份脚本
在/etc/cron.daily/目录下放入脚本
cd /etc/cron.daily/ vi bakeup_script
待续……
cron -e 编辑调度。。后面追加你要执行的脚本就行了。
#!/bin/sh
#BAKDIR可以换一个你喜欢的
BAK_DIR=/backup
#*为未知,自己查一下怎么取星期啦, 要0-6那个
DATE=$(date +%*)
#自己查一下怎么周数啦
WEEK=$(date +%*)
#备份文件名
FULL_BAK=full_back.$WEEK.tar.bz2
INCRE_BAK=increment_back.$WEEK.$DATE.tar.bz2
#其实没什么不同的,只是要改文件名而已
if [ $DATE -eq 0]; then
tar -g $BAK_DIR/sn.$WEEK cjf $BAK_DIR/$FULL_BAK
else
tar -g $BAK_DIR/sn.$WEEK cjf $BAK_DIR/$INCRE_BAK
fi
exit $?
# 把任务加到crontab里就行了,每天执行一次
================
#!/bin/sh
BAK_DIR=/backup
#还原目录
RECOVER_DIR=/
FULL_BAK=full_back.$WEEK.tar.bz2
INCRE_BAK=increment_back.$WEEK.$DATE.tar.bz2
echo -n "recover from week: "
read WEEK
if [ -e $BAKDIR/$FULL_BAK ]; then
tar xjf $BAK_DIR/$FULL_BAK -C $RECOVER_DIR
for N in $(seq 6); do
if [ -e $BAK_DIR/$INCRE_BAK ]; then
tar xjf $BAK_DIR/$INCRE_BAK -C $RECOVER_DIR
fi
done
else
echo "Backup file not exist!! exit now~~"
fi
exit $?
# 这个是手动执行的,要自己输入想还原到的周数年
补充:
可能要自己调试一下
评论暂时关闭