简短版本:rm -rf mydir
,mydir
(递归地)包含250万个文件,在大多数空闲的计算机上大约需要12个小时。
更多信息:大部分要删除的文件是指向其他目录中文件的硬链接(实际上,删除的目录是由进行的最旧的备份rsnapshot
;rm
命令实际上是由提供的rsnapshot
)。因此,大多数目录条目都将被删除-文件内容本身并不多。它大约是几十GB。
我不确定btrfs
是罪魁祸首。我记得在开始使用备份之前,备份也非常慢btrfs
,但是我不确定删除是否缓慢。
该计算机是具有4 GB RAM的Intel Core i5 2.67 GHz。它有两个SATA磁盘:一个有操作系统和其他一些东西,备份磁盘是1 TB WDC WD1002FAEX-00Z3A0
。主板是华硕P7P55D。
编辑:该机器是Linux的Debian狂潮3.16.3-2~bpo70+1
。这是文件系统的挂载方式:
root@thames:~# mount|grep rsnapshot
/dev/sdb1 on /var/backups/rsnapshot type btrfs (rw,relatime,compress=zlib,space_cache)
编辑:使用rsync -a --delete /some/empty/dir mydir
大约需要6个小时。与相比有很大的改进rm -rf
,但我认为仍然太多了。(为什么rsync
会比rm
以下解释更快:“ [大多数文件系统以btree格式存储其目录结构,删除文件的顺序[...]很重要。执行取消链接时需要避免重新平衡btree。 .... rsync -a --delete
...按顺序删除”)
编辑:我附加了另一个磁盘,该磁盘在目录中(递归)有220万个文件,但是在XFS上。以下是一些比较结果:
On the XFS disk On the BTRFS disk
Cached reads[1] 10 GB/s 10 GB/s
Buffered reads[1] 80 MB/s 115 MB/s
Walk tree[2] 11 minutes 43 minutes
rm -rf mydir[3] 7 minutes 12 hours
[1]与hdparm -T /dev/sdX
和hdparm -t /dev/sdX
。
[2] find mydir -print|wc -l
引导后立即运行所花费的时间。
[3]在XFS磁盘上,这是使用沿着树走后不久find
。在BTRFS磁盘上,这是旧的度量标准(我认为它与缓存的树无关)。
似乎是一个问题btrfs
。
btrfs
吗?当然可以,但是您认为这可能相关吗?现在我不记得为什么我决定尝试btrfs
。
btrfs
因为我想要透明压缩。现在:rsnapshot
使用硬链接。它没有不使用硬链接的任何选择。因此,硬链接与的btrfs
“写时复制”功能重叠,但是我对此无能为力。