
我在遠端伺服器上的資料夾中編譯了 Linux rootfs。我需要下載它並將其放入本機上的SD卡中,並用它來啟動嵌入式電腦。下載檔案時如何保留檔案的每個屬性?謝謝。
答案1
tar
應該可以做到。它儲存有關所有權和權限的信息,並且在預設情況下是遞歸的。我明白最後SD卡上檔案的所有權既不應該依賴伺服器上定義的使用者或群組,也不應該依賴本機上定義的使用者或群組;這--numeric-owner
是一個好主意。
提取時,您需要使用--same-owner
和--same-permissions
標誌(如果您以 root 身分進行提取,則預設)。
如果您有權在遠端伺服器上將檔案掛載為區塊裝置 ( losetup
),則可以在該檔案中建立檔案系統,mount
然後將檔案部署到其中,以便它們「保留每個屬性」( sudo cp -a
)。然後(在umount
、sync
和之後losetup -d
)您僅下載所述檔案並將其原始推送到本機 SD 卡的分割區(使用dd
、cp
或cat
其他)或在本機掛載並檢索檔案。
請注意,許多mkfs
工具可以對常規文件進行操作。此外,現代的實作mount
可以半直接掛載常規文件(losetup
為您做所有相關的事情)。您可能losetup
根本不需要明確使用。它可能是這樣的:
# on the server
truncate -s <desired_image_size> image
mkfs.<type> <options> image
sudo mount image <mountpoint>
sudo cp -a <directory>/* <mountpoint>/ # warning: * doesn't match dotfiles
sudo umount <mountpoint>
即使您需要無法在伺服器上完成的額外步驟,也可以以整個文件系統的形式下載文件保證檔案系統支援的所有功能將在傳輸過程中保留。您關心的是從另一個檔案系統複製或複製到另一個檔案系統時保留它們,但傳輸本身無法更改它們。在某些情況下,這可能比 更好tar
,特別是如果您需要“異國情調”的功能(但這裡似乎不是這種情況)。因此這種方法是最通用的。