Mam system plików dla programowanego urządzenia, które chciałbym wykonać dokładną kopię. Idealnie chciałbym, aby ta kopia była identyczna z folderem, z którego została skopiowana. Próbowałem użyć cp -r
cp -a
i rsync -azvP
starać się to osiągnąć. Każdy z nich powoduje powstanie folderu o innym rozmiarze (używającym du -s
) i ostatecznie, mimo że moje urządzenie ucieka z oryginalnego folderu, nie będzie działać z folderu, który skopiowałem.
- Co jest pomijane, że polecenia, których użyłem, nie uwzględniają?
- Czy można zachować wszystko identycznie podczas kopiowania systemu plików / folderu? Jeśli tak, to jak miałbym to zrobić?
PS Umieściłem podobne pytania na StackOverflow, ale szybko zdałem sobie sprawę, że zadałem je w złej wymianie
Edycja: Może to nie być pomocne, ale bez względu na to, której metody używam skopiowanego katalogu, zawsze powoduje, że dany komputer przechodzi w jądro jądra z następującymi danymi wyjściowymi.
VFS: Nie można podłączyć root fs przez NFS, próbując wykonać dyskietkę. VFS: Nie można otworzyć urządzenia głównego „nfs” lub nieznanego bloku (2,0) Dołącz poprawną opcję rozruchową „root =”; tutaj są dostępne partycje: 1f00
64 mtdblock0 (sterownik?) 1f02 64 mtdblock2 (sterownik?) 1f04 2432 mtdblock4 (sterownik?) 1f05 128 mtdblock5 (sterownik?) 1f06 4352 mtdblock6 (sterownik?) 1f07 204928 mtdblock7 (sterownik?) 1f08 50304 mtdblock8 (sterownik?) 0800
8388608 sda driver: sd Kernel panic - brak synchronizacji: VFS: Nie można zamontować root fs na nieznanym bloku (2,0)
źródło
du
wynikach nie oznacza, że zawartość nie jest taka sama.rsync -a
lubcp -a
wykonaj dokładne kopie katalogów, ale próbujesz skopiować dysk rozruchowy, musisz wykonać kilka czynności, aby to zrobić.dd if=/some/location of=/some/other/location bs=4M
odczyt i zapis danych w obecnej postaci.Odpowiedzi:
Ogólnie używam jednej z następujących alternatyw:
rsync -aHAX
(dodaj v dla gadatliwości) upewnia się, że podczas kopiowania zachowasz jakąkolwiek strukturę linków i x-attrs w folderze docelowym. Nie zapomnija
oznacza archiwizowania i pozwala zachować czas, własność i uprawnienia już.tar cvf
(nie kompresuj, aby zaoszczędzić czas, po prostu zwiększ go) używam, jeśli pierwszy nie spełnia tego, czego potrzebuję z jakiegokolwiek powodu i nie mam czasu, ale zawsze próbuję pierwszego.Aby sprawdzić, czy wszystko poszło zgodnie z planem, możesz uruchomić
diff -r <folder1> <folder2>
później, jeśli chcesz.źródło
du -s
różnicy. Kiedyśrsync -axXSAH
wszystko kopiowałem. -X kopiuje tylko w systemie plików, a nie pliki montowane z innego systemu plików.Czytanie odpowiedzi w komentarzach wygląda na to, że prawdopodobnie próbujesz skopiować folder główny („Moje urządzenie nie uruchamia się przy użyciu skopiowanego katalogu”). W takim przypadku powinieneś zrobić kilka rzeczy.
Po skopiowaniu folderu głównego do nowego systemu konieczne będzie zaktualizowanie programu grub przed uruchomieniem.
źródło
tar c
wtedytar x
to. Najważniejsze było, aby upewnić się, że moja maszyna jest wyłączona, ponieważ uruchamiałem ją za pomocą FS, który był lokalny dla mojej maszyny, ale zdalnie do urządzenia, które uruchamiałem (uruchamiałem urządzenie przez NFS)grub-install: error: embedding is not possible, but this is required for cross-disk install.
Możesz spróbować FSArchiver . Jest to następca podobnego obrazu, który jest obecnie nieobsługiwany. W przeszłości używałem zarówno partimage, jak i FSArchiver i oba działały dobrze. O ile mi wiadomo, oboje robią kopie systemu plików, który jest możliwie najbardziej identyczny z oryginałem. Myślę, że FSArchiver jest nieco potężniejszy niż partimage. Na przykład działa z ext4, a partimage nie. Zobacz tabelę porównawczą FSArchiver / partimage .
źródło
Używanie
du
do porównywania folderów jest z natury kłopotliwe. Jeśli chcesz naprawdę porównać 2 katalogi oparte wyłącznie na ich rozmiarach, użyjdu
następującego:Ten przełącznik zgłasza rzeczywisty rozmiar katalogów w stosunku do ilości miejsca na dysku, które zużywa przechowywane na fizycznym nośniku. Dyski są zorganizowane w bloki i pliki są zapisywane w tych blokach. Jeśli plik potrzebuje tylko BLOKU + 1 miejsca, zajmie 2 miejsca o wartości BLOKÓW, i to
du
zwykle zgłasza. Pamiętaj, że nazwa narzędzia to użycie dysku!Biorąc pod uwagę, że masz do czynienia z czymś, co brzmi jak cały system plików, chciałbym użyć go
dd
do wykonania dokładnej kopii partycji, na której znajduje się katalogNastępnie możesz użyć tego,
boot.img
aby przywrócić partycję gdziekolwiek chcesz.źródło
du -sh /var
daje 21G, aledu -sh --apparent-size /var
daje 209G w moim systemie.Zależy to trochę od tego, co rozumiesz przez „identyczny”.
rsync
byłoby w porządku. Czasami chcesz użyć,tar
aby spakować wszystko do pliku i wypakować go w innym miejscu.dd
do skopiowania całego systemu plików.Jeśli masz jakiś sposób na debugowanie urządzenia, spróbuj dowiedzieć się, jaki dokładnie jest problem, dlaczego obecnie nie działa.
źródło