![Realice una copia de seguridad de los datos manteniendo las ACL y los permisos de POSIX](https://rvso.com/image/488051/Realice%20una%20copia%20de%20seguridad%20de%20los%20datos%20manteniendo%20las%20ACL%20y%20los%20permisos%20de%20POSIX.png)
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 -acl
opció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 somedir
en 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 --xattrs
opciones y, por supuesto, tener los permisos adecuados para leer/escribir esasacclyxattr.
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 zstd
comprimido , utilizando el nivel de compresión , preservando al mismo tiempo la ACL y los atributos extendidos.tar
19
- La
.tzst
extensión significa "unalquitránarchivar usandozstdcompresión", tal comotgz
es para unzipversión editada, etc. - El nivel de compresión utilizado por el
zstd
compresor implícito lo establece laZSTD_CLEVEL
variable de entorno proporcionada al inicio en la misma línea. - Ver páginas de manual:
tar(1)
yzstd(1)
.
2. Extrayendo ese archivo:
sudo tar --acls --xattrs -xvf systemd-network-conf.tzst
Lo anterior creará, en su directorio actual, un subdirectorio llamado systemd
porque ese es el directorio raíz común dentro del archivo.
- Todas las configuraciones que había establecido usandochown/chmod/setfaclen 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 últimacd -
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.