linux 下快速删除大量文件-问答-阿里云开发者社区-阿里云

开发者社区> a123456678> 正文

linux 下快速删除大量文件

2016-06-14 15:24:35 2889 1

假如你要在linux下删除大量文件,比如100万、1000万,像/var/spool/clientmqueue/的mail邮件,

像/usr/local/nginx/proxy_temp的nginx缓存等,那么rm -rf *可能就不好使了。
rsync提供了一些跟删除相关的参数
rsync --help | grep delete

 --del                   an alias for --delete-during  
 --delete                delete files that don't exist on the sending side  
 --delete-before         receiver deletes before transfer (default)  
 --delete-during         receiver deletes during transfer, not before  
 --delete-after          receiver deletes after transfer, not before  
 --delete-excluded       also delete excluded files on the receiving side  
 --ignore-errors         delete even if there are I/O errors  
 --max-delete=NUM        don't delete more than NUM files  

其中--delete-before 接收者在传输之前进行删除操作
可以用来清空目录或文件,如下:
1、先建立一个空目录
mkdir /data/blank
2、用rsync删除目标目录
rsync --delete-before -d /data/blank/ /var/spool/clientmqueue/
这样目标目录很快就被清空了

又假如你有一些特别大的文件要删除,比如nohup.out这样的实时更新的文件,动辄都是几十个G上百G的,也可

以用rsync来清空大文件,而且效率比较高
1、创建空文件
touch /data/blank.txt
2、用rsync清空文件
rsync -a --delete-before --progress --stats /root/blank.txt /root/nohup.out
building file list ...
1 file to consider
blank.txt

       0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)  

Number of files: 1
Number of files transferred: 1
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 27
File list generation time: 0.006 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 73
Total bytes received: 31

sent 73 bytes received 31 bytes 208.00 bytes/sec
total size is 0 speedup is 0.00

tips:
当SRC和DEST文件性质不一致时将会报错
当SRC和DEST性质都为文件【f】时,意思是清空文件内容而不是删除文件
当SRC和DEST性质都为目录【d】时,意思是删除该目录下的所有文件,使其变为空目录
最重要的是,它的处理速度相当快,处理几个G的文件也就是秒级的事
最核心的内容是:rsync实际上用的就是替换原理

取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:37:51
    删除50万个文件,各种方法的速度对比:
    
    先创建50万个文件:
    for i in $(seq 1 500000); do echo testing >> $i.txt; done
    
    各种删除方法:
    time rm -f * 删除失败,返回 -bash: /bin/rm: Argument list too long
    time find ./ -type f -exec rm {} \;
    time find ./ -type f -delete
    time rsync -a --delete EmptyDir/ BigDir/
    time perl -e 'for(<*>){((stat)[9]<(unlink))}'
    
    结果:
    perl用了1分钟
    rsync用了3分钟
    find with -delete用了5分钟
    find with -exec用了14分钟
    直接用rm结果是删除失败
    0 0
相关问答

29

回答

云计算之路:为什么要选择云计算

cnblogs 2013-03-27 10:22:27 142686浏览量 回答数 29

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 223025浏览量 回答数 162

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157097浏览量 回答数 145

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 643170浏览量 回答数 18

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 256885浏览量 回答数 38

294

回答

Linux Bash严重漏洞修复紧急通知(已全部给出最终修复方案)

qilu 2014-09-25 13:26:50 431630浏览量 回答数 294

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302619浏览量 回答数 249

97

回答

Redhat/CentOS一键安装web环境全攻略

xiaofanqie 2011-08-11 14:51:38 123221浏览量 回答数 97

40

回答

阿里云ecs从购买到环境搭建和建站!!(phpstudy一件包)

梦丫头 2014-07-29 20:51:49 162119浏览量 回答数 40

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 471472浏览量 回答数 24
+关注
0
文章
14879
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载