GNU/Linux >> Tutoriales Linux >  >> Linux

Dos excelentes usos para el comando cp:accesos directos de Bash

En julio pasado, escribí sobre dos grandes usos del comando cp:hacer una copia de seguridad de un archivo y sincronizar una copia secundaria de una carpeta.

Después de haber descubierto estas excelentes utilidades, descubrí que son más detalladas de lo necesario, por lo que creé accesos directos a ellas en mi secuencia de comandos de inicio de shell Bash. Pensé en compartir estos accesos directos en caso de que sean útiles para otros o puedan ofrecer inspiración a los usuarios de Bash que aún no han adoptado alias o funciones de shell.

Actualización de una segunda copia de una carpeta:alias de Bash

El patrón general para actualizar una segunda copia de una carpeta con cp es:

cp -r -u -v SOURCE-FOLDER DESTINATION-DIRECTORY

donde el -r significa "descender recursivamente a través de la carpeta visitando todos los archivos", -u significa "actualizar el objetivo" y -v significa "modo detallado", SOURCE-FOLDER es el nombre de la carpeta que contiene la información más actualizada y DESTINATION-DIRECTORY es el directorio que contiene la copia de SOURCE-FOLDER eso debe estar sincronizado.

Puedo recordar fácilmente el -r opción porque la uso a menudo cuando copio carpetas. Probablemente pueda, con un poco más de esfuerzo, recordar -v , y con aún más esfuerzo, -u (¿es "actualizar" o "sincronizar" o...).

O simplemente puedo usar la capacidad de alias en Bash para convertir el cp comando y opciones a algo más memorable, como esto:

alias sync='cp -r -u -v'

Si guardo esto en mi .bash_aliases archivo en mi directorio de inicio y luego iniciar una nueva sesión de terminal, puedo usar el alias, por ejemplo:

sync Pictures /media/me/4388-E5FE

para sincronizar mi carpeta Imágenes en mi directorio de inicio con la versión de la misma en mi unidad USB.

No estoy seguro si ya tienes una sync alias definido? Puede enumerar todos sus alias definidos actualmente escribiendo la palabra alias en el símbolo del sistema en la ventana de su terminal.

¿Te gusta tanto que solo quieres comenzar a usarlo de inmediato? Abra una ventana de terminal y escriba:

echo "alias sync='cp -r -u -v'" >> ~/.bash_aliases

Luego inicie una nueva ventana de terminal y escriba la palabra alias en el símbolo del sistema. Deberías ver algo como esto:

me@mymachine~$ alias

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias gvm='sdk'

alias l='ls -CF'

alias la='ls -A'

alias ll='ls -alF'

alias ls='ls --color=auto'

alias sync='cp -r -u -v'

me@mymachine:~$

Allí puedes ver la sync alias definido.

Hacer copias de seguridad versionadas:función Bash

El patrón general para hacer una copia de seguridad de un archivo con cp es:

cp --force --backup=numbered WORKING-FILE BACKED-UP-FILE

donde el -- force significa "hacer la copia pase lo que pase", el -- backup=numbered significa "usar un número para indicar la generación de la copia de seguridad", WORKING-FILE es el archivo actual que deseamos conservar, y BACKED-UP-FILE es el mismo nombre que el WORKING-FILE y tendrá la información de generación adjunta.

Además de recordar las opciones al cp comando, también debemos recordar repetir el WORKING-FILE nombre por segunda vez. Pero, ¿por qué repetirnos cuando una función Bash puede encargarse de esa sobrecarga por nosotros, así:

Nuevamente, puede guardar esto en su .bash_aliases archivo en su directorio de inicio.

function backup {

    if [ $# -ne 1 ]; then

        echo "Usage: $0 filename"

    elif [ -f $1 ] ; then

        echo "cp --force --backup=numbered $1 $1"

        cp --force --backup=numbered $1 $1

    else

        echo "$0: $1 is not a file"

    fi

}

Llamé a esta función "copia de seguridad" porque no tengo ningún otro comando llamado "copia de seguridad" en mi sistema, pero puede elegir el nombre que más le convenga.

El primer if La declaración verifica para asegurarse de que solo se proporcione un argumento a la función; de lo contrario, imprime el uso correcto con echo comando.

El elif La instrucción comprueba para asegurarse de que el argumento proporcionado es un archivo, y si es así, utiliza (prolijamente) el segundo echo para imprimir el cp comando a utilizar y luego lo ejecuta.

Si el único argumento no es un archivo, el tercer echo imprime un mensaje de error a tal efecto.

En mi directorio de inicio, si ejecuto backup comando así definido en el archivo checkCounts.sql , veo que backup crea un archivo llamado checkCounts.sql.~1~ . Si lo ejecuto una vez más, veo un nuevo archivo checkCounts.sql.~2~ .

¡Éxito! Según lo planeado, puedo seguir editando checkCounts.sql , pero si tomo una instantánea de vez en cuando con una copia de seguridad, puedo volver a la instantánea más reciente si tengo problemas.

En algún momento, es mejor comenzar a usar git para el control de versiones, pero backup como se definió anteriormente, es una buena herramienta barata cuando necesita crear instantáneas pero no está listo para git .

Conclusión

En mi último artículo, les prometí que las tareas repetitivas a menudo se pueden simplificar fácilmente mediante el uso de scripts de shell, funciones de shell y alias de shell.

Aquí he mostrado ejemplos concretos del uso de alias de shell y funciones de shell para simplificar la funcionalidad de sincronización y copia de seguridad de cp dominio. Si desea obtener más información al respecto, consulte los dos artículos citados anteriormente:Cómo guardar las pulsaciones de teclas en la línea de comandos con alias y secuencias de comandos de Shell:una introducción al método shift y las funciones personalizadas, escrito por mis colegas Greg y Seth , respectivamente.


Linux
  1. Una guía de la terminal de Linux para principiantes

  2. Consejos de Bash para el día a día en la línea de comandos

  3. Alias ​​de línea de comandos en el shell de Linux

  4. Nala:una interfaz más bonita para el comando APT

  5. ¿Cómo obtener la finalización de Bash para alias de comando?

3 gestores de contraseñas para la línea de comandos de Linux

Cómo usar el comando de lectura Bash

Accesos directos para navegar por el historial de la terminal

La lista de atajos de teclado Bash útiles

El Bash FOR Loop explicado y simplificado

8 usos comunes del comando táctil de Linux