Fastdfs文件系统删除重复的文件

摘要:
/tmp/全部。txt#查找所有文件`cat/tmp/all。文本`;完成#查找文件uniq-c/tmp/all_md5的md5值。txt | sort-n-r#检查重复文件的数量。2.Fastdfs文件名/tmp/all.txt,数据库文件名/ttmp/sjk。txtcat/tmp/all。txt | awk-F/“{print$7}”>

环境: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

免责声明:文章转载自《Fastdfs文件系统删除重复的文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java 彩色图转灰度图Java将任意类型的Object对象转换为相应的实体对象下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

dbstart和dbshut启动、关闭数据库报错ORACLE_HOME_LISTNER is not SET解决办法

dbstart启动数据库报错,如下: [oracle@wen ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net ListenerUsage: /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart ORACLE...

MYSQL 数据库导入导出命令

在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。 MySQL命令行导出数据库 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:Program FilesMySQLMySQL Server 4.1in (或者...

(一)FastDFS 高可用集群架构学习---简介

1、什么是FastDFS FastDFS 是余庆老师用c语言编写的一筐开源的分布式文件系统,充分考虑了冗余备份,负载均衡,线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS可以很容易搭建一套高性能的文件服务器集群提供文件上传下载. FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储支持存储服务器在线扩容支持相同内容的文件只...

linux_redhat9下安装FTP服务器

1 ftp服务器的安装 有几种安装方式: 第一种直接利用rpm安装包一个接一个进行安装。在RedHat-Linux9.0的第三张安装光盘下找到rpm目录(或者是从192.168.4.4老徐利用学校的服务器开设的ftp下载,或者是从互联网上下载),把里面的vsftpd-1.1.3.8.i386.rpm文件复制到文件系统的任意目录下。然后,在vsftpd-1....

用友T3、T6常见问题

1.青岛北苑家具:用友通10.3备份时提示“压缩失败!UFDATA。BAK” 问题解决:清理临时备份文件54599424uftmpufdata.bak后,备份成功。 原因:D盘空间太小。 2.青岛北宛家具:用友通10。3固定资产结转年度数据时提示:列名bbltransdeprt无效。 问题解决:在数据库中的fa_card表增加dbltransdeprt列...

数据库出现中文乱码解决方法

遇到这样的问题,首先先不要着急,肯定是编码的问题,先检查下我们所使用表的编码方式,使用mysql命令: show create table 表名; 1.查看编码方式 中文的编码方式为gbk 或 UTF-8; 2.如果表的编码方式为gbk,则查看每个字段的编码方式 如果不为中文编码方式 则修改 ALTER TABLE `表名` CHANGE `列名` `列名...