Ssh

如何使用 tar –one-file-system 包含或添加 /dev

  • March 15, 2018

我正在使用 tar 在完整的遠端文件系統上執行

ssh -n <hostname> 'sudo tar -cpvzf - --one-file-system /' | cat > Bak.tar.gz

這給了我一個壓縮包。我嘗試將此壓縮包導入我正在使用的另一個服務並遇到問題,因為它似乎不包含/dev目錄。我想知道我是否可以做類似--include="/dev"/dev在初始焦油之後的事情。這裡需要一些指導。

只需添加/dev到要歸檔的文件列表中:

ssh -n <hostname> sudo tar -cpvzf - --one-file-system / /dev > Bak.tar.gz

--one-file-system僅防止遞歸到不同文件系統上的目錄。您仍然可以直接列出不同文件系統上的文件/目錄作為 tar 的參數。

您可能只需將其添加到要包含的路徑名中。

tar -cf - --one-file-system / /dev/

但是,這通常根本不是您真正想要的,因為動態/dev會包含太多完全錯誤或不相關的設備節點。

更好的方法(實際上是獲得原始根文件系統的完整副本,包括被其他掛載隱藏的文件)的更好方法是製作文件系統的另一個掛載,它不受子掛載的阻礙,等等tar

這樣您就可以獲得/dev/實際儲存在根文件系統上的(以及其他所有內容)。/dev這通常應該只包括最初在安裝時創建的一組標準節點,並且只在啟動時需要,直到系統在其/dev/之上設置動態。

mkdir /mnt/root
mount --bind / /mnt/root
cd /mnt/root
tar -cpvzf - .
cd /
umount /mnt/root

正如mount手冊頁所述,綁定掛載呼叫僅附加(部分)單個文件系統,而不是可能的 submounts。這就是--one-file-system不再需要的原因:在這種結構下沒有其他文件系統。

引用自:https://unix.stackexchange.com/questions/98124