Как сохранить структуру файла/права собственности/разрешения/... при загрузке папки с удаленного сервера?

Как сохранить структуру файла/права собственности/разрешения/... при загрузке папки с удаленного сервера?

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

Связанный контент