Búsqueda de sitios web

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 install

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 -> ~/Documentos/Descargas/sk.txt.

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

Artículos relacionados