zoukankan      html  css  js  c++  java
  • 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 `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
    做一个决定,并不难,难的是付诸行动,并且坚持到底。
  • 相关阅读:
    RPC 接口必须是业务职责
    一套高可用、易伸缩、高并发的IM群聊、单聊架构方案设计实践
    t
    hessian-serialization
    服务拆分 服务设计
    灰度架构设计方案
    有赞发号器多机房方案
    解析MySQL中存储时间日期类型的选择问题
    t
    在阿里,我如何做好技术项目管理?
  • 原文地址:https://www.cnblogs.com/wukc/p/13441392.html
Copyright © 2011-2022 走看看