GNU/Linux >> Tutoriales Linux >  >> Linux

Copie archivos y cree directorios de destino al mismo tiempo

Por lo general, copiamos archivos de una ubicación a otra ubicación existente usando comandos como cp , rsync y scp etc. Si la ubicación de destino no existe, primero la creamos y luego copiamos el archivo a esa ubicación recién creada. Hasta ahora, así es como suelo copiar archivos de una ubicación a otra desde la línea de comandos. ¿Sabías que podemos copiar un archivo y crear el directorio de destino automáticamente si no existe? ¿No? ¡No hay problema! En esta guía, veremos cómo copiar archivos y crear directorios de destino al mismo tiempo, con un solo comando, en Linux.

Tenga en cuenta que no estoy hablando de combinar dos comandos. Por ejemplo, cualquiera podría hacer esto combinando dos comandos como los siguientes:

$ mkdir -p destination && cp source_file destination

Pero, esto no es un solo comando. Aquí hemos usado dos comandos, es decir, mkdir y cp . En realidad, es un comando de una sola línea. Ahora déjame mostrarte cómo hacer la misma tarea usando solo un comando.

Copie archivos y cree directorios de destino al mismo tiempo en Linux

Podemos hacer esto usando tres métodos diferentes. Primero veremos cómo hacerlo usando install comando.

Método 1:usar install comando

La install El comando copia los archivos a cualquier destino de su elección en Linux. Se usa especialmente para este propósito en sistemas de compilación como automake . Es parte de GNU coreutils, por lo que no necesita instalarlo.

Para copiar un archivo y crear el directorio de destino al mismo tiempo usando install comando, simplemente ejecute:

$ install -D source-file destination-directory

Ejemplo:

El siguiente comando copia un archivo llamado sk.txt a un directorio de destino llamado ostechnix . Tenga en cuenta que el directorio de destino no existe. Vamos a copiar el archivo y crear el directorio de destino al mismo tiempo con install comando como a continuación:

$ install -D sk.txt ostechnix/sk.txt

Verifique si el archivo se ha copiado en ostechnix directorio enumerando su contenido con ls comando:

$ ls ostechnix/
sk.txt

¿Ver? No creé el directorio de destino antes. El comando de instalación creó el directorio automáticamente y guardó el archivo en él.

Práctico, ¿verdad? ¡En efecto! Esta es una de las características útiles de install dominio. Uno puede usar esto en scripts de shell.

Hay algunas limitaciones en este método. Debe mencionar el nombre del archivo de origen al final de la ubicación de destino. Si no especifica el nombre de archivo, install el comando no lo copiará y mostrará el siguiente error:

$ install -D sk.txt ostechnix/
install: target 'ostechnix/' is not a directory: No such file or directory

Puede copiar un archivo a la vez. No hay forma de copiar múltiples archivos a múltiples destinos usando install comando.

También podemos copiar archivos y cambiar la propiedad, los permisos al mismo tiempo usando install como se describe en la siguiente guía.

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

Para obtener más detalles sobre el comando de instalación, consulte su página de manual.

$ man install

Método 2:usar cp comando

Generalmente, usamos cp comando para copiar archivos de un lugar a otro. El cp El comando tiene una opción llamada --parents lo que nos permite copiar toda la estructura de directorios del archivo de origen y guardarlo en el destino.

Por ejemplo, digamos, el sk.txt el archivo se guarda en ~/Downloads directorio y quería copiarlo en ~/Documents directorio. Si copia el archivo usando cp comando desde ~/Downloads a ~/Documents , el archivo se guardará en una estructura de directorios como esta -> ~/Documents/Downloads/sk.txt .

Hagámoslo en tiempo real y veamos qué sucede.

$ cp --parents Downloads/sk.txt ~/Documents/

Ahora ejecuta el tree comando para verificar ~/Documents contenido del directorio:

$ tree Documents/
Documents/
└── Downloads
    └── sk.txt

1 directory, 1 file

Recuerde que no creamos ningún directorio dentro de ~/Documents localización. Los --parents opción del cp El comando conservó la estructura de directorios del archivo fuente.

A diferencia de la install comando, no necesita especificar el nombre del archivo al final del directorio de destino.

Esto no está directamente relacionado con nuestro tema. Sin embargo, el cp El comando creó los directorios de destino automáticamente, es decir, conservó la estructura de directorios del archivo de origen.

Método 3:usar rsync comando

Rsync es una solución ideal para copiar y respaldar datos entre directorios locales y remotos. Para copiar archivos y crear directorios de destino en el momento mediante el comando rsync, ejecute:

$ rsync sk.txt ostechnix/

Donde el directorio llamado ostechnix no tiene que existir. Rsync lo creará automáticamente y guardará el archivo fuente dentro.

Entre estos tres comandos, prefiero install dominio. Porque puedo crear directorios anidados (directorio dentro de otro directorio) usando install dominio. El cp y rsync los comandos solo pueden crear un directorio, hasta donde yo sé. Corrígeme si me equivoco.

Lectura relacionada:

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

Linux
  1. Encuentra archivos y directorios en Linux con el comando de búsqueda

  2. Cómo crear un alias y usar el comando Alias ​​en Linux

  3. Copiar archivos y directorios en Linux

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

  5. Hacer ping y tcpdump al mismo tiempo

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

Cómo usar el comando cp para copiar archivos y directorios

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

4 formas de transferir archivos y directorios en Linux

Comando Stat:mostrar atributos de archivos y directorios

Copie archivos de forma segura con el comando SCP