GNU/Linux >> Tutoriales Linux >  >> Linux

Copiar archivos en Linux

La copia de documentos solía requerir un miembro del personal dedicado en las oficinas y luego una máquina dedicada. Hoy en día, copiar es una tarea que los usuarios de computadoras hacen sin pensarlo dos veces. Copiar datos en una computadora es tan trivial que se hacen copias sin que te des cuenta, como cuando se arrastra un archivo a una unidad externa.

El concepto de que las entidades digitales son triviales para reproducir es generalizado, por lo que la mayoría de los informáticos modernos no piensan en las opciones disponibles para duplicar su trabajo. Y, sin embargo, hay varias formas diferentes de copiar un archivo en Linux. Cada método tiene características matizadas que pueden beneficiarlo, según lo que necesite hacer.

Aquí hay varias formas de copiar archivos en Linux, BSD y Mac.

Copiando en la GUI

Contenedores Linux

  • ¿Qué son los contenedores de Linux?
  • Una introducción a la terminología de contenedores
  • Descargar:Introducción a los contenedores
  • Operadores de Kubernetes:automatización de la plataforma de orquestación de contenedores
  • eBook:Patrones de Kubernetes para diseñar aplicaciones nativas de la nube
  • ¿Qué es Kubernetes?

Al igual que con la mayoría de los sistemas operativos, puede realizar toda la administración de archivos en la GUI, si esa es la forma en que prefiere trabajar.

Arrastrar y soltar

La forma más obvia de copiar un archivo es la forma en que probablemente esté acostumbrado a copiar archivos en las computadoras:arrastrar y soltar. En la mayoría de los escritorios Linux, arrastrar y soltar de una carpeta local a otra carpeta local mueve un archivo por defecto. Puede cambiar este comportamiento a una operación de copia manteniendo presionada la Ctrl después de comenzar a arrastrar el archivo.

Su cursor puede mostrar un indicador, como un signo más, para mostrar que está en modo de copia:

Tenga en cuenta que si el archivo existe en un sistema remoto, ya sea un servidor web u otra computadora en su propia red a la que accede a través de un protocolo de uso compartido de archivos, la acción predeterminada suele ser copiar, no mover, el archivo.

clic con el botón derecho

Si encuentra que arrastrar y soltar archivos en su escritorio es impreciso o torpe, o al hacerlo quita demasiado las manos del teclado, generalmente puede copiar un archivo usando el menú contextual. Esta posibilidad depende del administrador de archivos que utilice, pero generalmente, un clic derecho produce un menú contextual que contiene acciones comunes.

La acción de copiar del menú contextual almacena la ruta del archivo (donde existe el archivo en su sistema) en su portapapeles para que luego pueda pegar el archivo en otro lugar:

En este caso, en realidad no está copiando el contenido del archivo en su portapapeles. En su lugar, está copiando la ruta del archivo. Cuando pega, su administrador de archivos mira la ruta en su portapapeles y luego ejecuta un comando de copia, copiando el archivo ubicado en esa ruta a la ruta en la que está pegando.

Copiando en la línea de comandos

Si bien la GUI es una forma generalmente familiar de copiar archivos, copiar en una terminal puede ser más eficiente.

cp

El equivalente obvio basado en terminal para copiar y pegar un archivo en el escritorio es el cp dominio. Este comando copia archivos y directorios y es relativamente sencillo. Utiliza la conocida fuente y objetivo (estrictamente en ese orden), por lo que para copiar un archivo llamado example.txt en sus Documentos directorio:

$ cp example.txt ~/Documents

Al igual que cuando arrastra y suelta un archivo en una carpeta, esta acción no reemplaza a Documentos con ejemplo.txt . En su lugar, cp detecta que Documentos es una carpeta y coloca una copia de example.txt en él.

También puede, convenientemente (y eficientemente), cambiar el nombre del archivo a medida que lo copia:

$ cp example.txt ~/Documents/example_copy.txt

Ese hecho es importante porque te permite hacer una copia de un archivo en el mismo directorio que el original:

$ cp example.txt example.txt
cp: 'example.txt' and 'example.txt' are the same file.
$ cp example.txt example_copy.txt

Para copiar un directorio, debe usar -r opción, que significa --recursiva . Esta opción ejecuta cp en el directorio inode y luego en todos los archivos dentro del directorio. Sin la -r opción, cp ni siquiera reconoce un directorio como un objeto que se puede copiar:

$ cp notes/ notes-backup
cp: -r not specified; omitting directory 'notes/'
$ cp -r notes/ notes-backup

gato

El gato command es uno de los comandos más incomprendidos, pero solo porque ejemplifica la extrema flexibilidad de un sistema POSIX. Entre todo lo demás gato hace (incluido su propósito previsto de concat creando archivos), también puede copiar. Por ejemplo, con gato puede crear dos copias de un archivo con un solo comando. No puedes hacer eso con cp .

La importancia de usar gato copiar un archivo es la forma en que el sistema interpreta la acción. Cuando usas cp para copiar un archivo, los atributos del archivo se copian junto con el propio archivo. Eso significa que los permisos de archivo del duplicado son los mismos que los del original:

$ ls -l -G -g
-rw-r--r--. 1 57368 Jul 25 23:57  foo.jpg
$ cp foo.jpg bar.jpg
-rw-r--r--. 1 57368 Jul 29 13:37  bar.jpg
-rw-r--r--. 1 57368 Jul 25 23:57  foo.jpg

