Zfs

ZFS:從快照中刪除文件?

  • May 31, 2019

假設我有一個包含 100 個快照的數據集,並且想要rm -rf所有快照中名為“記憶體”的所有文件夾。

我想真正釋放空間,而不僅僅是將其隱藏在快照層中,因此進行複製並從中刪除然後拍攝新快照似乎並不能滿足我的要求。

有什麼半自動的方法嗎?一些圍繞 zfs list -t 快照、zfs 複製、zfs 提升、zfs 快照?

(來自https://superuser.com/questions/313197的交叉發布,因為我看到這有更多 ZFS 的東西)

快照是只讀的。如果您需要刪除這些文件夾,則必須刪除整個快照。

您可以進行備份(使用 tar 之類的東西),排除有問題的文件夾,然後刪除快照。顯然,備份現在是 tar 或其他格式;但至少你還有一份備份。

您可以嘗試以下方法:

  1. 將最舊的快照複製到一個新的文件系統中(呼叫它fsnew)。
  2. 提升複製 ( fsnew) 以允許您銷毀文件系統所基於的快照。
  3. 刪除有問題的文件。
  4. 創建 的快照fsnew

現在 foreach 快照之後,rsync使用--inplace從快照到 fsnew 的標誌跳過您不想要的文件。該--inplace標誌減少了寫入次數並允許使用更小的快照。

  1. 創建 的快照fsnew
  2. 銷毀原始快照。

完成此操作後,您應該有一個fsnew與原始文件系統中的快照相對應的快照,其中刪除了有問題的文件。

如果驅動器上有空間,您可能希望跳過“destroy”命令,直到您的腳本正常工作。

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