/homeが予想より2倍大きいのはなぜですか?

/homeが予想より2倍大きいのはなぜですか?

今日のディスク使用量を確認し、次のコマンドを実行しました(sudoを使用して「許可を拒否しました」というメッセージは表示されません)

$ du -hs /home
26G     /home

$ ls -la /home
total 24
drwxr-xr-x  4 root  root   4096 Dec 27  2017 .
drwxr-xr-x 25 root  root   4096 Oct  1 17:39 ..
drwxrwxr-x  3 root  root   4096 Dec 27  2017 .ecryptfs
drwx------ 53 paper paper 12288 Oct  6 14:38 paper`

$ du -hs /home/*
13G    /paper

/homeディレクトリがユーザーディレクトリサイズの正確に2倍になっているのに、ユーザーディレクトリが/homeの唯一のディレクトリのように見えるのはなぜですか?

ベストアンサー1

shopt dotglob同じシェルで実行してみてください。

おそらくdotglobそうでない場合、*拡張子(ワイルドカード)に名前が始まるファイルとディレクトリが含まれなくなります(ワイルドカード拡張子には絶対に含まれないと確信する特別なディレクトリ.エントリを含む)。 )を含むように拡張機能を混乱させます。...rm -rf ./*./..

したがって、実行すると、du -hs /homeそのディレクトリ内のすべての項目が計算されますが、du -hs /home/*それまで拡張されるため、du -hs /home/paper後者のディレクトリのみが計算されます。

これには暗号化されたデータが含まれる可能性があるため、/home/.ecryptfs復号化されたデータとサイズがほぼ同じであることが合理的です。したがって、ファイルは実際には2回カウントされますが、du親ディレクトリを指している場合にのみ適用されます。

shopt -s dotglobそのシェルセッションでdotglob設定をオンにして再度実行するsudo du -hs /home/*と、実行したときと同じサイズで表示されることがわかりますsudo du -hs /home

echoこれを示すもう1つの方法は、コマンドの先頭に配置することです。たとえば、シェルがどのように拡張されるかを示しますdu -hs /home/*echo du -hs /home/**


記述子として、私は習慣的にすべてのことを経験しないでくださいsudo。必要に応じてsudoを使用し、それ以外の場合は使用しないでください。たとえば、ディレクトリは誰でも読むことができるため、ls -la /homeスーパーユーザーとして実行する必要はありません。/home

おすすめ記事