Linux

防止將數據寫入未掛載的掛載點目錄的可能性

  • October 10, 2015

我有一個 Ubuntu 伺服器,每次啟動都會自動安裝一個外部硬碟驅動器。

為此,我在根分區上創建了一個空文件夾,並將驅動器安裝在該文件夾的“內部”。

但是,如果我在未正確安裝驅動器的情況下執行此路徑的備份怎麼辦?備份會填滿我的根分區!

我可以通過執行以下操作確保每次都安裝驅動器:

sudo mount -a

…在每次備份之前。

但是,確保數據永遠不會寫入空安裝文件夾的最佳做法是什麼(除非真正安裝了外部硬碟驅動器)?

這可以在沒有腳本的情況下解決嗎?比如說權限?最佳實踐是什麼?

我更進一步,總是使用**chattr**將我的掛載點目錄的屬性設置為不可變的。

這是通過chattr +i /mountpoint(解除安裝安裝)完成的。

這會在新的寫入活動中出錯,並且還會在其他情況下保護掛載點。

但我你也可以使用mountpoint 命令;)

為了擴展關於 using 的評論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手冊頁:

如果只給出目錄或設備,例如:

mount /dir

然後 mount 查找掛載點,如果未找到,則在 /etc/fstab 文件中查找設備。可以使用 –tar-get 或 –source 選項來避免對給定參數的矛盾解釋。例如

mount --target /mountpoint

引用自:https://serverfault.com/questions/570255