Using rm -rf * is not very useful when we want to delete tens of thousands or hundreds of thousands or even millions of files in a linux system, because it takes a long time. In this case, we can use the linux system command rsync to handle it cleverly. rsync actually uses the replacement principle, and it also deletes hundreds of thousands of files in seconds.
1. rsync installation, some systems have this command installed by default
#ubuntu系统:
sudo apt-get install rsync
#fedora 系统:
sudo yum install rsync
2. rsync provides some parameters related to deletion
rsync --help | grep delete
--del an alias for --delete-during
--delete delete extraneous files from destination dirs
--delete-before receiver deletes before transfer, not during
--delete-during receiver deletes during transfer (default)
--delete-delay find deletions during, delete after
--delete-after receiver deletes after transfer, not during
--delete-excluded also delete excluded files from destination dirs
--ignore-errors delete even if there are I/O errors
--max-delete=NUM don't delete more than NUM files
#其中--delete-before接收者在传输之前进行删除操作
3. Example
#清空目录或文件,如下:
#1、先建立一个空目录
mkdir /data/blank
#2、用rsync删除目标目录
rsync --delete-before -d -a -H -v --progress --stats /data/blank/ /var/edatacache/
#或者
rsync --delete-before -d /data/blank/ /var/edatacache/
#这样/var/edatacache目录就被快速的清空了。
选项说明:
–delete-before 接收者在传输之前进行删除操作
–progress 在传输时显示传输过程
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-H 保持硬连接的文件
-v 详细输出模式
–stats 给出某些文件的传输状态
-d transfer directories without recursing
#3、也可以用来删除大文件
#假如我们在/root/下有一个几十G甚至上百G的文件data,现在我们要删除它
#一、创建一个空文件
touch /root/empty
#二、用rsync清空/root/data文件
rsync --delete-before -d --progess --stats /root/empty /root/data