
Я скомпилировал 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
, особенно если вам нужны «экзотические» функции (хотя, похоже, в данном случае это не так). Поэтому этот метод является наиболее универсальным.