Zfs
ZFS:從快照中刪除文件?
假設我有一個包含 100 個快照的數據集,並且想要
rm -rf
所有快照中名為“記憶體”的所有文件夾。我想真正釋放空間,而不僅僅是將其隱藏在快照層中,因此進行複製並從中刪除然後拍攝新快照似乎並不能滿足我的要求。
有什麼半自動的方法嗎?一些圍繞 zfs list -t 快照、zfs 複製、zfs 提升、zfs 快照?
(來自https://superuser.com/questions/313197的交叉發布,因為我看到這有更多 ZFS 的東西)
快照是只讀的。如果您需要刪除這些文件夾,則必須刪除整個快照。
您可以進行備份(使用 tar 之類的東西),排除有問題的文件夾,然後刪除快照。顯然,備份現在是 tar 或其他格式;但至少你還有一份備份。
您可以嘗試以下方法:
- 將最舊的快照複製到一個新的文件系統中(呼叫它
fsnew
)。- 提升複製 (
fsnew
) 以允許您銷毀文件系統所基於的快照。- 刪除有問題的文件。
- 創建 的快照
fsnew
。現在 foreach 快照之後,
rsync
使用--inplace
從快照到 fsnew 的標誌跳過您不想要的文件。該--inplace
標誌減少了寫入次數並允許使用更小的快照。
- 創建 的快照
fsnew
。- 銷毀原始快照。
完成此操作後,您應該有一個
fsnew
與原始文件系統中的快照相對應的快照,其中刪除了有問題的文件。如果驅動器上有空間,您可能希望跳過“destroy”命令,直到您的腳本正常工作。