
Compilei um rootfs do Linux em uma pasta em um servidor remoto. Preciso baixá-lo e colocá-lo em um cartão SD em um computador local e usá-lo para inicializar um computador incorporado. Como posso preservar todos os atributos dos arquivos ao baixá-los? Obrigado.
Responder1
tar
deveria ser capaz de fazer isso. Ele armazena informações sobre propriedade e permissões e é recursivo por padrão. Entendo que a propriedade dos arquivos no cartão SD não deve depender de usuários ou grupos definidos no servidor, nem de usuários ou grupos definidos no computador local; então --numeric-owner
é uma boa ideia.
Ao extrair, você precisa usar os sinalizadores --same-owner
and --same-permissions
(que são padrão se você fizer isso como root).
Se você tiver autoridade no servidor remoto para montar um arquivo como um dispositivo de bloco ( losetup
), poderá criar um sistema de arquivos dentro do arquivo e, mount
em seguida, implantar seus arquivos nele para que eles "preservam todos os atributos" ( sudo cp -a
). Então (depois de umount
e sync
) losetup -d
você baixa apenas o referido arquivo e o envia bruto para uma partição de um cartão SD local (com dd
, ou qualquer cp
outro cat
) ou monta-o localmente e recupera os arquivos.
Observe que muitas mkfs
ferramentas podem operar em um arquivo normal. Além disso, as implementações modernas de mount
podem montar um arquivo regular semidiretamente (fazendo todas losetup
as coisas relacionadas para você). Você provavelmente não precisará usar explicitamente losetup
. Pode ser como:
# 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>
Mesmo se você precisar de etapas adicionais que não podem ser executadas no servidor, baixar arquivos na forma de um sistema de arquivos completogarantiasque todos os recursos suportados pelo sistema de arquivos permanecerão durante a transferência. Sua preocupação é preservá-los ao copiar de/para outro sistema de arquivos, mas a transferência em si não pode alterá-los. Em alguns casos, isso pode ser melhor que tar
, especialmente se você precisar de recursos "exóticos" (o que não parece ser o caso aqui). Portanto este método é o mais genérico.