環境: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 `cat /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