GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo mantener intactos los permisos de propiedad y archivo al copiar archivos o directorios

El otro día planeé hacer una copia de seguridad de algunos datos de mi sistema de escritorio Ubuntu en una unidad USB externa. Después de transferir todos los datos a la unidad externa, noté que el propietario y los permisos de los archivos y directorios en el origen y el destino son diferentes. Pero quería mantener intactos los atributos de archivo existentes (como el propietario, el grupo y la marca de tiempo, etc.) en ambas ubicaciones. Después de una búsqueda rápida en Google y de revisar las páginas de manual del comando "cp", descubrí que podemos mantener intactos los permisos de propiedad y de archivos al copiar archivos y directorios en Linux. Si alguna vez ha estado en una situación como esta, aquí hay una solución rápida para hacerlo.

Mantenga la propiedad y los permisos de archivo intactos al copiar archivos o directorios en Linux

El cp El comando tiene una opción para copiar archivos y directorios, pero conserva las horas de modificación, las horas de acceso y los modos del archivo original.

$ cp -rp ~/data /media/sk/sk_seagate/data/

Aquí, estoy copiando el contenido de una carpeta llamada "datos" a mi disco externo.

Desde el cp páginas man del comando:

-p     same as --preserve=mode,ownership,timestamps

       --preserve[=ATTR_LIST]
              preserve the specified attributes (default: mode,ownership,timestamps), if possible
              additional attributes: context, links, xattr, all

Entonces, si usa -p marca, conservará todos los atributos de archivo existentes, como el modo, la propiedad y las marcas de tiempo del archivo original.

Y la "-r" bandera se utiliza aquí para copiar directorios de forma recursiva. Es decir, copiará directorios y sus subdirectorios y archivos.

Alternativamente, puede usar -a bandera. Incluye el indicador -r y conserva todo, como enlaces, xattr, atributos de SELinux, etc.

$ cp -a ~/data /media/sk/sk_seagate/data/

De las páginas man del comando cp:

-a, --archive
              same as -dR --preserve=all

Para verificar si los permisos y la propiedad del archivo están intactos, use getfacl comando en ambas ubicaciones, es decir, origen y destino.

$ getfacl ~/data
$ getfacl /media/sk/sk_seagate/data/

Si desea copiar archivos entre el sistema local y un sistema remoto en la misma red, puede usar "scp" Comando para transferir archivos de un sistema a otro como se muestra a continuación.

$ scp -rp ~/data [email protected]:/home/senthil/

El comando anterior copiará la carpeta de contenido llamada "datos" de mi sistema local a un sistema remoto. Aquí, 192168.225.22 es la dirección IP de mi sistema remoto y "senthil" es el nombre de usuario del sistema remoto.

Verifique los permisos de archivo y la propiedad del directorio "datos" en ambos sistemas usando el comando "getfacl".

Primero, verifique los atributos del archivo del directorio "datos" en el sistema local:

$ getfacl data/

Salida de muestra:

# file: data/
# owner: sk
# group: sk
user::rwx
group::rwx
other::r-x

A continuación, verifique los atributos de archivo del directorio "datos" en el sistema remoto. Puede iniciar sesión directamente en el sistema remoto y verificar los atributos de archivo de un directorio remoto a través del comando ssh como se muestra a continuación.

$ ssh [email protected] getfacl data

Salida de muestra:

[email protected]'s password:
# file: data
# owner: senthil
# group: senthil
user::rwx
group::rwx
other::r-x

Como puede notar en los resultados anteriores, la información del propietario y del grupo (es decir, senthil) son diferentes en mi sistema remoto. Porque, el -p la bandera del comando scp no conserva todos los permisos.

Desde las páginas man del comando scp:

-p      Preserves modification times, access times, and modes from the original file.

Está claro que la -p flag solo conservará las horas de modificación, las horas de acceso y los modos del archivo original, pero no la propiedad . En tales casos, puede crear un nombre de usuario común en ambos sistemas y probar el comando anterior para tener la misma propiedad y permisos de archivo en diferentes sistemas. O simplemente use el comando "chown" en el sistema de destino para cambiar la propiedad.

Para obtener más detalles, consulte las páginas man de los comandos cp y scp.

$ man cp
$ man scp

Lectura sugerida:

  • Cómo copiar archivos y cambiar la propiedad y los permisos al mismo tiempo

Espero que esto ayude.


Linux
  1. Cómo copiar permisos y propiedad de archivos a otro archivo en Linux

  2. Cómo eliminar archivos y directorios en Linux desde la línea de comandos

  3. Cómo copiar archivos y cambiar la propiedad, los permisos al mismo tiempo

  4. Linux chmod y chown:cómo cambiar los permisos y la propiedad de los archivos en Linux

  5. Cómo montar y desmontar un sistema de archivos en Linux

Cómo copiar archivos y directorios en Linux

Cómo mover archivos y directorios en Linux (comando mv)

Cómo sincronizar archivos y directorios usando Zaloha.sh

Cómo ver y crear archivos y directorios ocultos en Linux

Cómo cambiar el nombre de archivos y directorios en Linux

Cómo copiar archivos y directorios en la terminal de Linux