``` # ``` zfs get snapdir mypool/var/tmp NAME PROPERTY VALUE SOURCE mypool/var/tmp snapdir hidden default ``` % ``` ls -a /var/tmp . .. passwd vi.recover ``` # ``` zfs set snapdir=visible mypool/var/tmp ``` % ``` ls -a /var/tmp . .. .zfs passwd vi.recover ``` 要還原個別檔案到先前的狀態非常簡單,只要從快照中複製檔案到父資料集。在 `.zfs/snapshot` 目錄結構下有一個與先前所做的快照名稱相同的目錄,可以很容易的找到。在下個範例中,我們會示範從隱藏的 `.zfs` 目錄還原一個檔案,透過從含有該檔案的最新版快照複製: ``` ``` # ``` rm /var/tmp/passwd ``` % ``` ls -a /var/tmp . .. .zfs vi.recover ``` # ``` ls /var/tmp/.zfs/snapshot after_cp my_recursive_snapshot ``` # ``` ls /var/tmp/.zfs/snapshot/after_cp passwd vi.recover ``` # ``` cp /var/tmp/.zfs/snapshot/after_cp/passwd /var/tmp ``` 執行 `ls .zfs/snapshot` 時,雖然 `snapdir` 可能已經設為隱藏,但仍可能可以顯示該目錄中的內容,這取決於管理者是否要顯示這些目錄,可以只顯示特定的資料集,而其他的則不顯示。從這個隱藏的 `.zfs/snapshot` 複製檔案或目錄非常簡單,除此之外,嘗試其他的動作則會出現以下錯誤: ``` ``` # ``` cp /etc/rc.conf /var/tmp/.zfs/snapshot/after_cp/ cp: /var/tmp/.zfs/snapshot/after_cp/rc.conf: Read-only file system ``` 這個錯誤用來提醒使用者快照是唯讀的,在建立之後不能更改。無法複製檔案進去或從該快照目錄中移除,因為這會變更該資料集所代表的狀態。 快照所消耗的空間是依據自快照之後父檔案系統做了多少變更來決定,快照的 `written` 屬性可以用來追蹤有多少空間被快照所使用。 使用 `zfs destroy dataset@snapshot` 可以摧毀快照並回收空間。加上 `-r` 可以遞迴移除所有在父資料集下使用同名的快照。加入 `-n -v` 來顯示將要移除的快照清單以及估計回收的空間,而不會實際執行摧毀的操作。
zfs get snapdir mypool/var/tmp
mypool/var/tmp
ls -a /var/tmp
zfs set snapdir=visible mypool/var/tmp
``` # ``` rm /var/tmp/passwd ``` % ``` ls -a /var/tmp . .. .zfs vi.recover ``` # ``` ls /var/tmp/.zfs/snapshot after_cp my_recursive_snapshot ``` # ``` ls /var/tmp/.zfs/snapshot/after_cp passwd vi.recover ``` # ``` cp /var/tmp/.zfs/snapshot/after_cp/passwd /var/tmp ``` 執行 `ls .zfs/snapshot` 時,雖然 `snapdir` 可能已經設為隱藏,但仍可能可以顯示該目錄中的內容,這取決於管理者是否要顯示這些目錄,可以只顯示特定的資料集,而其他的則不顯示。從這個隱藏的 `.zfs/snapshot` 複製檔案或目錄非常簡單,除此之外,嘗試其他的動作則會出現以下錯誤: ``` ``` # ``` cp /etc/rc.conf /var/tmp/.zfs/snapshot/after_cp/ cp: /var/tmp/.zfs/snapshot/after_cp/rc.conf: Read-only file system ``` 這個錯誤用來提醒使用者快照是唯讀的,在建立之後不能更改。無法複製檔案進去或從該快照目錄中移除,因為這會變更該資料集所代表的狀態。 快照所消耗的空間是依據自快照之後父檔案系統做了多少變更來決定,快照的 `written` 屬性可以用來追蹤有多少空間被快照所使用。 使用 `zfs destroy dataset@snapshot` 可以摧毀快照並回收空間。加上 `-r` 可以遞迴移除所有在父資料集下使用同名的快照。加入 `-n -v` 來顯示將要移除的快照清單以及估計回收的空間,而不會實際執行摧毀的操作。
rm /var/tmp/passwd
ls /var/tmp/.zfs/snapshot
ls /var/tmp/.zfs/snapshot/after_cp
after_cp
cp /var/tmp/.zfs/snapshot/after_cp/passwd /var/tmp
after_cp/passwd
/var/tmp
``` # ``` cp /etc/rc.conf /var/tmp/.zfs/snapshot/after_cp/ cp: /var/tmp/.zfs/snapshot/after_cp/rc.conf: Read-only file system ``` 這個錯誤用來提醒使用者快照是唯讀的,在建立之後不能更改。無法複製檔案進去或從該快照目錄中移除,因為這會變更該資料集所代表的狀態。 快照所消耗的空間是依據自快照之後父檔案系統做了多少變更來決定,快照的 `written` 屬性可以用來追蹤有多少空間被快照所使用。 使用 `zfs destroy dataset@snapshot` 可以摧毀快照並回收空間。加上 `-r` 可以遞迴移除所有在父資料集下使用同名的快照。加入 `-n -v` 來顯示將要移除的快照清單以及估計回收的空間,而不會實際執行摧毀的操作。
cp /etc/rc.conf /var/tmp/.zfs/snapshot/after_cp/
/etc/rc.conf
after_cp/
5人線上 (4人在瀏覽線上書籍)
會員: 0
訪客: 5