1. 程式人生 > 實用技巧 >Fastdfs檔案系統刪除重複的檔案

Fastdfs檔案系統刪除重複的檔案

環境:centos、fastdfs

Fastdfs檔案系統刪除重複的檔案

問題:fastdfs檔案系統磁碟空間瘋狂擴充套件。

原因:fastdfs產生了很多的檔案備份,要找到重複檔案,排除在使用的檔案刪除其他的檔案。

根源可能是程式反覆上傳原因,開發進行跟中

刪除不需要檔案思路:

1、檢視檔案重複情況

2、列出所有檔案系統檔案,和從資料庫找到所有在用的檔名稱

3、處理fastdfs匯出的所有的檔案路徑名稱 和 資料庫匯出名稱格式一樣

4、比對fastdfs和資料庫的名稱,找出沒有在資料庫中的檔名稱

5、根據比對結果找到fastdfs的檔案路徑,進行刪除

1、找到所有檔案,並通過md5檢視重複情況

find /data/fdfs_storage/data -type f -name “*.jpg” > /tmp/all.txt   #找出所有檔案
for i in `at /tmp/all.txt`;do md5sum $i >> /tmp/all_md5.txt;done    #查出檔案的md5值
uniq -c /tmp/all_md5.txt|sort -n -r                                 #去重檢視重複檔案數

2、fastdfs 檔名稱/tmp/all.txt ,資料庫檔名稱 /tmp/sjk.txt

cat /tmp/all.txt|awk -F / ‘{print $7
}’ >> /tmp/all_fastdfs.txt #處理fastdfs檔案和資料庫檔案一樣 sort /tmp/all_fastdfs.txt >> /tmp/all_fastdfs_new.txt #對fastdfs檔案進行排序 sort /tmp/sjk.txt >> /tmp/sjk_new.txt #對資料庫檔案進行排序 comm /tmp/all_fastdfs_new.txt /tmp/sjk_new.txt -2
-3 >> /tmp/fastdfs-sjk.txt #fastdfs檔案排除資料庫的檔案,這些檔案是要刪除的檔案

3、找出這些檔案並刪除

for i in `/tmp/fastdfs-sjk.txt`;do grep $i  /tmp/all.txt > /tmp/delete-fasts.txt;done #找出檔案路徑
for i in ` /tmp/delete-fasts.txt`;do rm -rvf $i;done                                  #刪除檔案

4、常用命令

uniq [ -c | -d | -u ] [ -f Fields ] [ -s Characters ] [ -Fields ] [ +Characters ] [ InFile [ OutFile ] ]
   -c 在輸出行前面加上每行在輸入檔案中出現的次數。
  -d 僅顯示重複行。
  -f  忽略由 Fields 變數指定的欄位數目。如果 Fields 變數的值超過輸入行中的欄位數目, uniq 命令用空字串進行比較。這個標誌和 -Fields 標誌是等價的。
  -u 僅顯示不重複的行。
例子:查詢一個檔案重複最多的前10條記錄:

   uniq -c file | sort -n -r |head -10

comm命令語法:comm [-123] [--help][--version][file1][file2]

comm命令引數:
  -1   不顯示只在第1個檔案裡出現過的列。
  -2   不顯示只在第2個檔案裡出現過的列。
  -3   不顯示只在第1和第2個檔案裡出現過的列。

FastDFS常見命令
 
1: 啟動FastDFS
          tracker: /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
          storage: /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
2:關閉FastDFS
          tracker:/usr/local/bin/stop.sh /usr/local/bin/fdfs_tracker
          storage:/usr/local/bin/stop.sh /usr/local/bin/fdfs_storage
        或者 killall fdfs_trackered(storaged)  -------注意,千萬不要使用-9強行殺死程序。
3:重啟FastDFS
          tracker:/usr/local/bin/restart.sh /usr/local/bin/fdfs_trackered
          storage:/usr/local/bin/restart.sh /usr/local/bin/fdfs_storaged
4:檢視叢集情況
          在任意一臺storage(tracker也可以) /usr/local/bin/fdfs_monitor /etc/fdfs/storage.conf
5:刪除一個storage:
           在任意一臺storage(tracker也可以) /usr/local/bin/fdfs_monitor /etc/fdfs/storage.conf delete group2 20.12.1.73
6:上傳檔案
          /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/02.jpg
7:刪除上傳的檔案
         /usr/local/bin/fdfs_delete_file   配置檔案   需要刪除的檔案路徑
        /usr/local/bin/fdfs_delete_file  /etc/fdfs/client.conf  group3/M00/00/00/wKgAUE5yiVK0VEpSACiWWseqpak.tar.gz