Faça backup dos dados enquanto mantém ACLs e permissões POSIX

Faça backup dos dados enquanto mantém ACLs e permissões POSIX

Estou procurando uma maneira prática de fazer backup de dados de um servidor e manter todas as ACLs e permissões. Eu olhei para o tar, mas de acordo com o Google, o tar não mantém ACLs. Eu sei que o rsync pode manter ACLs e permissões, mas somente se o sistema de destino suportar ACLs POSIX e tiver os mesmos usuários. No meu caso, estou fazendo o backup em um diretório localizado no AFS, portanto, ACLs POSIX não são suportadas.

No momento, resolvi o problema escrevendo um script que usa find para recorrer ao sistema (estou usando find porque excluo alguns diretórios) e salva as permissões e ACLs em um arquivo de texto. Esta solução funciona, mas é dolorosamente lenta. Existe uma solução melhor?

Responder1

apt-get install star
man star
star -acl -whatever -other -options -you -need

Star é tar com suporte para cabeçalhos POSIX estendidos, ou seja, a capacidade de armazenar alguns dados extras sobre um arquivo no arquivo tar. A -aclopção obtém as ACLs; você precisa dele para criação e extração de arquivos.

Responder2

Se não quiser instalar outro programa, você pode fazer backup das ACLs separadamente:

getfacl -R somedir > acls.txt

Isso despeja todas as ACLs somedirno arquivo acls.txt.

Para restaurar, use:

setfacl -R --set-file=acls.txt somedir

Responder3

ao lado da estrela você pode usarbsdtar

Responder4

Postando minha resposta aqui:https://unix.stackexchange.com/a/725745/550161


Ao criar/extrair o arquivo você precisa usar tanto o--acls e --xattrsopções e, claro, ter as permissões adequadas para ler/escrever essase.

Exemplos:

1. Criando o arquivo:

ZSTD_CLEVEL=19 tar --acls --xattrs -caPf systemd-network-conf.tzst --directory=/etc systemd/network systemd/networkd.conf.d

O procedimento acima criará um arquivo zstdcompactado , usando o nível de compactação , preservando as ACLs e os atributos estendidos.tar19

  • A .tzstextensão significa "umarquivar usandocompressão", assim como tgzé para umversão editada etc.
  • O nível de compactação usado pelo zstdcompressor implícito é definido pela ZSTD_CLEVELvariável de ambiente fornecida no início da mesma linha.
  • Consulte as páginas de manual: tar(1)e zstd(1).

2. Extraindo esse arquivo:

sudo tar --acls --xattrs -xvf systemd-network-conf.tzst

O procedimento acima criará, em seu diretório atual, um subdiretório nomeado systemdporque esse é o diretório raiz comum dentro do arquivo.

  • Todas as configurações que você definiu usando//nos originais, serão preservados na versão extraída.

3. Comparação dos atributos do arquivo original e extraído.

{cd /etc; getfacl -R systemd/network systemd/networkd.conf.d} >original.acl; cd -
getfacl -R systemd/network systemd/networkd.conf.d >extracted.acl
diff -u original.acl extracted.acl
  • Você não deverá ver nenhuma saída das duas primeiras linhas porque ela é redirecionada para um arquivo.
    (Exceção para a primeira linha, que exibirá seu diretório atual devido ao último cd -comando separado, que apenas restaura seu diretório atual.)
  • Você também não deverá ver nenhuma saída da linha diff, porque não há diferença.

informação relacionada