Tengo un árbol de archivos con el permiso correcto. entonces tengo un árbol idéntico (filewise) (con contenido de archivo diferente resistente) con permisos incorrectos.
¿Cómo puedo transferir el diseño de permisos de un árbol a otro?
permissions
filesystems
copy
file-permissions
yawniek
fuente
fuente
Acabo de aprender una forma nueva y sencilla de lograr esto:
Esto generará una lista con todos los permisos y propiedades.
Luego vaya a un nivel por encima del destino y restaure los permisos con
La razón por la que tiene que estar un nivel por encima es que todas las rutas en perms.acl son relativas.
Debe hacerse como root.
fuente
getfacl
ysetfacl
no están necesariamente presentes en todos los sistemas..ac
en el primer comando y.acl
en el segundo?Si tiene el origen y el destino, puede sincronizar sus permisos con
rsync -ar --perms source/ dest
No transferirá los datos, solo permisos ...
fuente
-r
y--perms
son redundantes, pero esto todavía sincroniza permanentes si son lo único que es diferente (que es lo que dijo en la Pregunta; si los árboles no son realmente idénticos, no debería haber dicho que lo eran).Una cosa que podría hacer es usar el comando find para crear un script con los comandos que necesita para copiar los permisos. Aquí hay un ejemplo rápido, podría hacer mucho más con las diversas opciones de printf, que incluyen obtener el propietario, la identificación del grupo, etc.
fuente
Dos caminos:
(en este último caso / dst debe existir)
Editar: lo siento, leí mal. No es lo que preguntaste.
fuente
Creo que escribiría un script en perl para hacerlo. Algo como:
Entonces haz algo como esto:
Escribí esto en la parte superior de mi cabeza, y no ha sido probado; así que verifíquelo antes de dejarlo correr desenfrenado. Esto solo corrige permisos en directorios que existen; no cambiará los permisos en los archivos, ni creará directorios faltantes.
fuente
Se me ocurrió esto:
No es totalmente a prueba de balas, pero hace lo que necesito.
fuente