查看: 3742|回复: 1

[Linux系统] linux 极快海量删除小程序 (比rsync还快)

[复制链接]

帝王蝶

Rank: 4

主题
6
注册时间
2016.5.18
在线时间
54 小时

发表于 2018.9.30 12:48:04 | 显示全部楼层 |阅读模式
本帖最后由 hewm2008 于 2020.1.3 17:41 编辑

如这个网上搜  均是   介绍 rsync 可以快速删除几十w的目录
现介绍一个更快的方法,一小程序。
背景:
现实中一同事产生过 这么一个目录  里面放了1.65kw个子文件,文件夹大小就有3G。进入 ls 根本就出不来。
原先  他直接用  rm -rf 后台删除,发现过了一个月文夹名还是没有变化   后来服务器重启,即还是没有删除后来  进而用方法:  rsync来实现快速删除大量文件  后台运行了一个星期还是没办法
本人感觉必有问题,用了30分钟写了删除目录的小一个程序,发现仅仅两天就把这一个1.65kw个子文件的目录删除掉
后面用了copy了3个4k多个的test 时间,发现这个小程序真的是快
如下截图。 程序见后面代码



下面是代码,很简单,主要是递归思想:

[Perl] 纯文本查看 复制代码
#!/usr/bin/perl -w
use strict;
use FindBin qw($Bin);
use Data::Dumper;

sub usage{
        print STDERR <<USAGE;

Usage: perl $0   <in.Dir>

                   example:
                   perl $0  RmDir
                   perl $0  RmDir1  RmDir2
                   perl $0  \*qsub\*
                   perl $0  AA*/\*qsub\*

USAGE
}

usage()  unless (@ARGV >=1);

foreach my $k (0..$#ARGV)
{
        if  ( -d $ARGV[$k]  )
        {
                recur($ARGV[$k]);
                system (" rm -rf  $ARGV[$k] ") ;
        }
        else
        {
                system (" rm -rf  $ARGV[$k] ") ;
        }

}

sub recur
{
        my $indir = shift;
        opendir DIR, "$indir" or die $!;
        my @FileList=readdir(DIR);
        closedir DIR;
        for my $eachb (@FileList)
        {
                next if ($eachb eq "." || $eachb eq "..");
                my $filepaht="$indir/$eachb";
                if  ( -d $filepaht )
                {
                        recur($filepaht);
                }
                else
                {
                        unlink $filepaht;
                }
        }
        unlink  $indir;
}

##########swimming in the sea & flying in the sky #####################
########################hewm2008 ############################












本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1奥币 +10 收起 理由
基迪奥-李泽标 + 10 Well done!

查看全部评分

回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
46
注册时间
2018.7.19
在线时间
57 小时

热心会员活跃会员


发表于 2018.9.30 13:41:56 | 显示全部楼层
厉害了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表