標籤:linux 指令碼 shell
今天接到有關部門反映,儲存的空間不夠了。需要刪除一些視頻檔案來騰出空間。由於剛接手工作沒多久,上任寫的是python指令碼。無奈,個人python水平還是入門。所以只能另寫個shell指令碼來完成工作了。
聲明:以下操作均為在虛擬機器上進行的,畢竟生產環境是不能夠亂來的,所以測試OK之後呢,再到線上執行指令碼方可。
要求:刪除/data/video/sports/shi/下面的視頻
思路:
1.首先有關部門已經將需要刪除的目錄,欄位 statusCode改為0,預設為1
2.根據statusCode的狀態查詢出要刪除的路徑
3.刪除視頻檔案完畢後,需要將statusCode的狀態改為1
好了,開整:
現狀:
[[email protected] shi]# lltotal 0-rw-r--r-- 1 root root 0 May 4 09:38 hc2012051620.mp4-rw-r--r-- 1 root root 0 May 4 09:38 hc2012051621.mp4-rw-r--r-- 1 root root 0 May 4 09:38 hc2012051622.mp4-rw-r--r-- 1 root root 0 May 4 09:38 hc2012051623.mp4
[[email protected] shi]# mysql -uroot -proot -e "use sne;select ContentID,PlayAddress,statusCode from del_video_file;"+-----------+---------------------------------------------------------------------+------------+| ContentID | PlayAddress | statusCode |+-----------+---------------------------------------------------------------------+------------| 128704 | http://xxx:17533/gdtv/sports/shi/hc2012051620.mp4 | 0 || 128705 | http://xxx:17533/gdtv/sports/shi/hc2012051621.mp4 | 0 || 128706 | http://xxx:17553/gdtv/sports/shi/hc2012051622.mp4 | 0 || 128707 | http://xxx:17553/gdtv/sports/shi/hc2012051623.mp4 | 0 |+-----------+---------------------------------------------------------------------+------------+
指令碼思路:
1.登入mysql查詢statusCode為0的記錄,並且用awk取到所需要的路徑
#!/bin/bash#author:ley#聲明路徑的變數,因為sql中的路徑並不是絕對路徑datadir=‘/data/video‘
result=`mysql -uroot -proot -e "use sne;select ContentID,PlayAddress from del_video_file where statusCode=0;"|awk ‘BEGIN{FS="17553/"} {print $2}‘`
2.用for迴圈依次刪除視頻檔案
for i in $resultdo rm -rf $datadir/$i echo "remove the file is ok"done
3.根據statusCode=0查詢出對應的ContentID
ContentID=`mysql -uroot -proot -e "use sne;select ContentID,PlayAddress from del_video_file where statusCode=0;"|awk ‘{print $1}‘`
4.再用for迴圈依次更新statusCode=1
for id in $ContentID do update=`mysql -uroot -proot -e "use sne;update del_video_file set statusCode=1 where ContentID=$id;"`if [ $? == 0 ] then echo "update is ok" else echo "update is error"fidone
5.查看statusCode的狀態已經為1了
[[email protected] script]# mysql -uroot -proot -e "use sne;select statusCode from del_video_file;"+------------+| statusCode |+------------+| 1 || 1 || 1 || 1 |+------------+
好了,指令碼大概就是這樣子了。一些細節問題,今後繼續完善吧。
本文出自 “梁恩宇-9527” 部落格,請務必保留此出處http://liangey.blog.51cto.com/9097868/1641878
根據欄位狀態刪除指定目錄檔案的shell指令碼