Usando gato sin embargo, para leer el contenido de un archivo en otro archivo, se invoca una llamada al sistema para crear un nuevo archivo. Estos nuevos archivos están sujetos a su umask predeterminado. ajustes. Para obtener más información sobre umask , lea el artículo de Alex Juarez sobre umask y permisos en general.

Ejecutar umask para obtener la configuración actual:

$ umask
0002

Esta configuración significa que los nuevos archivos creados en esta ubicación reciben 664 (rw-rw-r-- ) permiso porque nada está enmascarado por los primeros dígitos de umask (y el bit ejecutable no es un bit predeterminado para la creación de archivos), y el último dígito bloquea el permiso de escritura.

Cuando copias con gato , en realidad no copia el archivo. Usas gato para leer el contenido del archivo y luego redirigir la salida a un nuevo archivo:

$ cat foo.jpg > baz.jpg
$ ls -l -G -g
-rw-r--r--. 1 57368 Jul 29 13:37  bar.jpg
-rw-rw-r--. 1 57368 Jul 29 13:42  baz.jpg
-rw-r--r--. 1 57368 Jul 25 23:57  foo.jpg

Como puedes ver, gato creó un archivo completamente nuevo con el umask predeterminado del sistema aplicado.

Al final, cuando todo lo que quiere hacer es copiar un archivo, los tecnicismos a menudo no importan. Pero a veces desea copiar un archivo y terminar con un conjunto predeterminado de permisos y con cat puedes hacerlo todo en un solo comando.

rsync

El rsync command es una herramienta versátil para copiar archivos, con la notable capacidad de sincronizar su origen y destino. En su forma más simple, rsync se puede usar de manera similar a cp comando:

$ rsync example.txt example_copy.txt
$ ls
example.txt    example_copy.txt

El verdadero poder del comando radica en su capacidad para no copiar cuando no sea necesario. Si usa rsync para copiar un archivo en un directorio, pero ese archivo ya existe en ese directorio, entonces rsync no se molesta en realizar la operación de copia. A nivel local, ese hecho no necesariamente significa mucho, pero si está copiando gigabytes de datos a un servidor remoto, esta característica hace una gran diferencia.

Sin embargo, lo que marca la diferencia, incluso localmente, es la capacidad del comando para diferenciar archivos que comparten el mismo nombre pero que contienen datos diferentes. Si alguna vez se encontró frente a dos copias de lo que debería ser el mismo directorio, entonces rsync puede sincronizarlos en un directorio que contiene los últimos cambios de cada uno. Esta configuración es bastante común en las industrias que aún no han descubierto la magia del control de versiones y para las soluciones de respaldo en las que hay una fuente de verdad para propagar.

Puede emular esta situación intencionalmente creando dos carpetas, una llamada example y el otro example_dupe :

$ mkdir example example_dupe

Cree un archivo en la primera carpeta:

$ echo "one" > example/foo.txt

Usa rsync para sincronizar los dos directorios. Las opciones más comunes para esta operación son -a (para archivo , que garantiza que se conserven los enlaces simbólicos y otros archivos especiales) y -v (para detallado , brindándole comentarios sobre el progreso del comando):

$ rsync -av example/ example_dupe/

Los directorios ahora contienen la misma información:

$ cat example/foo.txt
one
$ cat example_dupe/foo.txt
one

Si el archivo que está tratando como fuente diverge, el destino se actualiza para que coincida:

$ echo "two" >> example/foo.txt
$ rsync -av example/  example_dupe/
$ cat example_dupe/foo.txt
one
two

Tenga en cuenta que rsync El comando está destinado a copiar datos, no a actuar como un sistema de control de versiones. Por ejemplo, si un archivo en el destino de alguna manera se adelanta a un archivo en el origen, ese archivo aún se sobrescribe porque rsync compara los archivos en busca de divergencias y asume que el destino siempre debe reflejar el origen:

$ echo "You will never see this note again" > example_dupe/foo.txt
$ rsync -av example/  example_dupe/
$ cat example_dupe/foo.txt
one
two

Si no hay cambios, entonces no se produce ninguna copia.

El rsync El comando tiene muchas opciones que no están disponibles en cp , como la capacidad de establecer permisos de destino, excluir archivos, eliminar archivos obsoletos que no aparecen en ambos directorios y mucho más. Usa rsync como un poderoso reemplazo para cp , o simplemente como un complemento útil.

Muchas formas de copiar

Hay muchas maneras de lograr esencialmente el mismo resultado en un sistema POSIX, por lo que parece que la reputación de flexibilidad del código abierto está bien ganada. ¿Me he perdido una forma útil de copiar datos? Comparte tus hacks de copia en los comentarios.


Linux
  1. Copiar archivos en la terminal de Linux

  2. Mover archivos en la terminal de Linux

  3. Mover archivos en Linux sin mv

  4. Linux:¿recuperación de datos después de copiar el archivo al dispositivo de bloqueo?

  5. ¿Qué son los archivos dispersos en Linux?

Comando ls en Linux para listar archivos

Cómo cambiar el nombre de un archivo (s) en Linux

Cómo copiar una gran cantidad de archivos en Linux

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

Archivo de copia de Linux:¡Linux CP simplificado!

Cómo comprimir un archivo en Linux