¿Qué usar para hacer una copia de seguridad de los archivos, preservando las ACL?

24

Cuando se utiliza la utilidad tar para almacenar archivos en copias de seguridad, se pierden las ACL extendidas.

¿Existe alguna solución comúnmente utilizada y no hack (como: crear un script que recree las ACL desde cero) para preservar las ACL?

seda
fuente
1
Ver también esta pregunta duplicada .
Totor

Respuestas:

4

Usando alquitrán

Crear:

tar --acls -cpf backup.tar some-dir-or-file

Para descomprimir:

tar --acls -xpf backup.tar
Scott Grayban
fuente
3
tar: unrecognized option '--acls'No funciona.
maniat1k
1
Fedora tiene parches no estándar GNU Tar que incluyen--acls
user55149
3
En Debian, tarno es compatible --aclshasta Jessie. (Ver error # 732071. ) La función también está disponible en el paquete de wheezy-backports.
Alastair Irvine
Tenga en cuenta que dicha wheezy-backportsversión de tartiene un error wrt la --aclsopción. La extracción de Tarball usando dicha opción asignará acl, incluso si el archivo no tenía ninguno (!). Ver aquí .
Digger
14

En realidad, creo que la pregunta no se refería a los bits de permiso de archivo (estándar), sino a la información extendida de ACL (consulte setfacl (1) o acl (5)).

Que yo sepa, el tar de GNU no modificado ignora la información de ACL. (La página de manual para GNU tar 1.15.1 como se envía con RHEL 5.2 menciona los interruptores --acls y --no-acls, pero no los he puesto a funcionar).

Sin embargo, el programa estrella puede realizar copias de seguridad y restaurar ACL, si selecciona el formato exustar :

star -c -p -acl artype=exustar -f archive.tar  files...
star -x -acl -f archive.tar

Página de inicio de Star: http://cdrecord.berlios.de/new/private/star.html Star está disponible en ubuntu, al menos.

bhm
fuente
Esto se parece a lo que busco, tendré que echarle un vistazo. Ahora necesito comprar algunas horas más por día;)
seda
3
starno está disponible en Debian y no parece ser mantenido por un "equipo". Sin embargo, el proyecto sigue vivo y mantenido después de más de 30 años. Prueba bsdtarsi quieres algo más.
Totor
1
después del cierre de belios, puede encontrarlo aquí: sourceforge.net/projects/s-tar/files
Jonas Stein
9

Estoy buscando una solución también hasta ahora encontré esto:

primero hago un getfactl de mi carpeta

getfacl -R /a_folder > folder.acl

luego haz un alquitrán regular

tar -czvf folder.tar.gz /a_folder

cuando lo extraigo

tar -xvf folder.tar.gz

hacer un setfacl para los permisos.

setfacl --restore=folder.acl

esto funciona para mi

maniat1k
fuente
1
Gracias. Nada funcionó para mí en esta página [lo digo en serio, incluso compilé la estrella de la fuente, pero no pudo hacer el trabajo]. Pero esto realmente funcionó. Aunque no es elegante, pero funciona perfecto.
ashishsony
5
rsync with the -A and/or -X options.
Skaperen
fuente
2

Si está buscando una solución fácil de usar pero potente, se la recomiendo rdiff-backup.

Básicamente, hace una copia de un directorio de origen en un directorio de destino, pero también guarda información adicional para que pueda retroceder en el tiempo cuando lo desee.

Y, por supuesto, conserva enlaces simbólicos, archivos especiales, enlaces duros, permisos, propiedad uid / gid y tiempos de modificación.

Pablo Antonio
fuente
2

Te sugiero que uses bsdtar.

bsdtar copias de seguridad extendidos ACL por defecto , utiliza la misma sintaxis como GNU tar, y los archivos que produce son legibles GNU tar.

El paquete y el nombre del comando (bajo distribuciones basadas en Debian) es bsdtar.

bsdtar cf archive.tar /my/folder/using/extd_acl 
bsdtar xf archive.tar 

El segundo comando (extraer) restaura las ACL.

Totor
fuente
No puedo hacer que funcione, aunque estoy seguro de que funcionó hace algún tiempo. Presentó un error, code.google.com/p/libarchive/issues/detail?id=329 .
Ambroz Bizjak
Lo mismo aquí en realidad ... Lo probé en Debian 8 Jessie y no funcionó. :(
Totor
Lo estoy usando en Debian (x64, PC) desde hace varios años sin ningún problema (wheezy, jessie, y actualmente se extiende en varias máquinas).
Binarus
1

De la página del manual de alquitrán.

-p, --same-permissions, --preserve-permissions
             ignora umask al extraer archivos (el valor predeterminado para root)

En realidad, no es el acto de archivar lo que altera los permisos de acceso (ACL), sino el acto de desempaquetarlos. Tar se usa con mucha frecuencia para distribuir archivos de un usuario a otro, por lo que se considera conveniente aplicar una máscara de usuario cuando desempaquetan.

Para preservar los permisos anteriores de los archivos, simplemente ad ap para sus opciones. Por ejemplo

Alquitrán recto:

tar xvp some-file

bz.tar:

tar xvjp some-file

gz.tar:

tar xvzp some-file
Eli Frey
fuente
esto no funciona.
maniat1k
1
Además, el alquitrán determina automáticamente qué extraer. No hay necesidad de pasar 'j' o 'z'.
Good Person