LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2474|回复: 9

这样的定时备份脚本应该怎样写?

[复制链接]
发表于 2005-3-17 14:32:02 | 显示全部楼层 |阅读模式
在局域网内,有两服务器,一台做主服务器,一台做备份服务器,要让服务器上一个目录定时拷贝一份到备份服务器上的指定目录下,拷贝一次新生成一个以当前日期和时间命名的目录,比如今天这时拷贝过去的就叫200503171426.

另外还有一个就是主服务器上的一个目录要定时增量拷贝到备份服务器的指定目录下,这个已经实现了,关键是上面的每拷贝一次新生成一个拷贝目录,应该怎样去写脚本呢???
 楼主| 发表于 2005-3-17 22:01:38 | 显示全部楼层
date='date +%F-%H-%M'
rsync -za -e ssh --delete --progress /var/lib/mysql/nbw1  root@192.168.222.208:/var/lib/mysql/$date

怎么拷贝过去的目录没以日期生成呢,却是%F-%H-%M?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-17 22:10:35 | 显示全部楼层
另外在本机上也要执行两个定时拷贝动作,一个是将一个目录直接拷贝到指定目录(这个拷贝可以采用增量拷贝),另外一个就是拷贝后的目录以当前日期和时间命名的目录下,就是拷贝一次生成一个目录

现在头大了,不知道怎么样去写这个脚本??请求帮忙,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-17 23:28:30 | 显示全部楼层
Post by netbuddy
date='date +%F-%H-%M'
rsync -za -e ssh --delete --progress /var/lib/mysql/nbw1  root@192.168.222.208:/var/lib/mysql/$date

怎么拷贝过去的目录没以日期生成呢,却是%F-%H-%M?


555555555555,急啊,这个变量不能转换成日期
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-18 00:15:58 | 显示全部楼层
date命令应该设置环境变量吧???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-18 00:39:07 | 显示全部楼层
#!/bin/sh
DATE=`date +%F-%H-%M`

#echo $DATE

rsync -za -e ssh --delete --progress /var/lib/mysql/nbw1 root@192.168.222.208:/var/lib/mysql/test/$DATE
原来是符号错误,我日,应该是` `,而不是' '
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-18 00:49:46 | 显示全部楼层
Post by netbuddy
另外在本机上也要执行两个定时拷贝动作,一个是将一个目录直接拷贝到指定目录(这个拷贝可以采用增量拷贝),另外一个就是拷贝后的目录以当前日期和时间命名的目录下,就是拷贝一次生成一个目录

现在头大了,不知道怎么样去写这个脚本??请求帮忙,谢谢



到此为止,两个机器备份问题解决,但本机上的备份还没想出好方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-18 10:38:03 | 显示全部楼层
rsync能否用于本机的备份???
异地备份已经可以用ysync搞定了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-19 11:34:42 | 显示全部楼层
可以用 rsync -ruv dirsrc dirdest 来同步本地目录
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-21 00:16:57 | 显示全部楼层
双机定时备份资料整理
运行ntsysv,确保crond服务和rsync服务都自动运行
chkconfig --list检查服务列表,rsync服务基于xinetd服务,首先保证xinetd已启动
service crond start
service rsync start

用ssh的公私钥的方法将两台机器用不输入密码的方法就可以访问,在主服务器终端:
cd /root
mkdir .ssh
ssh-keygen -t dsa
提示输入密码时不输入密码
将生成的 id_dsa.pub文件拷贝到备份服务器上,文件在你登陆用户目录的.ssh下
在备份服务器上将id_dsa.pub文件放到本机帐号的.ssh下,改名为authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
在主服务器上编辑备份脚本
cd /usr/sbin/
vi backup.sh
##############################################start###############################
#!/bin/sh
# 将所有错误信息重定向到文件/tmp/error.txt中
exec 2>/tmp/error.txt

#停止mysql&HP
/sbin/service httpd stop
/sbin/service mysql stop

#双机备份:用rsync备份数据库nbw1和论坛数据库vbb_db到备份服务器目标目录,生成以当前备份日期和时间命名的目录
date='date +%F-%H-%M'
rsync -za -e ssh --delete --progress /usr/local/mysql/data/nbw1 root@backserverIP:/DESTdir/$date
rsync -za -e ssh --delete --progress /usr/local/mysql/data/vbb_db root@backserverIP:/DESTdir/$date

#双机备份:用rsync异地同步备份htdocs目录,这样只拷贝不一样的内容并删除目标目录冗余内容
rsync -za -e ssh --delete --progress /usr/local/apache/htdocs root@DESTserverIP:/DESTdir

#本地备份:用rsync备份数据库nbw1和论坛数据库vbb_db到本机备份目录,生成以当前备份日期和时间命名的目录
rsync -ruv --delete --progress /usr/local/mysql/data/nbw1 /DESTdir/$date
rsync -ruv --delete --progress /usr/local/mysql/data/vbb_db /DESTdir/$date
#本地备份:用rsync本地同步备份htdocs目录,这样只拷贝不一样的内容并删除目标目录冗余内容
rsync -ruv --delete --progress /usr/local/apache/htdocs /localbackdir

#再次启动mysql&HP
/sbin/service mysql start
/sbin/service httpd start
#################################################end#################################
完成后,chmod +x backup.sh,将权限改为可执行
然后crontab -e编辑定时触发事件,每天凌晨3点执行backup.sh
01 3 * * *  /usr/sbin/backup.sh


完!睡觉去
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表