Como preservar a estrutura/propriedade/permissão/... do arquivo ao baixar uma pasta do servidor remoto?

Como preservar a estrutura/propriedade/permissão/... do arquivo ao baixar uma pasta do servidor remoto?

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

tardeveria 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-ownerand --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, mountem seguida, implantar seus arquivos nele para que eles "preservam todos os atributos" ( sudo cp -a). Então (depois de umounte sync) losetup -dvocê baixa apenas o referido arquivo e o envia bruto para uma partição de um cartão SD local (com dd, ou qualquer cpoutro cat) ou monta-o localmente e recupera os arquivos.

Observe que muitas mkfsferramentas podem operar em um arquivo normal. Além disso, as implementações modernas de mountpodem montar um arquivo regular semidiretamente (fazendo todas losetupas 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.

informação relacionada