に一部のデバイスがマウントされているとします/backups
。システムで選択したファイルをバックアップにコピーしており、デバイスで発生するノイズを減らしたいと思います。hdparm -M
本機の「自動サウンド管理(AAM)」設定を調整するために使用できることがわかります。ただし、特定のディレクトリ/dev/sdc
(たとえば、最新のバックアップ場所を計算するスクリプトがある場合/backups/2017/12/31
)からデバイス(たとえば)をどのようにインポートするのかわかりません。
私ができること
echo /dev/$(lsblk -no pkname $(findmnt -nvoSOURCE -T "$DIRECTORY"))
ただし、これにはハードコーディングされた/dev/
プレフィックスが必要で、バックアップディスクが1つしかないとします。どうすればこれをより安定的にすることができますか?
この質問は、特にパーティションではなく正しいディスクを見つけることについてです。正しいパーティションを見つければ十分ですdf
。findmnt
また、ディレクトリがデバイスにマウントされている場合、親デバイスは互換性のないデバイスmd
と同じです。この場合、基本ディスクが複数あるので、実際には、この質問は、単一のファイルまたはディレクトリを1つまたは複数のディスクにマップすることです。 。md0
hdparm
答え1
このスクリプトは最も安定しているようです(シングルSATAディスクとソフトウェアRAIDで動作します)。
lsblk --list -no type,name --inverse $(findmnt -nvoSOURCE -T "$DIRECTORY") \
| grep ^disk | awk '{ print $2 }' | sort -u \
| while read name; do echo "Data on /dev/$name"; done
もちろん、echo
コマンドを各ディスクで実行したい実際の操作に置き換えます。
4ディスクMDソフトウェアraidのディレクトリ出力の例:
Data on /dev/sda
Data on /dev/sdb
Data on /dev/sdc
Data on /dev/sdd
ディスク 1 つで構成される通常のパーティションのディレクトリ出力の例:
Data on /dev/sdf
答え2
簡単にわかる方法は、df
フォルダの(絶対)パスを使用して呼び出すことです。
$ df $DIRECTORY
file system 1K-blocks used available used% mounted at
/dev/sda1 303538544 74465700 213630924 26% /root/of/variable/DIRECTORY