我在加密系统上从 du 得到的结果令人困惑。我sudo
到处都用过,以防有任何无法访问的文件,但这没有帮助。我使用的是 Linux Mint 21.3。我无法分辨我的主目录是 41 还是 81GB。
sudo du -sh /*
包括此行
81G /家
sudo du -sh /home/*
41G /主页/彼得
sudo ls -la /home
仅显示目录 .ecrypts 和 peter
sudo du -sh /home/.ecrypts/
41G /主页/.ecrypts/
sudo ls -R /home/.ecryptfs/
仅显示空目录 peter。
.ecrypts 是空的,怎么会有 41GB?加密中是否存在一些难以察觉的功能,导致我拥有 41GB 的可用数据和 40GB 的加密数据?
我读到https://unix.stackexchange.com/a/303091/321108时发现du
扩展时不包含隐藏文件,因此du
不会报告它们。
cd
du -sh .
还是41G
感谢@terdon在评论中提出的引导性问题。忘记在隐藏目录中查找隐藏目录是一个愚蠢的错误。
sudo du -sh /home/.ecryptfs/peter/.Private/
41克
谜团已揭开!
你已经知道原因了,只是你没有意识到这就是问题所在:
这与 无关
du
,而是与 的*
工作原理有关。您正在运行du /home/*
,这意味着“du
在扩展 glob 的结果上运行/home/*
”。*
默认情况下, 不匹配隐藏文件:看到
*
不匹配任何点文件了吗?这正是您在运行du /home/*
而不是时遇到的情况du /home/
。*
仅扩展到非隐藏文件和目录列表,但您有一个/home/.ecryptfs
被忽略的隐藏目录。另一方面,它被拾取,sudo du -sh /*
因为/*
扩展到直接位于 下方的非隐藏文件和目录列表,/
其中包括/home
,因此 中的所有内容/home
都计算在内。除非您明确希望将结果限制为仅非隐藏文件和目录,否则切勿使用
du /path/to/*
,而应始终使用du /path/to/
(或/path/to
)。