(De: /programming/15245144/copy-file-permissions-but-not-files , cerrado porque fuera de tema)
Tengo dos copias del mismo árbol de directorios. Casi tienen los mismos archivos en ambos (una versión puede tener un par de archivos adicionales o faltantes). Sin embargo, la mayoría de los archivos son comunes a ambos directorios (tienen las mismas rutas relativas y todo).
Suponga que estos están en directorios:
version1/
version2/
El problema es que los permisos en la versión 1 / se equivocaron, y me gustaría copiar los permisos de la versión 2 /, pero hacerlo sin reemplazar los archivos en la versión 1 / que son más nuevos.
¿Existe una manera automatizada de hacer esto a través de comandos de shell o scripts?
unix
file-permissions
unix-shell
copying
Mariano Paniga
fuente
fuente
Respuestas:
GNU cp conoce la
--attributes-only
bandera desde coreutils 8.6fuente
Mi versión de
cp
no tiene la--attributes-only
bandera, así que elaboré esto. Probado brevemente en carpetas simples, YMMV.fuente
¡Puedes, pero no pienso de forma "automatizada"!
GNU chown y GNU chmod tienen un
--reference=RFILE
parámetro que puede usar.Utiliza
RFILE
configuraciones (permisos, propietario, grupo, etc.) y las copiayourfile
.El manual explica con más detalle.
fuente
En mi caso, resolví usando el comando "stat" con "find" y "vi" para crear un script que aplique permisos.
En "vi" inserté en todas las líneas el comando "chmod":
%s/^/chmod /g
copié el script en elversion2/
directorio y lo ejecuté.Otras soluciones parecen válidas pero no las probé por si acaso.
fuente
Inspirado por la respuesta de Mariano Paniga, creo que tengo una mejor, que no necesita vi y buscar / reemplazar comandos. Incluso quiero copiar la información de propiedad también (uid / gid).
Puede personalizar los comandos dentro de
stat -c '...'
lo que desee. Para todas las opciones disponibles, verman stat
.fuente