仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 928|回复: 8
打印 上一主题 下一主题

[shell编程] 来一发备份文件后主动对照、删除剧本

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:14:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!比来公司在举行数据备份企图,以是我编写了“scp主动复制剧本”与“rsync+inotify完成办事器之间文件及时同步”的2个备份文档,2个计划都乐成的被利用,向导与同事都以为能办理备份成绩,接上去在举行备份的时分,也没用发明成绩,证实我弄的备份文档还能够,向导还说我弄的不错。
但在接上去备份的半途,发明办事端(也就是要做备份的办事器)的磁盘空间满了,在这台办事器的一些办事写不了输出到办事器里(这个是经由过程nagios监控磁盘空间失掉的报警邮件,但我明显设置为磁盘空间凌驾80%warning报警,凌驾90%举行crtical报警,但磁盘空间都满了才收到报警,不晓得那里设置错了,还在查找),以是我们盘算清算一些文件,取得一些空间。当我上岸办事器就发明没有甚么能够删除的文件,但办事器磁盘空间都满了凌驾5分钟了,向导们都很发急,最初没举措只能在正在举行备份义务的办事端,删除一些已备份到备份办事器的文件,这个是最初的举措了,但谁人备份的目次里有8509个文件夹,每一个文件夹里有3000-7000摆布的txt文件,我事先举行的是scp主动复制,假如想删除哪些文件的话,还得往备份端检察哪些文件已在备份端吸收了,然后在往办事端删除,如许的话,太华侈工夫了,并且事情量太年夜,每一个文件约莫能有3-5m,刚入手下手我清算了20个,取得了83m,如许办事真个使用办事能够写进数据到办事器了,但天生的文件速率太快了(之前磁盘空间年夜的时分也没用注重),比我删除的速率都快,如许的话,过一会磁盘就又满了。没举措,我就盘算用剧本来办理此成绩,在经由30分钟摆布工夫,总算写成了一个剧本,在测试机里测试了几遍没用成绩发明,就在临盆的办事器里运转了这个剧本,发明删除速率很快,没用误删除文件,总算办理了这个成绩。上面是我为这个“备份文件主动对照、删除剧本”写的运维职员利用手册,一个手艺文档。

备份文件主动对照、删除剧本
1、目标
因为引擎办事器里使用办事每五秒天生一个文件夹,每一个文件夹有3000-7000摆布的txt文档,以是形成引擎办事器的磁盘空间丰满,不克不及一般的事情,为懂得决这类情形,我编写了“ssh信托与scp主动备份剧本”与“rsync+inotify及时同步办事器文件”这2种办理***,但发明备份义务能够完成,并切合公司平台的请求,但在做备份的时分,极可能引擎办事器的磁盘空间就满了,没有举措一般事情,大概在备份完成的时分,因为文件数量良多,没有举措晓得哪些是备份完成的,哪些是没有备份的,实时做wc-l对照也不可,以是依据这类情形,我又编写了一份“备份文件主动对照、删除剧本”,用主动化的体例来完成备份文件的主动对照、删除,办理了磁盘空间满的成绩,为我们运维的事情节俭了良多的工夫,往办理其他的成绩。
2、完成机制
是经由过程剧本的体例完成主动化,在办事端与备份端都运转此剧本,发生日记,并把备份真个日记传到办事端,并在办事真个要备份目次里,运转rm剧本,完成了备份文件主动对照、删除。
3、剧本内容注释A.办事端server
  1. #!/bin/bashserver="$(ls-l/usr/local/lbs/file/area|awk{print$9})"###此为检察要备份的目次,并把他的文件名复制到server_log日记里echo$server>/tmp/server_log
复制代码

注重:在server剧本内里,server="$(ls-l/usr/local/lbs/file/area|awk{print$9})"这个内里,ls-l/usr/local/lbs/file/area是你做备份的目次(是办事端呆板的要做备份的目次),另有谁人awk{print$9}假如你在利用英笔墨体的办事器上,利用$9;假如是中笔墨体的办事器上,利用$8,怎样查询以后办事器利用哪一种字体,可使用cat/etc/sysconfig/i18n下令,查询了局为LANG="en_US.UTF-8",则是英笔墨体;查询了局为LANG="zh_CN.UTF-8",则为中笔墨体。
B.备份端back
  1. #!/bin/bashback="$(ls-l/home/beifen/area|awk{print$9})"###此为检察做备份的目次,并把它的文件名卖力到back_log日记里echo$back>/tmp/back_log
