
我有一個正在編程的設備的檔案系統,我想為其製作一個精確的副本。理想情況下,我希望此副本與從中複製的資料夾相同。我嘗試過使用cp -r
cp -a
andrsync -azvP
來實現這一目標。雖然每個資料夾都會產生不同大小的資料夾(使用du -s
),但最終,即使我的裝置從原始資料夾中運行,它也不會從我複製的資料夾中運行。
- 我使用的命令沒有考慮到什麼?
- 複製檔案系統/資料夾時是否可以保持所有內容相同?如果是這樣,我該怎麼做呢?
PS我在上面發布了類似的問題堆疊溢位但很快意識到我在錯誤的交易所詢問了它
編輯:這可能沒有幫助,但無論我使用哪種方法複製的目錄總是會導致有問題的機器出現內核恐慌並顯示以下輸出。
VFS:無法透過 NFS 掛載根檔案系統,正在嘗試軟碟。 VFS: 無法開啟根設備「nfs」或未知區塊(2,0) 請附加正確的「root=」引導選項;以下是可用的分區: 1f00
64 mtdblock0(驅動程式?)1f02 64 mtdblock2(驅動程式?) 1f04 2432 mtdblock4(驅動程式?)1f05 128 mtdblock5(驅動程式?) 1f06 43520 db 2020 db db?
驅動程式?
答案1
我通常使用以下替代方案之一:
rsync -aHAX
(新增 v 以獲得詳細資訊)確保在複製時保留目標資料夾中的所有連結結構和 x-attrs。不要忘記a
意味著存檔並保留時間、所有權和權限。tar cvf
如果第一個由於某種原因不能滿足我的需要並且我沒有時間,我會使用簡單(不要壓縮以節省時間,只需將它們壓縮),但我總是嘗試第一個。
要檢查一切是否按預期進行,您可以diff -r <folder1> <folder2>
根據需要隨後運行。
答案2
閱讀評論中的回复,聽起來您可能正在嘗試複製根資料夾(「我的裝置不會使用複製的目錄啟動」)。在這種情況下,您應該做幾件事。
$ cd /
$ mkdir backups
$ tar -cvpf /backups/fullbackup.tar --directory=/ --exclude=proc --exclude=sys \
--exclude=dev/pts --exclude=backups .
將根資料夾複製到新系統後,您需要在啟動之前更新 grub。
$ grub-install --recheck /dev/sdX (Where X is the partition number)
$ update-grub
答案3
你可以嘗試FS存檔器。它是類似partimage 的後繼者,現已不再維護。我過去使用過partimage 和FSArchiver,它們都運作得很好。據我所知,它們都會製作與原始檔案系統盡可能接近相同的檔案系統副本。我認為 FSArchiver 比partimage 更強大一些。例如,它適用於 ext4,而partimage 則不行。看FSArchiver/partimage 比較表。
答案4
這有點取決於你所說的「相同」是什麼意思。
rsync
大多時候只要去做就好了。有時您想tar
將所有內容打包到一個文件中並將其提取到其他位置。- 如果您想要完整檔案系統的克隆,您可以使用它
dd
來複製整個檔案系統本身。
如果您有辦法調試您的設備,請嘗試找出它目前無法運行的確切問題是什麼。