Realice una copia de seguridad de los datos manteniendo las ACL y los permisos de POSIX

Realice una copia de seguridad de los datos manteniendo las ACL y los permisos de POSIX

Estoy buscando una forma práctica de hacer una copia de seguridad de los datos de un servidor y conservar todas las ACL y permisos. Miré tar, pero según Google, tar no mantiene las ACL. Sé que rsync puede conservar las ACL y los permisos, pero solo si el sistema de destino admite ACL POSIX y tiene los mismos usuarios. En mi caso, estoy haciendo la copia de seguridad en un directorio ubicado en AFS, por lo que las ACL POSIX no son compatibles.

Por el momento, he resuelto el problema escribiendo un script que usa buscar para recurrir a través del sistema (estoy usando buscar porque excluyo algunos directorios) y guarda los permisos y las ACL en un archivo de texto. Esta solución funciona, pero es tremendamente lenta. ¿Existe una solución mejor?

Respuesta1

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

Star es tar con soporte para encabezados POSIX extendidos, es decir, la capacidad de almacenar algunos datos adicionales sobre un archivo en el archivo tar. La -aclopción obtiene las ACL; lo necesita tanto para la creación como para la extracción de archivos.

Respuesta2

Si no desea instalar otro programa, puede hacer una copia de seguridad de las ACL por separado:

getfacl -R somedir > acls.txt

Esto vuelca todas las ACL somediren el archivo acls.txt.

Para restaurar, use:

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

Respuesta3

al lado de la estrella puedes usarbsdtar

Respuesta4

Publicación cruzada de mi respuesta aquí:https://unix.stackexchange.com/a/725745/550161


Al crear/extraer el archivo, debe utilizar tanto el--acls y --xattrsopciones y, por supuesto, tener los permisos adecuados para leer/escribir esasy.

Ejemplos:

1. Creando el archivo:

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

Lo anterior creará un archivo zstdcomprimido , utilizando el nivel de compresión , preservando al mismo tiempo la ACL y los atributos extendidos.tar19

  • La .tzstextensión significa "unarchivar usandocompresión", tal como tgzes para unversión editada, etc.
  • El nivel de compresión utilizado por el zstdcompresor implícito lo establece la ZSTD_CLEVELvariable de entorno proporcionada al inicio en la misma línea.
  • Ver páginas de manual: tar(1)y zstd(1).

2. Extrayendo ese archivo:

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

Lo anterior creará, en su directorio actual, un subdirectorio llamado systemdporque ese es el directorio raíz común dentro del archivo.

  • Todas las configuraciones que había establecido usando//en los originales, se conservarán en la versión extraída.

3. Comparación de atributos de archivos originales y extraídos.

{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
  • No debería ver ningún resultado en las dos primeras líneas porque se redirige a un archivo.
    (Excepción para la primera línea, que generará su directorio actual debido a que la última cd -es un comando separado, que simplemente restaura su directorio actual).
  • Tampoco deberías ver ningún resultado de la línea de diferencias, porque no hay diferencia.

información relacionada