Copie archivos y cree directorios de destino al mismo tiempo en Linux
Generalmente 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 lo 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? ¡Ningún 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 se muestra a continuación:
mkdir -p destination && cp source_file destination
Pero este no es un comando único. Aquí hemos utilizado 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 un solo 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 el comando install
.
Método 1: usar el comando install
El comando install
copia los archivos a cualquier destino de su elección en Linux. Se utiliza especialmente para este propósito en sistemas de compilación como automake
. Es parte de GNU coreutils, por lo que no es necesario instalarlo.
Para copiar un archivo y crear el directorio de destino al mismo tiempo usando el comando install
, 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. Copiaremos el archivo y crearemos el directorio de destino al mismo tiempo con el comando install
como se muestra a continuación:
install -D sk.txt ostechnix/sk.txt
Verifique si el archivo se ha copiado en el directorio ostechnix
enumerando su contenido con el comando ls
:
ls ostechnix/
sk.txt
Copie un archivo y cree el directorio de destino al mismo tiempo usando el comando de instalación
¿Ver? No creé el directorio de destino antes. El comando de instalación creó el directorio automáticamente y guardó el archivo en él.
Útil, ¿verdad? ¡En efecto! Esta es una de las características útiles del comando install
. Se 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 del archivo, el comando install
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 varios archivos a varios destinos utilizando el comando install
.
También podemos copiar archivos y cambiar la propiedad y los permisos al mismo tiempo usando el comando 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 instal
l
Método 2: usar el comando cp
Generalmente, usamos el comando cp
para copiar archivos de un lugar a otro. El comando cp
tiene una opción llamada --parents
que nos permite copiar toda la estructura de directorios del archivo fuente y guardarlo en el destino.
Por ejemplo, digamos que el archivo sk.txt
está guardado en el directorio ~/Downloads
y usted desea copiarlo en ~/Documents
. directorio. Si copia el archivo usando el comando cp
de ~/Downloads
a ~/Documents
, el archivo se guardará en una estructura de directorio como esta ->
Hagámoslo en tiempo real y veamos qué pasa.
cp --parents Downloads/sk.txt ~/Documents/
Ahora ejecute el comando tree
para verificar el contenido del directorio ~/Documents
:
tree Documents/
Documents/
└── Downloads
└── sk.txt
1 directory, 1 file
Copie un archivo y cree el directorio de destino al mismo tiempo usando el comando cp
Recuerde que no creamos ningún directorio dentro de la ubicación ~/Documents
. La opción --parents
del comando cp
conservó la estructura del directorio del archivo fuente.
A diferencia del comando install
, no es necesario especificar el nombre del archivo al final del directorio de destino.
Esto no está directamente relacionado con nuestro tema. Sin embargo, el comando cp
creó los directorios de destino automáticamente, es decir, conservó la estructura de directorios del archivo fuente.
Método 3: usar el comando rsync
Rsync
es una solución ideal para copiar y realizar copias de seguridad de datos entre directorios locales y remotos. Para copiar archivos y crear directorios de destino en el momento usando el comando rsync, ejecute:
rsync sk.txt ostechnix/
Donde el directorio llamado ostechnix
no tiene por qué existir. Rsync lo creará automáticamente y guardará el archivo fuente en su interior.
Copie un archivo y cree el directorio de destino al mismo tiempo usando el comando rsync
Entre estos tres comandos, prefiero el comando install
. Porque puedo crear directorios anidados (directorio dentro de otro directorio) usando el comando install
. Los comandos cp
y rsync
solo pueden crear un directorio, hasta donde yo sé. Por favor, corríjame si estoy equivocado.
Lectura relacionada:
- Cómo mantener intactos la propiedad y los permisos de archivo al copiar archivos o directorios