Answers:
另请参见rm包含数百万个文件的目录;切线相关,但我们在那里进行讨论。
据我所知,至少在ext2 / 3上,不,没有(在线)缩小它们的方式,而不需要删除+重新创建。卸载后,有一些消息来源暗示e2fsck -D
可能可行,尽管我不能声称自己会使用该选项。
一些参考资料供进一步阅读:
最近,我不得不删除并重新创建一个NFS目录,以缩小先前膨胀后的大小。在此过程中,我找到了一种使用rsync和硬链接执行此操作的相当有效的方法。此方法避免了复制实际文件,同时仍然实现了重新创建具有相同内容的目录的目标。
由于我们需要在维护时段内执行停机操作,因此对于我们而言,尽快使重建的目录可用非常重要。如果简单对您来说更重要,请将第一个移动命令更改为源目录上的“ 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/
然后,我们删除目录。根据大小,您可能需要使用更复杂的技术来执行此操作。例如,将rsync与--delete标志一起使用将空目录同步到该目录中可能会更有效。
rm -rf /tmp/deleteme/
我会这样
cp -al
oldir newdir
&&
mv
olddir 临时名称
&&
mv
newdir olddir
&&
rm -r
临时名称
其中olddir是要收缩的目录 newdir,而tempname是临时文件名
cp -al
在newdir中创建指向olddir内容的链接,
接下来的三个命令与newdir交换它们并进行清理。