复制代码

在back剧本内里,ddir="$(ls-l/home/back/area20120208|awk{print$9})"这个内里,/home/back/area20120208是你做备份的目次(是备用呆板的目次),另有谁人awk{print$9}假如你在利用英笔墨体的办事器上,利用$9;假如是中笔墨体的办事器上,利用$8,
怎样查询以后办事器利用哪一种字体,可使用cat/etc/sysconfig/i18n下令,查询了局为LANG="en_US.UTF-8",则是英笔墨体;查询了局为LANG="zh_CN.UTF-8",则为中笔墨体。
C.办事真个rm
  1. #!/bin/basha="$(cat/tmp/server_log)"##界说a为检察办事端日记里文件名b="$(cat/tmp/back_log)" ##界说b为检察备份端日记里文件名 forain$b; ##假如办事真个文件名与备份真个文件名一向,那末在办事端删除备份端里的文件名,如许在办事端就没有了这个文件,节俭了磁盘空间,而在备份端还存在这个文件,起到了备份的企图义务。dorm-rf$bdone
复制代码

4、安排剧本1、在备份端
把back上传到备份端,给764权限然后运转shback,就可以在/tmp里看到一个back_log日记文件发生,并把此文件上传到被备份真个/tmp目次下;2、办事端A.把server上传到此办事器上,给764权限然后运转shserver,就可以在/tmp里看到一个server_log日记文件发生;B.把rm上传到此办事器,详细路径为/usr/local/lbs/file/area,给764权限;C.运转shrm,守候一会就可以主动的删除area里的文件(只是在存储里删除贵州备用呆板里已有的文件)5、备注此剧本只合用与备份真个(/home/beifen/area)与被备份真个(/usr/local/lbs/file/area)之间的文件传输与主动删除area里的文件,其他情形不合用。假如你想举行备份其他目次里的文件的话,必要修正办事端server里的内容与备份端back里的内容,而且把rm上传到办事端中要做备份里的目次下。
以上是我编写的运维手册,大概人人良多中央看不分明,我鄙人面举行一些操纵,可使人人更分明。
上面是举行操纵的2太办事器的布局,分离有主机名、ip地点、备份的身份status(是办事端仍是备份端)、体系、内核、位数;



1、办事端(我这里是savecenter)
把server上传到办事器的tmp/test目次下,并赐与744权限;(此剧本必要举行依据情况举行修正,依据今朝情形我的修正以下)
  1. #!/bin/bashserver="$(ls-l/tmp/test|awk{print$9})"###此为检察要备份的目次,并把他的文件名复制到server_log日记里echo$server>/tmp/server_log
复制代码

2、备份端(我这里是nagios)
把back上传到办事器的tmp/test目次下,并赐与744权限;(此剧本必要举行依据情况举行修正,依据今朝情形我的修正以下)
  1. #!/bin/bashback="$(ls-l/tmp/test|awk{print$9})"###此为检察做备份的目次,并把它的文件名卖力到back_log日记里echo$back>/tmp/back_log
复制代码

如今剧本已上传到办事器里,筹办事情完成,上面能够测试我的剧本了。但我仍是先申明一下,此次实行的目标,是要在办事端(savecenter)里创建1-10,10个文件夹,然后在备份端(nagios)创建1-5,5个文件夹,在利用我的剧本,检察可否主动的举行对照与删除。
但为何必要在办事端创建10个文件夹,备份端创建5个文件夹呢?
由于假如办事端在做备份的时分,把文件备份到备份端,但大概备份没有完成,还正在举行备份义务,以是大概办事端里有10个文件夹,但备份端里只承受到了5个,但这时候办事真个磁盘空间满了,为了取得空间,必要删除已做备份的文件,以是我这里是在办事端里创建了10个文件夹,备份端创建了5个文件夹,代表备份没有完成、正在举行,然后利用我的剧本,删除办事端里跟备份真个5个文件夹不异名字的文件夹,假如无误,申明我的剧本可以完成备份的文件主动对照、删除。
3、如今在办事端创立1-10,10个文件夹,了局以下图



