通过rsync清除目录的shell脚本
生活随笔
收集整理的這篇文章主要介紹了
通过rsync清除目录的shell脚本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由于工作原因,要管理一些圖片服務器,其中有幾臺是作為圖片存放的機器,每臺機器配有10T的硬盤,最近硬盤告急,都只剩下幾百個G,所以要刪除一些圖片。
目前服務器有一億多個文件,刪過這種大量的小碎文件的朋友一定知道使用rm -rf的下場,效果非常的差,基本上看不到什么效果。通過find命令帶delete的效果也不太好,后來使用了rsync將空目錄同步過去的方式,效果比較好,一天大概能清理出400G的空間。
為了保證并發的效果,寫了腳本充當守護進程
?
#!/bin/sh?#./delete.sh?get_dir_path_cmd?rsync_delete_cmd_process_total_count?#./delete.sh?"find?/data1/sinawapcms/htdocs/images/iask/2012/08/*??-maxdepth?0"???20?????rsync_path=rsync?empty_dir=/tmp/empty/??get_rsync_process_num()?{??????echo??$(ps?-ef?|?grep?rsync?|?grep?delete?|?wc?-l);?}??#$1?is?rsync?cmd?,?$2?is?rsync?total?process?num?do_rsync_cmd()?{?????while?test?1?=?1??????do?????????if?test??$(get_rsync_process_num)?-lt?$2??????????then?????????????($1?>/dev/null?2>&1?&);?????????????break;?????????else?????????????sleep?100;?????????fi??????done???????}?if?!?(?$rsync_path?--version?>?/dev/null?2>&1?)??then?????echo?rsync?path?error;?????exit?1;??fi??if?!?ls?-l?$empty_dir??>?/dev/null?2>&1?then?????if?!?mkdir?-p?$empty_dir?>/dev/null?2>&1?????then?????????echo?Permission?Denied,?make?sure?you?have?permission?to?mkdir?-p?/tmp/empty?;?????????????exit?3;?????fi?fi??if?!?test?$(?ls?-la?$empty_dir?|?wc?-l)?=?3?then?????echo??Directoty?\"$empty_dir\"?is?not?empty,?empty?directory??;??????printf?"Enter?(Y/N):";?????read?action?<?/dev/tty;??????if?test?$action?=?"Y"?||?test?$action?=?'y'?????then?????????if?!?rm?-rf?${empth_dir}/*?>/dev/null?2>&1??????????then?????????????echo?Permission?Denied,?make?sure?you?have?permission?to?rm?-rf?$empty_dir;?????????????exit?3;?????????fi??????else?????????echo?error,?Directoty?\"$empty_dir\"?is?not?empty;?????????exit?2;?????fi???fi???dir=$($1);?#rsync?--delete-before?-a?-H??/tmp/empty/???/data1/sinawapcms/htdocs/images/iask/2012/08/ff/??>/dev/null?&?for?i?in?$dir?do?????sleep?5;?????cmd="$rsync_path?--delete-before?-a?-H?$empty_dir?${i}/"?;?????(do_rsync_cmd?"$cmd"?$2);?done調用方式:
./.sh????20??第一個參數用來獲取我們要清空的目錄?第二個參數限定并發數,防止服務器負載過高本文出自 “邱凱的技術博客” 博客,請務必保留此出處http://xdebug.blog.51cto.com/1135229/1067241
總結
以上是生活随笔為你收集整理的通过rsync清除目录的shell脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (Builder)建造者模式的Java实
- 下一篇: docker数据卷备份恢复以及配置桥接网