Cómo copiar archivos usando el comando «instalar» en Linux

Arte conceptual de Bash en un escritorio Ubuntu Linux
Fatmawati Achmad Zaenuri / Shutterstock.com

install es un comando de copia de archivos versátil en Linux y macOS. Es perfecto para el usuario avanzado que busca eficiencia. Lea este artículo para descubrir cómo trabajar de manera más inteligente, no más difícil.

Espere, ¿no es para instalar software?

El installcomando puede tener el nombre más engañoso de cualquiera de los comandos de Linux. En realidad, no instala ningún software. Si está intentando instalar un paquete de software desde la línea de comandos en Ubuntu u otra distribución basada en Debian, use el apt-getcomando. En otras distribuciones de Linux, use la herramienta de administración de paquetes de su distribución de Linux en su lugar, por ejemplo, dnfen Fedora o zypperen openSUSE.

Entonces, ¿qué hace la instalación?

En pocas palabras,  installcombina elementos de los comandos cp( copiar ), chown( cambiar propietario ), chmod( cambiar modo ), mkdir( crear directorio ) y strip( quitar símbolos ). Te permite usar funciones de todas ellas en una sola acción.

El installcomando puede:

  • Copie archivos como el cpcomando.
  • Elija si desea sobrescribir los archivos existentes.
  • Cree el directorio de destino si no existe, como mkdir.
  • Configure los indicadores de permisos de usuario de los archivos, al igual que el chmodcomando.
  • Establezca el propietario de los archivos, al igual que el chowncomando.
  • Elimine el equipaje no esencial de los archivos ejecutables, al igual que el stripcomando.

A pesar de toda esa funcionalidad, el installcomando no tiene demasiadas opciones con las que lidiar.

instalar página de manual

Cuándo lo usarías

El installcomando probablemente no se usará todos los días. Es útil, pero solo para determinadas situaciones. Un escenario en el que installse destaca es el desarrollo de software. Digamos que está programando una nueva utilidad. Deberá realizar pruebas fuera del entorno de desarrollo. Para hacerlo, debe copiar los nuevos archivos de programa en un directorio de prueba. Es posible que sea necesario crear el directorio de prueba, y debe establecer los permisos y la propiedad correctos para los archivos.

Dado que el desarrollo es una actividad iterativa, puede terminar haciendo esta secuencia de acciones muchas, muchas veces. El installcomando hace todo el trabajo pesado por ti. Finalmente, cuando su nueva utilidad esté lista para implementarse, puede usarla installpara copiarla con los permisos correctos a su ubicación de trabajo final.

Relacionado:  Cómo proteger su servidor Linux con fail2ban

Un ejemplo

Un programador está trabajando en una nueva utilidad, llamada ana. Consiste en un archivo binario ejecutable y una base de datos. Después de la prueba, debe copiarse para /usr/local/bin que esté disponible para todos los usuarios del sistema Linux. Deberá sustituir los nombres de archivo y las rutas de directorio en nuestro ejemplo por los archivos y las rutas que está usando en su computadora cuando usa install.

Hasta que esté listo para su lanzamiento, se probará en un directorio llamado ~/test/ana. Los miembros del geekgrupo tendrán permisos de lectura y ejecución. Otros usuarios también tendrán permisos de lectura y ejecución. El installcomando usa la misma representación numérica para los permisos chmod. Nuestro programador ha decidido que los permisos deben establecerse en:

  • Propietario: Leer, escribir y ejecutar.
  • Grupo: Leer y ejecutar.
  • Otros: solo ejecutar.

Cómo usar el installcomando

El directorio de trabajo de nuestro programador ficticio es ~/work. Escribió el programa, lo compiló y produjo un binario llamado  ana. Él ya creó el archivo de base de datos que ana funciona con Words.db. Entonces ambos archivos están listos para probar. Echemos un vistazo a ellos:

ls -l ana Words.db

La anautilidad que acaba de escribir crea anagramas a partir de una frase proporcionada en la línea de comandos. Las pruebas de verificación son bastante sencillas.

prueba de la utilidad ana en el directorio de trabajo

Nuestro programador ha invocado anacon la frase “biscuit” y todo parece estar bien. Ahora quiere copiar estos dos archivos al ~/test/anadirectorio para ver si la nueva utilidad funciona correctamente fuera del entorno de desarrollo. Emite el siguiente comando:

instalar -D -v ana Words.db -t ~ / test / ana

Instale el comando en / test / ana

Las opciones utilizadas en la línea de comando fueron:

  • D : Cree directorios, incluidos los directorios principales, si es necesario.
  • v : Detallado, enumere cada directorio a medida que se crea y cada copia de archivo a medida que se realiza.
  • t : directorio de destino.

Podemos ver que installcrea el ~/testdirectorio y luego crea el ~/test/ana directorio. Los archivos se enumeran uno por uno a medida que se copian en el directorio de destino.

Enumerar los archivos ~/test/ana confirma que se han copiado correctamente.

ls -l

ls en el directorio / test / ana

El siguiente paso es probar la anautilidad invocándola en el ~/test/ana directorio.

prueba de la utilidad ana en el directorio / test / ana

La utilidad funciona como se esperaba, lo cual es genial. Sin embargo, los permisos no son correctos. El requisito es establecer que los miembros del grupo geektengan permisos de lectura y ejecución, y que otros usuarios solo tengan permisos de ejecución.

