Backup

無法掛載駐留在 ZFS 快照上的 borg 備份儲存庫

  • May 24, 2017

我已經發布了這個問題和我自己對這個問題的解決方案,以使其可供其他人使用。

這與borg 備份有關,並已發佈到此borggithub 問題:允許檢查只讀文件系統

當遠端儲存庫位於 ZFS 快照(只讀)上時,嘗試訪問遠端 borg 儲存庫以執行list、和其他只讀操作會失敗。info``mount

我正在使用 borg 進行備份,並使用每日修剪 ( borg prune ...) 進行加密,並使用遠端 ZFS 快照進行保留(和備份破壞保護)。

這樣做的關鍵原因是為了保護遠端備份伺服器上的備份數據免受可以訪問進行備份的主機的攻擊者的攻擊。使用只讀 ZFS 快照,攻擊者無法刪除遠端備份。

到目前為止,我已經嘗試過borg list,但失敗了:

遠端:borg.locking.LockFailed: (’/data/backup/.zfs/snapshot/daily_2017-05-23/home/lock.exclusive’, "

$$ Errno 30 $$只讀文件系統:’/data/backup/.zfs/snapshot/daily_2017-05-23/home/lock.exclusive’")

問題是borg無法在遠端倉庫中創建鎖定文件,因為它位於遠端只讀 ZFS 快照上:

user@server:~/.zfs/snapshot/snapshot_name/repo/lock.exclusive

我有一個相對優雅的解決方法。

它在可寫文件系統上創建一個目錄,將快照的內容連結到其中。

下面假設您只被允許以 user@server 身份執行遠端 ssh 命令,而沒有完全的 shell 訪問權限。

[user@client:~]

repo='foo'
snap='daily_2017-05-23'

ssh user@server "mkdir $repo.snap"

targets=$(ssh user@server "ls .zfs/snapshot/$snap/$repo")

for t in $targets; do
   ssh user@server "ln -s ../.zfs/snapshot/$snap/$repo/$t $repo.snap/$t"
done

borg list user@server:$repo.snap

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