web-dev-qa-db-ja.com

マウントされていないマウントポイントディレクトリにデータを書き込む可能性を防ぐ

起動するたびに外付けハードドライブを自動マウントするUbuntuサーバーがあります。

これを行うには、ルートパーティションに空のフォルダーを作成し、ドライブがこのフォルダーの「内部」にマウントされます。

ただし、ドライブが正しくマウントされていないときにこのパスへのバックアップを実行するとどうなりますか?代わりに、バックアップによってルートパーティションがいっぱいになります。

ドライブを毎回マウントすることを確認できます。

Sudo mount -a

...各バックアップの前。

ただし、データが空のマウントフォルダーに書き込まれないようにするためのベストプラクティスは何ですか(外付けハードドライブが実際にマウントされている場合を除く)。

これはスクリプトなしで解決できますか?たとえば、許可を与えますか?ベストプラクティスは何ですか?

30
LonnieBest

私はさらに一歩進んで、常にchattrを使用して、マウントポイントディレクトリの属性を不変に設定します。

これはchattr +i /mountpoint(マウントがマウントされていない状態)。

これにより、新しい書き込みアクティビティでエラーが発生し、他の状況でもマウントポイントが保護されます。

しかし、私は仮定しますmountpointコマンド も使用できると思います;)

53
ewwhite

mountpointの使用に関するコメントをさらに詳しく説明するために、次のようなことを確認する必要があるときに、スクリプトに大まかにこれを入れます。

DEST='/mnt/backup'
if ! mountpoint -q "$DEST" ; then
    echo "Destination is not mounted; attempting to mount"
    mount $DEST
    if ! mountpoint -q "$DEST" ; then
        echo "Unable to mount $DEST; Aborting"
        exit 1
    fi
    echo "Mounted $DEST; Continuing backup"
fi

これは、$ DESTが/etc/fstabに存在することを前提としています。マウントポイントがautoでもnoautoでもかまいません。

mount manページによると:

たとえば、ディレクトリまたはデバイスのみが指定されている場合:

mount /dir

次に、mountはマウントポイントを探し、見つからない場合は/ etc/fstabファイルでデバイスを探します。 --tar-getまたは--sourceオプションを使用して、指定された引数のあいまいな解釈を回避することができます。例えば

mount --target /mountpoint
2
fukawi2