![Faça backup dos dados enquanto mantém ACLs e permissões POSIX](https://rvso.com/image/488051/Fa%C3%A7a%20backup%20dos%20dados%20enquanto%20mant%C3%A9m%20ACLs%20e%20permiss%C3%B5es%20POSIX.png)
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 -acl
opçã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 somedir
no 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 --xattrs
opções e, claro, ter as permissões adequadas para ler/escrever essasaclexattr.
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 zstd
compactado , usando o nível de compactação , preservando as ACLs e os atributos estendidos.tar
19
- A
.tzst
extensão significa "umalcatrãoarquivar usandozstdcompressão", assim comotgz
é para umgzipversão editada etc. - O nível de compactação usado pelo
zstd
compressor implícito é definido pelaZSTD_CLEVEL
variável de ambiente fornecida no início da mesma linha. - Consulte as páginas de manual:
tar(1)
ezstd(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 systemd
porque esse é o diretório raiz comum dentro do arquivo.
- Todas as configurações que você definiu usandochown/chmod/setfaclnos 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 últimocd -
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.