根據欄位狀態刪除指定目錄檔案的shell指令碼

來源:互聯網
上載者:User

標籤: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指令碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.