温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux一次删除一百万个文件的最快方法

发布时间:2021-08-26 15:10:25 来源:亿速云 阅读:134 作者:chen 栏目:系统运维

本篇内容介绍了“Linux一次删除一百万个文件的最快方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

环境:

  • CPU: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz

  • MEM: 4G

  • HD: ST3250318AS: 250G/7200RPM

Linux一次删除一百万个文件的最快方法

使用 –delete 和 –exclude,你可以选择性删除符合条件的文件。还有一点,当你需要保留这个目录做其它用处时,这种方法是再适合不过了。

重新测评

几天前,Keith-Winstein在回复Quora上的这个帖子时说我之前的测评无法复制,因为操作的时间持续的太久。我澄清一下,这些数据过大,可能是因为我的计算机在过去的几年里做的事太多,测评中可能存在一些文件系统错误。但我不确定是这些原因。现在好了,我弄了一天比较新的计算机,把测评再做一次。这次我使用/usr/bin/time,它能提供更详细的信息。下面就是新的结果。

(每次都是1000000个文件。每个文件的体积都是0。)

Linux一次删除一百万个文件的最快方法

原始输出

# method 1 ~/test $ /usr/bin/time -v  rsync -a --delete empty/ a/         Command being timed: "rsync -a --delete empty/ a/"         User time (seconds): 1.31         System time (seconds): 10.60         Percent of CPU this job got: 95%         Elapsed (wall clock) time (h:mm:ss or m:ss): 0:12.42         Average shared text size (kbytes): 0         Average unshared data size (kbytes): 0         Average stack size (kbytes): 0         Average total size (kbytes): 0         Maximum resident set size (kbytes): 0         Average resident set size (kbytes): 0         Major (requiring I/O) page faults: 0         Minor (reclaiming a frame) page faults: 24378         Voluntary context switches: 106         Involuntary context switches: 22         Swaps: 0         File system inputs: 0         File system outputs: 0         Socket messages sent: 0         Socket messages received: 0         Signals delivered: 0         Page size (bytes): 4096         Exit status: 0 # method 2         Command being timed: "find b/ -type f -delete"         User time (seconds): 0.41         System time (seconds): 14.46         Percent of CPU this job got: 52%         Elapsed (wall clock) time (h:mm:ss or m:ss): 0:28.51         Average shared text size (kbytes): 0         Average unshared data size (kbytes): 0         Average stack size (kbytes): 0         Average total size (kbytes): 0         Maximum resident set size (kbytes): 0         Average resident set size (kbytes): 0         Major (requiring I/O) page faults: 0         Minor (reclaiming a frame) page faults: 11749         Voluntary context switches: 14849         Involuntary context switches: 11         Swaps: 0         File system inputs: 0         File system outputs: 0         Socket messages sent: 0         Socket messages received: 0         Signals delivered: 0         Page size (bytes): 4096         Exit status: 0 # method 3 find c/ -type f | xargs -L 100 rm ~/test $ /usr/bin/time -v ./delete.sh         Command being timed: "./delete.sh"         User time (seconds): 2.06         System time (seconds): 20.60         Percent of CPU this job got: 54%         Elapsed (wall clock) time (h:mm:ss or m:ss): 0:41.69         Average shared text size (kbytes): 0         Average unshared data size (kbytes): 0         Average stack size (kbytes): 0         Average total size (kbytes): 0         Maximum resident set size (kbytes): 0         Average resident set size (kbytes): 0         Major (requiring I/O) page faults: 0         Minor (reclaiming a frame) page faults: 1764225         Voluntary context switches: 37048         Involuntary context switches: 15074         Swaps: 0         File system inputs: 0         File system outputs: 0         Socket messages sent: 0         Socket messages received: 0         Signals delivered: 0         Page size (bytes): 4096         Exit status: 0 # method 4 find d/ -type f | xargs -L 100 -P 100 rm ~/test $ /usr/bin/time -v ./delete.sh         Command being timed: "./delete.sh"         User time (seconds): 2.86         System time (seconds): 27.82         Percent of CPU this job got: 89%         Elapsed (wall clock) time (h:mm:ss or m:ss): 0:34.32         Average shared text size (kbytes): 0         Average unshared data size (kbytes): 0         Average stack size (kbytes): 0         Average total size (kbytes): 0         Maximum resident set size (kbytes): 0         Average resident set size (kbytes): 0         Major (requiring I/O) page faults: 0         Minor (reclaiming a frame) page faults: 1764278         Voluntary context switches: 929897         Involuntary context switches: 21720         Swaps: 0         File system inputs: 0         File system outputs: 0         Socket messages sent: 0         Socket messages received: 0         Signals delivered: 0         Page size (bytes): 4096         Exit status: 0 # method 5 ~/test $ /usr/bin/time -v rm -rf f         Command being timed: "rm -rf f"         User time (seconds): 0.20         System time (seconds): 14.80         Percent of CPU this job got: 47%         Elapsed (wall clock) time (h:mm:ss or m:ss): 0:31.29         Average shared text size (kbytes): 0         Average unshared data size (kbytes): 0         Average stack size (kbytes): 0         Average total size (kbytes): 0         Maximum resident set size (kbytes): 0         Average resident set size (kbytes): 0         Major (requiring I/O) page faults: 0         Minor (reclaiming a frame) page faults: 176         Voluntary context switches: 15134         Involuntary context switches: 11         Swaps: 0         File system inputs: 0         File system outputs: 0         Socket messages sent: 0         Socket messages received: 0         Signals delivered: 0         Page size (bytes): 4096         Exit status: 0

我真的十分好奇为什么Lee的方法要比其它的快,竟然比rm -rf也要快。

“Linux一次删除一百万个文件的最快方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI