PDA

Ver la Versión Completa : Copiar archivos manteniendo los permisos



Xripox
15/07/2010, 14:56
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 ([Only registered and activated users can see links]) correspondiente (man cp). Pero en cualquier caso, lo mejor es recordarla:


cp [opciones] origen destino

Como ejemplo para todo el artículo vamos a contar con un archivo con el nombre miscript.sh con los atributos que se ven en la siguiente imagen:


[Only registered and activated users can see links]
Nos fijamos en los permisos y en la hora

Al copiar archivos sin indicar ninguna opción no se copian los permisos, ni el propietario, ni cualquier otro atributo del archivo. Sólo se copia el archivo como podemos observar a continuación:


[Only registered and activated users can see links]
Han cambiando tanto los permisos como la hora

En muchos casos, esto es suficiente pero en otros seguramente prefiramos preservar algunos de estos atributos de los archivo que queramos copiar.

Por eso, si queremos mantener los permisos, el propietario y el grupo y las marcas de tiempo (timestamps ([Only registered and activated users can see links])) usaremos la opción -p. Esta opción es equivalente a –preserve=mode,ownership,timestamps que comentaremos más adelante.

Para verlo con un ejemplo, vamos a copiar el archivo miscript.sh al archivo copiarpreservando.sh con la opción -p.


cp -p miscript.sh copiapreservando.sh

Como podemos ver, ahora se han mantenido los mismos permisos y la misma hora en el archivo copiado.


[Only registered and activated users can see links]
Se mantienen los permisos y la hora

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 ([Only registered and activated users can see links]).
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

Por último, si quieres leer toda esta información de primera mano, sólo tienes que ejecutar el siguiente comando:


info cp

Visto en Slice of linux ([Only registered and activated users can see links])