Podemos abordar ambos problemas de manera bastante simple con el siguiente comando. Tenga en cuenta el uso de sudo para ejecutar el comando con permisos de root. Las  opciones -o-gy lo requieren. Se nos pedirá nuestra contraseña cuando emitamos el comando.

sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~ / test / ana

instalar comando con opciones de copia de seguridad y configuración de permisos

  • La -bopción (copia de seguridad) crea copias de seguridad de los archivos antes de que se sobrescriban.
  • La -Sopción (sufijo) define el sufijo para los archivos de respaldo. Si no proporciona un sufijo, ~se utiliza una (tilde). Estamos solicitando installutilizar un sufijo de .bak.
  • Configuramos el propietario del archivo para que daveuse la -oopción (propietario).
  • La -gopción (grupo) requiere el nombre de un grupo. Este se convierte en el grupo propietario de los archivos. El grupo que vamos a utilizar se llama  geek.
  • La -mopción (modo) establece los modos de archivo para los archivos, utilizando la chmodsintaxis numérica estándar .
Relacionado:  Windows 10 le permitirá cargar un kernel de Linux personalizado

Ya no necesitamos usar la -Dopción (crear directorios), porque sabemos que el directorio de prueba ya existe. También hemos omitido la -vopción (detallada). Enumerar los archivos en nuestro ~/test/ana directorio nos muestra los detalles del archivo:

ls -l

ls en el directorio / test / ana

Esto confirma que se han cumplido todos nuestros requisitos.

  • Los archivos se han copiado en el directorio de prueba.
  • Los permisos se han configurado correctamente.
  • dave es el propietario de los archivos.
  • El geekgrupo es el grupo propietario de los dos archivos.
  • Se han realizado copias de seguridad de cada archivo, llamados ana.bak y Words.db.bak.

Todo eso se logró mediante el uso de un comando. Ordenado.

Nuestro programador realiza algunos cambios finales en la utilidad y vuelve a compilar. Los archivos que han cambiado deben copiarse al ~/test/ana directorio desde el ~/workdirectorio. Podemos hacer esto usando la -Copción (comparar). Si el archivo de origen y el archivo de destino son iguales, el archivo de origen no se copia.

sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~ / test / ana

instalar el comando con la opción -C comparar

La lista de archivos en el directorio de destino nos muestra que el tamaño del anaarchivo ha cambiado. Es más grande que el  ana.bakarchivo. La marca de tiempo activada anatambién ha cambiado. Estos cambios se deben a que aquí se copió la nueva versión del archivo.

ls -l

ls en / test / ana con test fo ana utility

El tamaño del archivo y la marca de tiempo del Words.dbarchivo no han cambiado. No se realizaron cambios en el Words.db archivo, por lo que no se copió. En un proyecto con muchos archivos, la -Copción (comparar) puede ahorrar mucho tiempo y la rotación del disco duro, simplemente copiando los archivos que se han modificado.

Relacionado:  Cómo usar el comando mkfs en Linux

El programador ha vuelto a comprobar que la anautilidad sigue funcionando.

Es el momento de utilizar installpara copiar los archivos al /usr/local/bindirectorio. Esto hará que la nueva utilidad esté disponible para todos los usuarios de esta computadora Linux. Sabemos que /usr/local/bin existe, por lo que no necesitamos crear ese directorio. Podemos usar una versión modificada de nuestro último comando.

Hemos cambiado el directorio de destino para que sea /usr/local/bin. Hemos eliminado la -Copción (comparar) porque todavía no hay copias de estos archivos en el directorio de destino, por lo que no hay nada con qué comparar. Del mismo modo, no hay nada para respaldar, por lo que podemos eliminar la -bopción (respaldo) y la opción -S(sufijo).

sudo install -o dave -g geek -m 751 ana Words.db -t / usr / local / bin

instalar copiando archivos a / usr / local / bin

Podemos enumerar en qué han llegado los archivos /usr/local/bin:

ls -l

ls de / usr / local / bin

Y como prueba final, cambiemos el directorio a nuestro directorio de inicio y veamos si podemos invocar nuestra nueva utilidad desde allí.

prueba de utilidad ana

Tenga en cuenta que no necesitamos preceder el anacomando con lo ./  que significa que se está ejecutando /usr/local/bin. Misión cumplida.

Mencionamos que la instalación puede eliminar las tablas de símbolos redundantes y otros equipajes del archivo binario para reducir su tamaño. Hagámoslo ahora. Tenga en cuenta que el siguiente comando no incluye Words.db. Esto se debe a que Words.db es un archivo de base de datos, no un ejecutable binario. Para copiar y encoger el archivo binario anapodemos usar el siguiente comando. Hemos agregado la opción -s (encoger) con una «s» minúscula. Hemos vuelto a agregar la opción -b (respaldo) y la opción -S (sufijo), con una «S» mayúscula

sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t / usr / local / bin

opción de instalación con opción -s strip

Enumerar los archivos en /usr/local/binnos permite comparar el tamaño del anaarchivo con su versión de respaldo. El anaarchivo se ha reducido a casi el 60% de su tamaño anterior.

ls -l / usr / local / bin

ls en el directorio de trabajo

En resumen

El installcomando se adapta a un uso muy específico. Para muchas personas no se usará día tras día, o posiblemente de mes a mes. A pesar de eso, el installcomando es una buena herramienta para familiarizarse y tener en su arsenal de trucos. Para aquellas ocasiones en las que lo necesita, recompensa su curva de aprendizaje con mejoras en la eficiencia, la simplicidad y simplemente menos pulsaciones de teclas.