miércoles, 19 de enero de 2011

Copiar archivos manteniendo los permisos

Uno de los comandos básicos de GNU/Linux es el que nos permite copiar archivos o directorios: cp. La estructura general de este comando bastante sencilla como se puede leer en la página del manual
correspondiente (man cp). Pero en cualquier caso, lo mejor es recordarla:
cp [opciones] origen destino

Como ejemplo copiaremos el archivo de nombre miscript.sh con sus atributos, al archivo copiapreservando.sh
cp -p miscript.sh copiapreservando.sh
Ya tendríamos nuestro archivo copiado manteniendo los permisos, el propietario y el grupo y las marcas de tiempo (timestamps) usaremos la opción -p. Esta opción es equivalente a:
–preserve=mode,ownership,timestamp.
Sin embargo, si queremos tener un control absoluto sobre que atributos nos interesa preservar tenemos que usar la opción 
–preserve[=LISTA_ATRIBUTOS] 
donde LISTA_ATRIBUTOS es una lista separada por comas de algunos de los siguientes elementos:
  • mode: preserva el modo del archivo y la lista de control de acceso (permisos).
  • ownership: preserva el propietario y el grupo. En la mayoría de los sistemas operativos modernos, sólo los usuarios con los privilegios apropiados pueden cambiar el propietario de un archivo, por lo que tendremos que anteponer sudo al comando cp para mantener el propietario y el grupo si no son los nuestros.
  • timestamps: preserva las fechas de último acceso y última modificación.
  • context: preserva el contexto de seguridad SELinux del archivo.
  • links: preserva en los archivos de destino cualquier enlace entre su correspondiente archivo origen.
  • xattr: preserva los atributos extendidos.
  • all: preserva todos los atributos anteriores.
Como ejemplo podríamos mantener el modo y los atributos extendidos del archivo original:
cp --preserve=mode,xattr miscript.sh copiacontrol.sh
Para mas info usar el comando:
info cp
Un saludo y hasta la próxima
Fuente