una - tabla de permisos linux
Copie los permisos de archivos, pero no los archivos (3)
Tengo dos copias del mismo árbol de directorios. Casi tienen los mismos archivos en ambos (una versión puede tener un par de archivos extra o faltantes). Sin embargo, la mayoría de los archivos son comunes a ambos directorios (tienen las mismas rutas relativas y todo).
Supongamos que están en directorios:
version1/
version2/
El problema es que los permisos en la versión 1 / se dañaron, y me gustaría copiar los permisos de la versión 2 /, pero lo hago sin reemplazar los archivos en la versión 1 / que son más nuevos.
¿Hay una forma automatizada de hacer esto a través de bash? (No tiene que ser bash, podría ser algún otro método / lenguaje de programación también).
Deberías echarle un vistazo a la opción --reference
para chmod
:
chmod --reference version2/somefile version1/somefile
Aplique find
y xargs
de forma adecuada y debería estar bien, es decir, algo así como
~/version2$ find . -type f | xargs -I {} chmod --reference {} ../version1/{}
Esto incluso funciona recursivamente, y es robusto contra archivos perdidos en el directorio de destino (barra los errores No such file ... , que pueden ser ignorados). Por supuesto, no hará nada con los archivos que solo existen en el directorio de destino.
Aclamaciones,
Podría usar este script (cambia los permisos de forma recursiva pero individual para cada archivo / directorio)
#!/bin/sh
chmod --reference $1 $2
if [ -d $1 ]
then
if [ "x`ls $1`" != "x" ]
then
for f in `ls $1`
do
$0 $1/$f $2/$f
done
fi
fi
Ejecute el script con argumentos version2 version1
chmod owner-group-other ./dir or ./file tal vez?
A menos que los permisos sean precisos y diferentes de un archivo a otro, podría hacer un chmod recursivo en el directorio y unificar los permisos.
Ver man chmod para referencias sobre las opciones que podrían ser útiles