Cómo conservar los permisos de archivos al copiar archivos en Linux

Los permisos de archivo son una parte integral de la especificación de Unix. Sin embargo, hay ciertas cosas que los usuarios principiantes a menudo desconocen, como cómo conservar los permisos de archivos en Linux mientras los copian.

Dado que los archivos copiados son esencialmente archivos nuevos, su permiso depende de la umask del usuario actual. Esto puede llevar a situaciones en las que los archivos o carpetas copiados tengan permisos completamente diferentes a los de la fuente.

Afortunadamente para usted, es fácil retener los permisos de archivos en Linux utilizando herramientas de línea de comandos estándar como cp y rsync . Consulte los ejemplos a continuación para ver cómo copiar y conservar los permisos en Linux.

Conservar los permisos de archivo mediante cp

El comando cp estándar tiene todo lo que necesita para conservar los permisos de archivo mientras realiza la copia. Puede utilizar la opción -p de cp para conservar el modo, la propiedad y las marcas de tiempo del archivo.

 cp -p source-file dest-file

Sin embargo, deberá agregar la opción -r a este comando cuando trabaje con directorios. Copiará todos los subdirectorios y archivos individuales, manteniendo intactos sus permisos originales.

 cp -rp source-dir/ dest-dir/

También puede utilizar la opción -a de cp para conservar los permisos de archivo. Esto habilita el modo de archivo , conservando todo, desde los permisos de archivo hasta los contextos de SELinux.

 cp -a source-dir/ dest-dir/

Conservar los permisos en Linux con rsync

También puede utilizar la utilidad rsync para conservar los permisos de copia en Linux. Muchos administradores prefieren rsync sobre cp debido a su velocidad de copia más rápida. Dado que rsync solo copia la parte actualizada del archivo, son más adecuados para tareas como clonar su disco duro de Linux .

 rsync -a source-dir/ dest-dir

La opción -a de rsync habilita el modo de archivo , que conserva atributos de archivo como permisos y propiedades. Puede usar la opción -v para una salida detallada y -h para ver números en un formato legible por humanos.

 rsync -avh source-dir/ dest-dir

Además, tenga en cuenta la exención de la barra final ( / ) del directorio de destino. Agregar la barra final al destino hará que rsync copie los archivos en otro nivel de subdirectorio.

Verificar los permisos de archivo en Linux

Puede verificar fácilmente los permisos de archivos en Linux usando el comando getfacl (obtener listas de control de acceso a archivos). Validará si los permisos se conservaron como se esperaba.

 getfacl source-file
getfacl dest-file

Copiar archivos conservando los permisos en Linux

Tanto cp como rsync proporcionan opciones estándar para preservar los permisos de archivo en Linux. Puede usar cp para las tareas diarias, mientras que rsync será más adecuado para datos a gran escala. Asegúrese de validar los permisos usando getfacl una vez que haya terminado de copiar.

Aunque rsync puede copiar archivos entre máquinas remotas, el comando scp (copia segura) es otra opción viable para esta tarea. Puede realizar copias de seguridad de archivos de forma segura desde y hacia sistemas en red utilizando scp.