Linux

使用 dd 和 gzip 進行備份和恢復

  • March 11, 2017

我看過各種文章討論使用 dd 創建驅動器映像並僅儲存“使用過的數據”。在提出問題/問題之前,讓我們假設一些事情。

假設

  1. 複製/映像的驅動器是 /dev/sda
  2. /dev/sda 是 10TB
  3. /dev/sda 上的已用空間為 1TB
  4. 映像儲存到某個遠端 CIFS 安裝位置

問題/問題

將選項cp--sparse=always選項一起使用dd應該會生成一個稀疏文件,以便文件顯示為 1GB:

cp --sparse=always <(dd if=/dev/sda bs=8M) /mnt/remote/location/disk.img

或者像下面這樣,應該壓縮所有歸零的空間:

dd if=/dev/sda1 | gzip -c > /mnt/remote/location/disk.img.gz

那麼,**稀疏的圖像文件對恢復有什麼影響呢?傳輸的數據是 1GB 還是 10GB,包括感知到的空白/歸零空間?**這顯然是評估潛在網路負載和恢復時間的考慮因素。

PS 我知道還有其他選項,例如 Clonezilla 和 ddrescue 之類的選項將允許恢復功能,但問題是關於在上述上下文中使用 dd 的具體問題。

謝謝。

寫入 Windows CIFS 共享 SMB1

來自微軟的說法是:“在 Windows NTFS 文件系統中,預設情況下文件不會稀疏。應用程序或使用者需要通過 FSCTL_SET_SPARSE 控制程式碼顯式標記文件稀疏。” 不幸的是,Linux 沒有通過 SMB1 標記這些文件。據報導,如果您首先在 Windows 端(使用 Cygwin )使文件稀疏dd if=/dev/zero of=BigFile bs=1M count=1 seek=150000,那麼您可以繼續從 Linux 將其編寫為稀疏文件。我相信閱讀將是未優化的。

實驗

使用 RHEL6 coreutils-8.4cp --sparse=always local_file /mnt/cifs/file_on_cifs不會寫入稀疏文件。讀取 CIFS 文件時,它會讀取歸零區域(無fiemap優化)。在 RHEL6 中,備份和恢復都將通過網路傳輸整個文件;更好的gzip它。

在 Ubuntu 14x 上與 coreutils-8.25 的情況相同。

寫入 Windows CIFS 共享 SMB2/SMB3

有一個2014 更新檔“向 SMB2/SMB3 掛載添加稀疏文件支持”,因此希望在 Windows 8.1 和其他平台的掛載共享上支持稀疏文件。

寫入 Linux CIFS 共享

當您從某個 Linux 伺服器在 Linux 客戶端上掛載 Samba 共享時,您甚至可以在 SMB1 上寫入稀疏文件。沒有閱讀優化。

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