クエリに実際のファイルシステムのみを含めるより良い方法は何ですか?

クエリに実際のファイルシステムのみを含めるより良い方法は何ですか?

これは、マウントポイントが異なるシステム(少なくともUbuntu 18.04とRHEL 8.3)間で機能し、普遍的ですが、より良い方法はありますか?

("Permission Denied"を見つけてpg_ctl除外したいのは無視してください。 findそれが私が尋ねるものです。)

$ realfs=$(df -x tmpfs -x devtmpfs | tail -n +2 | awk '{print $6;}' | xargs)
$ echo $realfs
/ /boot/efi /Database/12 /Database/12/backups
$ find ${realfs} -xdev -type f -name pg_ctl |& grep -v "Permission denied"  
/usr/bin/pg_ctl
/usr/lib64/pgsql/postgresql-10/bin/pg_ctl

私がこの方法を開発した理由は、この方法が異なるマウントポイントを持つシステム全体で普遍的である必要があるだけでなく、-prune混乱しているからです。

ベストアンサー1

Linuxでサポートされているファイルシステムは、次のリストにリストされています/proc/filesystemsいいえnodev物理ローカルファイルシステムは.thereと表示されます。

fs=($(grep -v '^nodev' /proc/filesystems))

興味のあるタイプの配列が与えられたら、findそれをsで使用できます-fstype

findfs=($(echo ${fs[*]/#/ -o -fstype }))
find / \( -false ${findfs[*]} \)

これにより、ファイルシステムセットのハードコーディングを防ぐことができます。入らないようにする時間を早めましょう。これにはいくつかの欠点があります。特に、状況によっては問題になる可能性があるネットワークファイルシステムを除外します。

おすすめ記事