Linux下使用rsync删除海量文件
Linux使用rm -rf *删除大量文件的时候会遇到-bash: /bin/rm: Argument list too long的错误,说明文件列表太大无法删除,可以尝试下面的命令删除大量文件:
/usr/bin/find /foo -name bar.* -exec rm {} \
但是,遇到百万级或千万级的文件列表时非常耗时,可以尝试使用rsync命令进行删除。rsync删除脚本如下:
rsync_del.sh
#!/bin/bash mypath="/tmp/delete/" if [ ! -d "$mypath" ];then mkdir "$mypath" fi rsync -avH --delete-before --progress --stats $mypath $1
使用方式:
chmod +x rsync_del.sh rsync_del foo
该命令只会清空foo下所有的文件,并不会删除foo目录本身,可以在清空完成后通过rmdir foo删除foo目录。
rsync命令选项说明:
-delete-before 接收者在传输之前进行删除操作 –progress 在传输时显示传输过程 -a 归档模式,表示以递归方式传输文件,并保持所有文件属性 -H 保持硬连接的文件 -v 详细输出模式 –stats 给出某些文件的传输状态
文章网址:http://blog.zhengshuiguang.com/linux/linux-rsync.html
随意转载^^但请附上教程地址。
很方便,~\(≧▽≦)/~