Ssh
如何使用 tar –one-file-system 包含或添加 /dev
我正在使用 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
不再需要的原因:在這種結構下沒有其他文件系統。