Linux下删除大量文件效率对比

测试一下Linux下面删除大量文件的效率。

首先建立50万个文件

$ test   for i in $(seq 1 500000);do echo text >>$i.txt;done

1.   rm删除

$ time rm -f *
zsh: sure you want to delete all the files in /home/hungerr/test [yn]? y
zsh: argument list too long: rm
rm -f *  3.63s user 0.29s system 98% cpu 3.985 total
由于文件数量过多,rm不起作用。
2.  find删除
 $ time find ./ -type f -exec rm {} \;
    find ./ -type f -exec rm {} \; 49.86s user 1032.13s system 41% cpu 43:19.17 total
大概43分钟,我的电脑。。。。。。边看视频边删的。
3.  find with delete
$ time find ./ -type f -delete
   find ./ -type f -delete  0.43s user 11.21s system 2% cpu 9:13.38 total
用时9分钟。
4.  rsync删除
# 首先建立空文件夹blanktest
$ time rsync -a --delete blanktest/ test/
   rsync -a --delete blanktest/ test/  0.59s user 7.86s system 51% cpu 16.418 total16s
很好很强大。

 5.  Python删除

import os
import timeit

def main():
    for pathname,dirnames,filenames in os.walk(‘/home/username/test‘):
        for filename in filenames:
            file=os.path.join(pathname,filename)
            os.remove(file)
if __name__==‘__main__‘:
t=timeit.Timer(‘main()‘,‘from __main__ import main‘)
print t.timeit(1)  
1
2
$ python test.py 529.309022903
 大概用时9分钟。
                
6.  Perl删除
$ time perl -e ‘for(<*>){((stat)[9]<(unlink))}‘
   perl -e ‘for(<*>){((stat)[9]<(unlink))}‘  1.28s user 7.23s system 50% cpu 16.784 total16s
这个应该最快了。
7、结果:
rm:文件数量太多,不可用
find with -exec 50万文件耗时43分钟
find with -delete 9分钟
Perl  16sPython 9分钟
rsync with -delete  16s
结论:删除大量小文件rsync最快,最方便。

原文地址:https://www.cnblogs.com/xzlive/p/12623258.html

时间: 2024-09-30 11:14:37

Linux下删除大量文件效率对比的相关文章

Linux下删除乱码文件

Linux下删除乱码文件: 1. ls -i 列出文件的节点ID, 如: 123456789 2. find ./ -inum 123456789 -print -exec rm -rf {} \; 批量删除: for n in 123456789 987654321;do find . -inum $n -exec rm -f {} \;;done

linux下删除整个文件夹或者文件命令实例

1.linux删除文件夹命令 在用Linux的时候,有时候要删除一个文件夹,往往会提示次此文件非空,没法删除,这个时候,就必须使用rm -rf命令. 2.linux删除文件夹实例: rm -rf /var/log/httpd/access 将会删除/var/log/httpd/access目录以及其下所有文件.文件夹 3.linux删除文件实例: rm -f /var/log/httpd/access.log 将会强制删除/var/log/httpd/access.log这个文件 -r 就是向下

linux下删除大量文件

linux下删除大量文件时,显示如下 bash: /bin/rm: Argument list too long 解决方法: ls | xargs -n 10 rm -fr ls当然是输出所有的文件名(用空格分割) xargs就是将ls的输出,每10个为一组(以空格为分隔符),作为rm -rf的参数 也就是说将所有文件名10个为一组,由rm -rf删除.

经验分享-关于在linux下删除大文件后,磁盘空间没有得到释放的解决办法

这个博客很早就注册啦,但是一直没有更新,最近辞职闭关清修,争取每天写一篇技术博客-- 闲话不多说,直接开始切入正题啦- 事情发生在2014年的4月份,人生中的第一次跳槽,成功的入职一家刚刚起步的 CDN的公司,做了一名不称职的研发运维,当时正好赶上前任运维离职,最开始公司之前用的是多squid,由于公司现在的团队中对squid比较了解的人都走光了,在加上多squid有一个严重的弊端,就是本机多个squid进程之间缓存的内容是无法共享的,有的时候同一个文件则会被缓存多分,十分浪费磁盘空间,由于本机

linux下删除乱码文件,目录

查询到目录或文件的inode号 进入乱码文件或目录的目录下 []$ ls -li 6878 -rw-r--r-- 1 patrol patrol 0 Aug 19 16:37 ##??? []$ find . -inum 6878 -exec \rm -rf {} \; []$ ls []$ 这样就可以根据inode号,就删除了.

linux下自动ftp到服务器对比拷贝指定目录下文件

#!/bin/bash process=8 PWD=`pwd` DAT=`date` ftpip="192.168.1.1" user="ftp_username" password="ftp_password" local_dir="/home/" getlist() { ftp -n $ftpip <<EOF |awk '{print $9}'|sed '/^$/d' >$PWD/list user $u

Linux下几种文件传输命令

Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等敏感信息进行加密,因此可以有效的防止用户信息在传输的过程中被窃取,比FTP有更高的安全性.在功能方面与FTP很类似,不仅可以传输文件数据,而且可以进行远程的文件管理(如建立,删除,查看文件列表等操作).Sftp与ftp虽然只有一字之差,但基于

linux下的 lib文件的学习思考

说到这个LIB文件,先从一个小故障说起. 某日开发说,一台测试用虚机可以PING通SSH不能连了.运维同学就赶紧去查,SSHD_CONFIG配置文件都正确啊,一点错误都没有,那为什么呢? 测试下,不管连自己还是其他机,都是报错 这里注意看,提示你有个libcom_err.so.2共享库文件找不到. 询问开发,才了解他们测试一个软件,意外删除了某个库文件. 那么在正常的相同虚机的机器查看下,再和出错的虚机比对下,发现少了2个库文件 挂载系统光盘或从正常的虚机上把这个两个文件拷贝过来,放到lib64

Linux下压缩某个文件夹(文件夹打包)

tar -zcvf /home/xahot.tar.gz /xahottar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.tar.gz的文件.zip 压缩方法:压缩当前的文件夹 zip -r ./xahot.zip ./* -r表示递归zip [参数] [打包后的文件名] [打包的目录路径]解压 unzip xahot.zip 不解释linux zip命令的基本用法是:linux zip命令参数列表:-a 将文件转成ASCI