4、在备份端创立1-5,5个文件夹,了局以下图



5、如今在办事端运转server剧本,就可以取得server_log日记,内里内容都是/tmp/test下1-10,10个文件夹的名字;



6、在备份端运转back剧本,能失掉back_log日记,内里的内容为/tmp/test下1-5,5个文件夹的名字



7、如今把备份真个back_log日记,传到办事真个tmp目次下
  1. [root@nagiostmp]#scpback_log172.16.6.2:/tmpback_log100%100.0KB/s00:00
复制代码

8、把rm上传到办事器的tmp/test目次下,并赐与744权限;(此剧本必要举行依据情况举行修正,依据今朝情形我的修正以下)
  1. #!/bin/basha="$(cat/tmp/server_log)"##界说a为检察办事端日记里文件名b="$(cat/tmp/back_log)" ##界说b为检察备份端日记里文件名 forain$b; ##假如办事真个文件名与备份真个文件名一向,那末在办事端删除备份端里的文件名,如许在办事端就没有了这个文件,节俭了磁盘空间,而在备份端还存在这个文件,起到了备份的企图义务。dorm-rf$bdone
复制代码

9、在办事端运转rm剧本,它主动对照server_log日记与back_log日记,假如server_log日记里的名字在back_log里,就删除back_log日记里的内容,到达主动对照、删除功效
上面是办事端运转rm的情形与了局图



从图上看,1-5,5个文件夹都已删除
上面是备份真个tmp/test下的截图



从下面能够瞥见,1-5,5个文件夹没有变更,以是我的这个“备份文件主动对照、删除剧本”完成了备份文件的主动对照并主动删除义务。
总结:我编写的这个“备份文件主动对照、删除剧本”合用于备份的文件数量多,正在举行备份义务,但必要删除已做备份的文件,大概备份义务完成,但备份的文件良多、很杂,删除必要对照在删除,很华侈工夫与人力,利用了此剧本加上我前文写的“ssh信托与scp主动复制剧本”与“rsync+inotify及时同步办事器文件”能够完成主动化的、及时的同步大概备份办事器文件,并在正在举行备份义务大概完成备份义务的时分,主动对照、删除已备份的文件,节俭人力与工夫。
固然我写的对照多,并且大概有点庞大,但完成的功效仍是很强的,剧本也很简单读懂,假如列位想在本人的情况下运转,必要依据列位的必要举行响应的修正了,假如另有甚么不懂的中央,能够留言给我,我会实时的帮列位解答.
上面是原文作者的“ssh信托与scp主动复制剧本”与“rsync+inotify及时同步办事器文件”链接:
“ssh信托与scp主动复制剧本”http://dl528888.blog.51cto.com/2382721/769519
“rsync+inotify及时同步办事器文件”http://dl528888.blog.51cto.com/2382721/771533
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!
因胸联盟 该用户已被删除
沙发
发表于 2015-1-15 06:54:54 | 只看该作者

来一发备份文件后主动对照、删除剧本

占坑编辑ing
老尸 该用户已被删除
板凳
发表于 2015-1-25 18:56:28 | 只看该作者
安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果Linux说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-4 01:42:28 | 只看该作者
对我们学习操作系统有很大的帮助,加深我们对OS的理解。?
若天明 该用户已被删除
5#
发表于 2015-2-9 13:25:27 | 只看该作者
笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机
小女巫 该用户已被删除
6#
发表于 2015-2-27 13:06:48 | 只看该作者
学习Linux,应该怎样学,主要学些什么,一位Linux热心学习者,一段学习Linux的风云经验,历时十二个小时的思考总结,近十位网络Linux学习者权威肯定,为您学习Linux指明方向。
爱飞 该用户已被删除
7#
 楼主| 发表于 2015-3-9 17:13:47 | 只看该作者
感谢老师和同学们在学习上对我的帮助。
山那边是海 该用户已被删除
8#
发表于 2015-3-17 03:10:29 | 只看该作者
首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。
admin 该用户已被删除
9#
发表于 2015-3-23 22:06:19 | 只看该作者
再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-29 01:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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