收缩/重置目录大小?

有没有办法缩小目录条目?

我的dovecot maildir目录的大小已经从默认的4096增加到了几个megs,并且与磁盘配额混为一谈。

我发现的唯一方法是删除并重新创build目录。 我希望有一个神奇的function – 我对任何东西都是开放的,除了手工编码的汇编程序。

编辑:为了后人,finddirects> 4096:

find / -type d -size +4k -printf "%s\t%p\t%i\n" | sort -nr 

另请参阅包含数百万个文件的目录上的rm ; 切线相关,但我们在那里讨论。

据我所知,至less在ext2 / 3,不,没有(在线)的方式来缩小他们删除+重新创build。 未安装的,有几个消息来源表示e2fsck -D可能工作,但我可以声称没有这个选项的个人经验。

一些参考资料供进一步阅读

我最近不得不删除并重新创build一个NFS目录,以缩小它之前的臃肿的大小。 在这个过程中,我发现了一个使用rsync和硬链接来完成这个任务的高效方法。 这种方法避免了复制实际的文件,同时仍然实现了重新创build相同内容的目录。

由于我们需要在维护窗口中进行停机操作,所以尽快将重build目录提供给我们是非常重要的。 如果简单性对您更重要,请将第一个移动命令更改为源目录中的“rm -rf”,然后跳过另一个“rm -rf”命令。

我从一个更大的过程中提取这些命令,并抽象出目录名称,所以如果我在这个翻译中犯了一个错误,我很抱歉。

 mkdir /tmp/holding_dir/ rsync -ai --delete --link-dest=/path/to/source_dir/ /path/to/source_dir/ /tmp/holding_dir/ mv /path/to/source_dir/ /tmp/deleteme/ mv /tmp/holding_dir/ /path/to/source_dir/ 

然后,我们删除目录。 根据大小,你可能需要使用更复杂的技术来做到这一点。 例如,使用带有–delete标志的rsync将空目录同步到这个目录可能会更有效率。

 rm -rf /tmp/deleteme/ 

我会这样做。

cp -al oldir newdir && mv olddir tempname && mv newdir olddir && rm -r tempname

其中olddir是要缩小的目录newdirtempname是临时文件名

cp -alnewdir中创buildolddir内容的链接,接下来的三个命令将它们与newdir交换并清理。