У меня есть файловая система для устройства, которое я программирую, для которого я хотел бы сделать точную копию. В идеале я хотел бы, чтобы эта копия была идентична папке, из которой она была скопирована. Я пытался использовать cp -r
cp -a
и rsync -azvP
попытаться достичь этого. Каждый из них, тем не менее, приводит к папке с другим размером (используя du -s
) и, в конечном счете, даже если на моем устройстве не будет исходной папки, он не будет скопирован с той, которую я скопировал.
- Что исключается из-за того, что команды, которые я использовал, не учитываются?
- Можно ли сохранить все идентичным при копировании файловой системы / папки? Если так, как бы я поступил так?
PS Я опубликовал аналогичные вопросы на StackOverflow, но быстро понял, что задал его не на тот обмен
Изменить: Это может быть не полезно, но независимо от того, какой метод я использую скопированный каталог, всегда вызывает рассматриваемый компьютер к панике ядра со следующим выводом.
VFS: невозможно смонтировать root fs через NFS, попробуйте дискету. VFS: Невозможно открыть корневое устройство «nfs» или unknown-block (2,0). Добавьте правильный параметр загрузки «root =»; Вот доступные разделы: 1f00
64 mtdblock0 (драйвер?) 1f02 64 mtdblock2 (драйвер?) 1f04 2432 mtdblock4 (драйвер?) 1f05 128 mtdblock5 (драйвер?) 1f06 4352 mtdblock6 (драйвер?) 1f07 204928 mtdblock7 (драйвер?) 1f08 50304 mtdblock8 (драйвер?) 0800
8388608 sda драйвер: sd Паника ядра - не синхронизируется: VFS: невозможно смонтировать root fs на unknown-block (2,0)
источник
du
выходных данных не является показателем того, что содержимое не совпадает.rsync -a
илиcp -a
делать точные копии каталогов, но вы пытаетесь скопировать загрузочный диск, есть еще несколько вещей, которые вам нужно сделать, чтобы завершить это.dd if=/some/location of=/some/other/location bs=4M
чтения и записи данных как есть.Ответы:
Я обычно использую одну из следующих альтернатив:
rsync -aHAX
(добавьте v для многословия) гарантирует, что при копировании вы сохраните любую структуру ссылок и x-attrs в целевой папке. Не забывайте,a
означает архив и сохраняет время, права собственности и разрешения уже.tar cvf
(не сжимайте, чтобы сэкономить время, просто смените их) - вот что я использую, если первый не соответствует тому, что мне нужно по какой-либо причине, и у меня нет времени, но я всегда пробую первый.Чтобы проверить, что все прошло как надо, вы можете запустить
diff -r <folder1> <folder2>
потом, если хотите.источник
du -s
разницы. Я привыкrsync -axXSAH
копировать все заново. -X будет копировать только внутри файловой системы, а не файлы, смонтированные из другой файловой системы.Читая ваш ответ в комментариях, вы можете попытаться скопировать корневую папку («Мое устройство не загружается с использованием скопированного каталога»). В этом случае вам нужно сделать несколько вещей.
После того, как вы скопировали корневую папку в новую систему, вам нужно будет обновить grub перед ее загрузкой.
источник
tar c
тогдаtar x
. Кикер должен был убедиться, что моя машина была выключена, так как я загружал ее, используя FS, которая была локальной для моей машины, но удаленной от устройства, с которого я загружался (яgrub-install: error: embedding is not possible, but this is required for cross-disk install.
Вы можете попробовать FSArchiver . Это преемник подобного образа, который сейчас не поддерживается. В прошлом я использовал и partimage, и FSArchiver, и они оба работали хорошо. Насколько я знаю, они оба делают копии файловой системы, максимально близкой к оригинальной. Я думаю, что FSArchiver немного мощнее, чем пристрастие. Например, он работает с ext4, а partimage - нет. См. Таблицу сравнения FSArchiver / Partimage .
источник
Использование
du
для сравнения папок по своей сути проблематично. Если вы действительно хотите сравнить две директории, основываясь исключительно на их размерах, используйтеdu
следующее:Этот переключатель сообщит точный размер каталогов в зависимости от объема дискового пространства, которое он использует при хранении на физическом носителе. Диски организованы в блоки, а файлы записаны в эти блоки. Если файлу требуется только БЛОК + 1 место, он будет занимать 2 БЛОКА места, и это
du
обычно сообщается. Помните, что название инструмента - использование диска!Учитывая, что вы имеете дело с тем, что звучит как целая файловая система, я был бы склонен использовать
dd
для создания точной копии раздела, на котором находится каталогЗатем вы можете использовать это
boot.img
для восстановления раздела, где вы хотите.источник
du -sh /var
дает 21G, ноdu -sh --apparent-size /var
дает 209G в моей системе.Это немного зависит от того, что вы подразумеваете под «идентичным».
rsync
было бы хорошо большую часть времени. Иногда вы хотите использовать,tar
чтобы упаковать все в файл и извлечь его в другом месте.dd
для копирования всей файловой системы.Если у вас есть какие-либо способы отладки вашего устройства, попробуйте выяснить, в чем именно заключается проблема, почему оно в настоящее время не работает.
источник