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