GIO - Sistema de Ficheros Virtual
Libreria de acceso al Sistema de Ficheros Virtual
Gnome (con GIO) y a su vez KDE (con KIO) nos ofrecen unas librerias con un conjunto de funciones y utilidades que permiten a los usuarios del sistema y a los desarrolladores acceder de un modo sencillo a su sistema de archivo virtual.
En el caso de GIO se trata de una biblioteca de bajo nivel que permite el acceso al software de Gnome, GTK+ y a Gnome Shell.
A todos los efectos se mantiene separada como librería, pero se incluye integrada en GLib.
Una de las herramientas que incluye gvfs (Gnome Virtual File System) es la aplicación gio. Se trata de una pequeña utilidad a nivel de comando para uso por usuarios de nivel medio/avanzado que en algún momento nos puede ser útil.
gio es un herramienta que nos permite desde una consola (shell), acceder a muchas de las funciones y utilidades de la libreria de la que recibe su nombre.
Si accedemos a la consola y la llamamos con el parámetro --help podemos ver todas las opciones y lo que nos permite hacer:
gio --help
Uso:gio COMANDO [ARGS…]
Comandos:
help Imprimir ayuda
version Imprimir versión
cat Concatenar archivos en la salida estándar
copy Copiar uno o más archivos
info Mostrar información sobre las ubicaciones
list Listar el contenido de las ubicaciones
mime Obtener o establecer el gestor para un tipo MIME
mkdir Crear carpetas
monitor Monitorizar cambios en archivos y claves
mount Montar o desmontar las ubicaciones
move Mover uno o más archivos
open Abrir archivos con la aplicación predeterminada
rename Renombrar un archivo
remove Eliminar uno o más archivos
save Leer de la entrada estándar y guardar
set Establecer el atributo de un archivo
trash Mover archivos o carpetas a la papelera
tree Listar el contenido de las ubicaciones en un árbol
Use “gio help COMMAND” para obtener ayuda detallada.
Borrar desde consola hacia la Papelera
Esta es quizás una de las mejores opciones de gio, ya que con un sencillo comando se 'borra' el archivo indicado y se se lo lleva a la Papelera de reciclaje del usuario actual.
El comando para borrar y llevar un fichero a la papelera es:
gio trash fichero
También nos permite borrar un grupo completo de fichero llevándolos directamente a la Papelera.
Supongamos que tenemos varios ficheros:
luisgulo@Debian·SysAdmin:/tmp/Pruebas_Borrado$ ls -l
total 36
-rw-r--r-- 1 luisgulo luisgulo 332 mar 10 22:58 1001.txt
-rw-r--r-- 1 luisgulo luisgulo 30 mar 10 22:58 1002.txt
-rw-r--r-- 1 luisgulo luisgulo 10 mar 10 22:58 1003.txt
-rw-r--r-- 1 luisgulo luisgulo 13 mar 10 22:59 1004.txt
-rw-r--r-- 1 luisgulo luisgulo 20 mar 10 22:59 cuarto-fichero
-rw-r--r-- 1 luisgulo luisgulo 14 mar 10 22:59 fichero
-rw-r--r-- 1 luisgulo luisgulo 11 mar 10 22:59 fichero-dos
-rw-r--r-- 1 luisgulo luisgulo 16 mar 10 22:59 fichero.tres
-rw-r--r-- 1 luisgulo luisgulo 8 mar 10 22:58 fichero_uno
Ahora vamos a borrar (hacia la papelera) los ficheros 1001 al 1004:
gio trash 100*txt
Veremos que tras la ejecución, han sido borrados de la ruta actual.
Si abrimos la Papelera desde nuestro Escritorio, para ver su contenido están magicamente allí, listos para ser recuperados en caso necesario.
Algo que no sucede si realizamos un borrado con el comando rm
Listar Ficheros, Directorios o GVFS
Otro uso de gio es poder ver los ficheros que hay actualmente en una ruta o en un sistema de ficheros virtual.
luisgulo@Debian·SysAdmin:/tmp/Pruebas_Borrado$ gio list
fichero_uno
fichero-dos
fichero.tres
cuarto-fichero
fichero
En este caso hemos usado el parametro list, que hace que gio se comporte como si ejecutasemos el comando ls -1 directorio
Listar contenido de la papelera desde la linea de comando
Si caambiamos un poco la sistaxis anterior, podemos incluso ver el contenido de la papelera sin tener que abrirla desde el entorno gráfico:
gio list trash://
1001.txt
1004.txt
1003.txt
1002.txt
En este caso hemos usado el nombre de la Papelera, definida como trash:// en el GVFS (Gnome Virtual File System).
Otros parámetros que admite list son:
- -l, --long Muestra información extendida
- -u, --print-uris Muestra las URIs completas del fichero
- -a, --atributtes=... Atributos que podemos obtener del objeto
Si jugamos un poco con estos parámetros veremos que podemos extraer mucha información de cualquier fichero, incluso si se ha llevado a la papelera:
luisgulo@Debian·SysAdmin:/tmp/Pruebas_Borrado$ gio list -l trash:// -u
trash:///1001.txt 332 (regular)
trash:///1004.txt 13 (regular)
trash:///1003.txt 10 (regular)
trash:///1002.txt 30 (regular)
Hemos obtenido el tamaño y URI exacta de cada uno de los ficheros que están en la Papelera. Veremos ahora como extraer más detalles de los ficheros con el parametro info.
Obtener Información de los Ficheros desde el GVFS
Con nuestros ficheros anteriores, de la carpeta Pruebas_Borrado y de la Papelera (trash), vamos a obtener información relevante a los ficheros:
Ahora veamos la información que podemos obtener de un fichero que está en la Papelera, recordad que hay que indicar la URI completa del fichero:
Una de las propiedades mas interesantes, al obtener la información del fichero, es que nos muestra la ruta original de donde estaba ubicado el fichero antes de ser borrado (trash::orig-path), lo cual nos ofrece nuevas posibilidades desde la consula.
Restaurar la Papelera desde la Consola
Dado que gio, como tal no dispone de una opción 'Restaurar', podemos realizar ese procedimiento nosotros mismos gracias a que conocemos la ruta original del fichero y de que gio dispone del parametro move.
Lo primero que haremos será obtener mediante el parámetro info, indicando que sólo queremos saber la ruta original del fichero a restaurar:
$ gio info -a trash::orig-path trash:///1001.txt
URI: trash:///1001.txt
atributos:
trash::orig-path: /tmp/Pruebas_Borrado/1001.txt
Ahora sólo tenemos que usar el parámetro move, para mover/restaurar el fichero de la Papelera a su ubicación original:
¡ Genial, hemos recuperado el fichero de la Papelera, desde la consola !
Borrando Directorios a la Papelera desde la Consola
Al igual que podemos 'borrar' un directorio llevandolo a la Papelera con gio, también podemos borrar un directorio completo:
Y podemos realizar con esa carpeta las mismas acciones que hicimos con los ficheros, por ejemplo podemos ver información de esa carpeta en la Papelera:
$ gio info trash:///Pruebas_Borrado
nombre que mostrar: Pruebas_Borrado
...
tipo: directory
tamaño: 4096
URI: trash:///Pruebas_Borrado
atributos:
standard::type: 2
standard::name: Pruebas_Borrado
...
standard::copy-name: Pruebas_Borrado
standard::icon: inode-directory, folder, inode-directory-symbolic, folder-symbolic
standard::content-type: inode/directory
...
access::can-rename: FALSE
time::modified: 1583881836
...
owner::group: luisgulo
trash::orig-path: /tmp/Pruebas_Borrado
trash::deletion-date: 2020-03-11T00:12:45
Como hicimos con el fichero, podemos también restaurar ese directorio de la Papelera en un único paso:
Vaciar la Papelera desde la Consola
Tambien desde consola podemos vaciar la papelera sin parpadear:
Con esto hemos arañado unas pocas opciones y que nos ofrece el comando gio para la gestión del sistema de ficheros virtual.