linux下快速删除大量文件与定时删除文件

发布时间:2019-11-11编辑:脚本学堂
本文介绍了linux下快速删除大量文件的方法,以及如何定时删除文件,需要的朋友参考下。

假如要在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/

这样目标目录很快就被清空了(linux删除文件夹
 
又假如你有一些特别大的文件要删除,比如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实际上用的就是替换原理

附,linux下如何定时删除文件?

检查 2分钟内 散列生成 存放的session 路径:
 

复制代码 代码示例:

#find /data1/session -amin +2

find / -cmin -600 -size +10M
-cmin -600         # 是600分钟内创建的文件
-size +10M         # 是大于10M的文件

扩展:
 

-mtime -n +n       # 按更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n       # 按访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime -n +n       # 按创建时间来查找文件,-n指n天以内,+n指n天以前

-size -n +n单位    # 按大小来查找文件,单位可以是b,c,w,k,M,G

下面这个命令可以删除过期的session,
这里定义的过期时间是3小时(180分钟)
 

复制代码 代码示例:
#find /data1/session -amin +180 -exec rm -rf {} ;

删除7天前的文件。
 

复制代码 代码示例:
find . -type f -mtime +7 -exec rm -f {} ;