zfs send
及 zfs receive
。
#
zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
backup 7.94G 608K 7.94G 0% 1.00x ONLINE -
zfs 7.94G 608k 7.94G 0% 1.00x ONLINE -
zfs
的儲存池為主要的儲存池,資料會定期寫入與讀取的位置。第二個儲存池 backup
用來待命 (Standby),萬一主要儲存池無法使用時可替換。注意,ZFS 並不會自動做容錯移轉 (Fail-over),必須要由系統管理者在需要的時候手動完成。快照會用來提供一個與檔系統一致的版本來做備份,zfs
的快照建立之後,便可以複製到 backup
儲存池,只有快照可以做備份,最近一次快照之後所做的變更不會含在內容裡面。
#
zfs snapshot zfs/samba
@backup1
#
zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
zfs@backup1 80k - 160k -
zfs send
來建立一個代表快照內容的串流,這個串流可以儲存成檔案或由其他儲存池接收。串流會寫入到標準輸出,但是必須要重新導向到一個檔案或轉接到其他地方,否則會錯誤:
#
zfs send zfs@backup1
Error: Stream can not be written to a terminal.
You must redirect standard output.
zfs send
備份一個資料集,可重新導向到一個位於在已掛載到備份儲存池上的檔案。確定該儲存池有足夠的空間容納要傳送的快照,這裡指的是該快照中內含的所有資料,並非只有上次快照到該快照間的變更。
#
zfs send zfs
@backup1
> /backup/backup1
#
zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
backup 7.94G 608K 7.94G 0% 1.00x ONLINE -
zfs 7.94G 608k 7.94G 0% 1.00x ONLINE -
zfs send
會傳輸在快照 backup1
中所有的資料到儲存池 backup
。可以使用 cron(8) 排程來自動完成建立與傳送快照的動作。zfs receive
將串流轉換回檔案與目錄。zfs send
及 zfs receive
,將資料從一個儲存池複製到另一個,傳輸完成後可以直接使用接收儲存池上的資料。一個資料集只可以被複製到另一個空的資料集。
#
zfs snapshot zfs@replica1
#
zfs send -v zfs
@replica1
| zfs receive -F backup/mypool
<--- 若不存在 backup/mypool ,zfs會自動建立一個 dataset
send from @ to mypool@replica1 estimated size is 50.1M
total estimated size is 50.1M
TIME SENT SNAPSHOT
#
zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
backup 7.94G 1.28M 7.94G 0% 1.00x ONLINE -
zfs 7.94G 1.04M 7.94G 0% 1.00x ONLINE -