Comando history, cómo hacer una copia de seguridad en Ubuntu
En el siguiente artículo vamos a echar un vistazo a cómo podemos hacer una copia de seguridad del historial de la terminal en Ubuntu y cómo restaurarla. La terminal de Gnu/Linux nos ofrece a los usuarios un comando llamado history. Esta función va a realizar una copia de seguridad de cada operación con comandos que utilicemos, lo que nos permite a los usuarios poder usarla en otro momento.
Dado que todos los comandos de la terminal que ejecutemos los usuarios se guardan en el ‘historial‘, en algunos casos puede resultar muy útil tener una copia de seguridad del mismo a buen recaudo para su uso posterior. En las siguientes líneas vamos a ver cómo hacer una copia de seguridad del historial de la terminal en Ubuntu y también cómo restaurarla después.
Comando History
¿Dónde se almacena el historial de la terminal?
La terminal de Gnu/Linux almacena su historial en un archivo. Este se llama ‘.bash_history‘ y se almacena en el directorio de inicio, desde dónde cualquier puede editarlo. Dado que el archivo de historial de terminal se almacena en el directorio del usuario, cada uno va a disponer de un archivo.
Cualquier usuario del sistema puede ver el historial de otro con un simple comando. Entonces, por ejemplo, si quisiésemos echar un vistazo al historial de la línea de comandos, solo tendríamos que escribir algo como lo siguiente en la terminal (Ctrl+Alt+T):
cat /home/usuario/.bash_history
Los usuarios también vamos a poder ver el historial del usuario actual con el que iniciemos sesión en la terminal ejecutando:
history
Ya que el historial es solo un archivo, vamos a poder buscar dentro como en un archivo de texto normal utilizando la utilidad grep. Por ejemplo, para encontrar instancias de ‘touch‘ habría que utilizar algo como lo siguiente:
cat /home/user/.bash_history | grep 'touch'
También podríamos utilizar el siguiente comando:
history | grep 'termino-a-buscar'
Para ver posibles usos del comando history, podemos escribir:
history --help
Guardar el historial de la terminal en una copia de seguridad
Como veníamos diciendo, el ‘historial’ para el terminal es solo un archivo de texto oculto que contiene todos los comandos escritos por el usuario. Bueno, dado que es solo un archivo, eso significa que es muy fácil hacer una copia de seguridad para guardarla.
Para hacerla utilizaremos el comando cat. Con este comando vamos a poder ver la totalidad de un archivo de texto directamente en la terminal. Si este comando lo utilizamos en combinación con el símbolo ‘>‘ podremos redirigir la salida de la visualización a un archivo, el cual utilizaremos como copia de seguridad.
Nuestra copia de seguridad la conseguiremos escribiendo lo siguiente en la terminal(Ctrl+Alt+T):
cat ~/.bash_history > backup_historial
También podemos ejecutar el comando history en combinación con ‘>’ para guardar la salida del comando en un archivo:
history > backup_historial
Otra posibilidad será hacer una copia de seguridad del historial de otro usuario. Es importante asegurarse de cambiar el ‘nombre_usuario‘ según nos interese:
cat /home/nombre_usuario/.bash_history > backup_historial
Haz una copia de seguridad de ciertos elementos del historial
Si solo queremos hacer una copia de seguridad de comandos específicos del historial, podremos hacerlo viendo el archivo de historial y combinándolo con el comando grep, que filtrará palabras clave específicas.
En los siguientes ejemplos vamos a usar ‘>>’ en lugar de ‘>’. El motivo de utilizar ‘>>’ es que no sobrescribirá el contenido de la copia de seguridad del archivo de historial y puede volver a ejecutarse varias veces para agregar a la copia de seguridad.
Por ejemplo, si quisiésemos hacer una copia de seguridad de los comandos en el historial que contienen el comando gsettings, podremos ejecutar la siguiente operación:
cat ~/.bash_history | grep 'gsettings' >> backup_historial
O también sería posible utilizar:
cat /home/nombre_usuario/.bash_history | grep 'gsettings' >> backup_historial
El filtrado con grep también se puede aplicar al comando history:
history | grep 'gsettings' >> backup_historial
Para hacer una copia de seguridad de ciertas palabras clave del archivo de historial, solo hay que reemplazar ‘gsettings‘ en los ejemplos anteriores. Además podremos volver a ejecutar este comando tanto como sea necesario.
Restaurar la copia de seguridad del historial
Restaurar la copia de seguridad del historial es tan simple como eliminar el archivo original y colocar la copia de seguridad en su lugar. Para eliminar el archivo de historial original, podemos utilizar el comando rm para eliminar ‘.bash_history‘.
Una vez eliminado el archivo de la carpeta de inicio del usuario en el que queramos restaurar el historial, con el comando mv podremos cambiar el nombre de ‘backup_historial’ a ‘.bash_history‘.
mv backup_historial ~/.bash_history
Ahora que el nuevo archivo de historial está en su lugar, debemos ejecutar el siguiente comando para volver a cargar la función.
history -rw
Cuando terminemos, podemos ejecutar ‘history’ para ver los comandos restaurados en la ventana de la terminal.