
ディレクトリとすべてのサブディレクトリのサイズを計算したいと思います。しかし、マウントポイントからマウントされるいくつかのサブディレクトリを作成しました。 (使用mount -B/--bind
)
du -hks
返されたサイズを使用すると、マウントされたディレクトリが含まれます。結果からサイズを削除する方法はありますか?
編集する: サイズを計算するディレクトリはすべて同じ場所にあります。他のすべてのディレクトリ(すべてのマウントポイントを含む)の共有コンテンツを含むデフォルトのディレクトリがあり、ディレクトリには別々のファイルがあります。目標は、単一ファイルのサイズを計算することです。
答え1
餃子:
-x, --one-file-system
skip directories on different file systems
答え2
du -x
(少なくともGNUとbusybox du
)ファイルのデバイスIDが同じであるため、Linuxバインドマウントに属するため、マウントポイントを手動でクリーンアップする必要があります。 GNUの使用du
:
du -xhs --exclude=./bind/mount/point
あるいは、GNUを使用してfind
ファイルを見つけてディスク使用量を印刷し、コマンドを呼び出してクリーンアップするmountpoint
ディレクトリを知ることもできます(これはバインドマウントです)。次に、それを使用してawk
合計を計算します(du
このようにハードリンクを一度だけ計算します)。
find . -xdev ! -name . -type d -exec mountpoint -q {} \; -prune -o \
-printf '%i %b\n' |
awk '!seen[$1]++ {s+=$2}
END{printf "%.17g\n", s * 512}' |
numfmt --to=iec
ただし、これはmountpoint
各ディレクトリに対してコマンドを実行する必要があるため、非常に非効率的です(ディレクトリ以外のファイルをバインドすることも可能であり、mountpoint
各ファイルで実行されるのを避けるためにこれは行われないと仮定します)。