Linux下怎么快速删除大量文件和移动大量文件

1. 快速删除大量文件

问题:当删除大量文件时候,rm -r 命令不好用,很慢,也没啥输出。

解决:使用 rsync

# 1. 创建一个空文件
mkdir null
# 2. 删除目标文件夹 testDir
rsync -av --delete null/ testDir/
# 然后我们把 null 和 目标文件夹删除即可。

选项 --delete 使testDir/目录内容和空目录内容保持一致,不同的文件及目录将会被删除,即 null 里面有什么内容,testDir 里就有什么内容;null 里没有的,而 testDir 有的,就必须要删除,因为 null 目录为空,因此此命令会删除 testDir 目录下的所有内容。

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 接收者在传输之前进行删除操作
–progress 在传输时显示传输过程
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-H 保持硬连接的文件
-v 详细输出模式
–stats 给出某些文件的传输状态

参考:

【1】https://blog.csdn.net/liuxl57805678/article/details/95367881
【2】https://www.cnblogs.com/shuaixf/p/3493025.html

2. 快速移动大量文件(并删除):

rsync  -avz  --progress  --bwlimit=50000 源目录/ 目标目录/
# 50000 表示限速 50m/s, 可以自己定义
rsync  -avz  --progress  --bwlimit=50000 源目录/ 目标目录/ --remove-source-files
# --remove-source-files 在复制完成后,删掉源文件。需要谨慎。
# 复制完成后,就可以使用 1 中的删除命令删除所有源文件了。

移动完后我们也可以在设置一个软连接,将新的位置映射到原来的位置上面。
参考:https://www.cnblogs.com/odesey/p/17218519.html

ln -s 新的文件夹路径 原来的路径

第一个参数是真的放了东西的,第二个是快捷方式。 注意 第二个会自动创建,不会手动创建。

取消软连接:

unlink link_name

参考链接:
【1】https://zhuanlan.zhihu.com/p/569684954
【2】https://blog.csdn.net/skate6/article/details/70156174 有断点续传功能

posted @ 2023-06-25 14:39  Zenith_Hugh  阅读(2753)  评论(0)    收藏  举报