当前位置: 首页 > Linux

Linux快速复制或删除大量小文件

时间:2023-04-06 21:48:50 Linux

前言公司需要向网安部发送一批数据集,共1550万张图片,约3.5T。过程中也参考了网上一些方法的实用总结。1:快速复制大量小文件a.在本机不同磁盘之间复制:复制目录$tarcvf–/home/src_dir|tarxvf–-C/optcopyfiles$tarcf–access.log|tarxf–-C/optTips:快速tar打包的一些技巧和常用的tar使用tar快速打包(只打包不压缩传输,时间-consuming相对较短)step1:从文件$find生成文件列表。-name'*.jpg'-print>jpg.txt****匹配多种后缀格式$find.-regex'.*\.png\|.*\.jpeg\|.*\.jpg'-print>jpg.txt如果生成的文件列表比较大,可以使用split将其拆分成小文件用于平行包装。如果文件数量少,这一步可以忽略。#将文件jpg.txt分成几个小文件,每个文件50万行(-l500000),文件前缀为xiu_,系数不是字母而是数字(-d),后缀系数为四位数(-a4)$split-l500000../jpg.txt-d-a4xiu_step2:tar如何从文件中读取文件列表?找了半天,使用-T-T,--files-fromFgetnames从文件中提取或创建Ftips:注意这里不要加-v参数。对于大量文件,控制台输出是浪费时间...$tar-czfjpg.tar.gz-Tyourfile****如果不压缩,直接打包即可,即快点。$tar-cfjpg.tar.gz-Tyourfile解压一些常用的tar命令$tarxvfFileName.tar##或者不输出文件,比较快$tarxfFileName.tar不解压查看打包内容$tartvfFileName.tar不解压并统计打包内容文件和文件夹的数量###统计文件数量$tartvfFileName.tar|grep"^-"|wc-l###统计文件加$tartvf文件名.tar|grep"^d"|wc-lb。跨网络在不同主机间复制tar+nc:思路:在网络环境中传输时,将其打包并与nc命令结合,通过管道和tcp端口进行传输。例如,A向主机Bi传输数据。在机器B上,使用nc监听一个端口,任何端口都可以,只要没被占用即可;并使用tar扩展接收到的数据。-l代表监控模式。$nc-l34183|tar-C/data1datasets/norm/-zxf-ii.接下来通过nc和tar发送A上的data_01目录。使用一致的端口34183。$tar-zcvf-data_01|nc192.168.0.1341832:快速删除大量小文件或大文件2.1:快速删除大量小文件rsync提供了一些删除相关的参数rsync--help|grepdelete--del--delete-during的别名--delete删除发送方不存在的文件--delete-beforereceiver在传输前删除(默认)--delete-duringreceiver在传输期间删除,不before--delete-afterreceiver在传输后删除,notbefore--delete-excluded也删除接收端排除的文件--ignore-errors即使??有I/O错误也删除--max-delete=NUM不要deletemorethanNUMfileswhere--delete-before接收方在传输前执行的删除操作,可用于清空目录或文件,如下:1.创建空目录mkdir-p/del_blank2.建立目标目录/del_data待清空3.使用rsync同步删除(注意目录后面的“/”),整体效率会快一个数量级。rsync--delete-before-a-H-v--progress--stats/del_blank//del_data/选项说明:--delete-beforereceiver在传输前删除--progress在传输过程中显示传输进度-aarchive模式,意思是递归传输文件,并保留所有文件属性-H保留硬链接文件-v详细输出模式-stats给出部分文件的传输状态一般我们不需要显示进度,使用以下命令rsync--delete-before-a-H/del_blank//del_data/  这样我们要删除的del_data目录就会清空2.2:快速删除大文件如何删除特别大的文件(量级),比如nohup.out的实时更新的文件动辄几十G、几百G。大文件也可以用rsync清空,效率比较高。1.创建一个空文件touch/data/blank.txt2.使用rsync清除文件rsync-a--delete-before--progress--stats/data/blank.txt./nohup.outbuildingfilelist。..1个要考虑的文件blank.txt0100%0.00kB/s0:00:00(xfer#1,to-check=0/1)文件数量:1传输的文件数量:1文件总大小:0字节总传输文件大小:0字节文字数据:0字节匹配数据:0字节文件列表大小:27文件列表生成时间:0.006秒文件列表传输时间:0.000秒发送的总字节数:73接收的总字节数:31已发送73字节bytesreceived31208.00bytes/sectotalsizeis0speedupis0.00**tips:当SRC和DEST文件的属性不一致时,会报错。当src和dest的属性都是文件[f]时,表示清空文件内容,而不是删除文件。把这个目录下的文件清空事情的核心内容是:rsync其实是使用替换原理的参考链接:https://blog.csdn.net/xiaoyi2...https://www.cnblogs.com/tryin...http://www.voidcn.com/article...