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
![](https://soloconlinux.org.es/content/images/2023/01/gio-001.png)
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:
$ gio info fichero_uno
nombre que mostrar: fichero_uno
nombre editado: fichero_uno
nombre: fichero_uno
tipo: regular
tamaño: 8
URI: file:///tmp/Pruebas_Borrado/fichero_uno
atributos:
standard::type: 1
standard::name: fichero_uno
standard::display-name: fichero_uno
standard::edit-name: fichero_uno
standard::copy-name: fichero_uno
standard::icon: application-octet-stream, application-x-generic, application-octet-stream-symbolic, application-x-generic-symbolic
standard::content-type: application/octet-stream
standard::fast-content-type: application/octet-stream
standard::size: 8
standard::allocated-size: 4096
standard::symbolic-icon: application-octet-stream-symbolic, application-x-generic-symbolic, application-octet-stream, application-x-generic
etag::value: 1583877535:621683
id::file: l2049:2359522
id::filesystem: l2049
access::can-read: TRUE
access::can-write: TRUE
access::can-execute: FALSE
access::can-delete: TRUE
access::can-trash: TRUE
access::can-rename: TRUE
time::modified: 1583877535
time::modified-usec: 621683
time::access: 1583877292
time::access-usec: 104130
time::changed: 1583877535
time::changed-usec: 621683
unix::device: 2049
unix::inode: 2359522
unix::mode: 33188
unix::nlink: 1
unix::uid: 1000
unix::gid: 1000
unix::rdev: 0
unix::block-size: 4096
unix::blocks: 8
owner::user: luisgulo
owner::user-real: LUIS GUTIERREZ LOPEZ
owner::group: luisgulo
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:
$ gio info trash:///1001.txt
nombre que mostrar: 1001.txt
nombre editado: 1001.txt
nombre: 1001.txt
tipo: regular
tamaño: 332
URI: trash:///1001.txt
atributos:
standard::type: 1
standard::name: 1001.txt
standard::display-name: 1001.txt
standard::edit-name: 1001.txt
standard::copy-name: 1001.txt
standard::icon: text-plain, text-x-generic, text-plain-symbolic, text-x-generic-symbolic
standard::content-type: text/plain
standard::fast-content-type: text/plain
standard::size: 332
standard::allocated-size: 4096
standard::target-uri: file:///home/luisgulo/.local/share/Trash/files/1001.txt
standard::symbolic-icon: text-plain-symbolic, text-x-generic-symbolic, text-plain, text-x-generic
etag::value: 1583877491:913411
id::file: l2049:2360738
id::filesystem: trash:
access::can-read: TRUE
access::can-write: FALSE
access::can-execute: FALSE
access::can-delete: TRUE
access::can-trash: FALSE
access::can-rename: FALSE
time::modified: 1583877491
time::modified-usec: 913411
time::access: 1583877498
time::access-usec: 149450
time::changed: 1583878065
time::changed-usec: 300828
unix::device: 2049
unix::inode: 2360738
unix::mode: 33188
unix::nlink: 1
unix::uid: 1000
unix::gid: 1000
unix::rdev: 0
unix::block-size: 4096
unix::blocks: 8
owner::user: luisgulo
owner::user-real: LUIS GUTIERREZ LOPEZ
owner::group: luisgulo
trash::orig-path: /tmp/Pruebas_Borrado/1001.txt
trash::deletion-date: 2020-03-10T23:07:45
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:
$ gio move trash:///1001.txt /tmp/Pruebas_Borrado/1001.txt
¡ 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:
$ gio trash Pruebas_Borrado
![](https://soloconlinux.org.es/content/images/2023/01/gio-002.png)
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:
$ gio move trash:///Pruebas_Borrado /tmp/Pruebas_Borrado
Vaciar la Papelera desde la Consola
Tambien desde consola podemos vaciar la papelera sin parpadear:
$ gio trash --empty
Con esto hemos arañado unas pocas opciones y que nos ofrece el comando gio para la gestión del sistema de ficheros virtual.