miércoles, 11 de noviembre de 2020

Cuidado con los discos clonado

He tenido un "pequeño" accidente que he tardado en entender. El problema nació de mi decisión de eliminar la grabadora del ordenador, que ya no uso para nada. Eso supone disponer de un SATA libre. Como siempre, estamos escasos de espacio, y decidí recuperar uno de los discos retirados que tengo por ahí. Empecé por uno de 2,5TB, pero tenía algún sector erróneo, así que recuperé el más "moderno" de los disponibles, un Caviar Black de 2TB y fabricado en 2013. Lo incorporo, veo que está en ext4, así que decido no borrarlo y simplemente leo el UUID con blkid y lo incorporo al /etc/fstab

UUID=nume-rito-en-cuestion /mantener2     ext4    defaults        1 2

y reinicio.

En su interior había un directorio home, ya que este era mi antiguo home —véase aquí para ver el cambio de un HD Black Caviar a un SSD— y decido borrarlo... DESASTRE, por que borra todo ese disco y mi /home activo entero, es decir, todo mi trabajo. A otros les hubiera dado un ataque, pero para mi no es nada nuevo, porque me pasa de vez en cuando (esas manos quietas, muchacho!), así que sacamos el disco problema, tiramos de copia de seguridad para recuperar la información básica, instalamos todo de nuevo, porque mi copia de seguridad no guarda las configuraciones, y restaurado lo fundamental dejamos copiando el grueso de la información perdida; en total, unas 7 horas perdidas. Cosas a tener en cuenta:

  1. La sincronización que tengo del OneDrive —véase entrada anterior— supone que al borrar el home borró también TODO, la nube y los otros ordenadores, cosa que no me ha pasado en Dropbox. MUY IMPORTANTE tener una copia de seguridad local y no fiarse solo de la nube.
  2. ¿De dónde viene este problema? Al principio se lo atribuía a que el disco tenía un directorio /home y que la máquina los hubiera "unido" de alguna manera, pero no debería, ya que uno es /home/usuario y el otro es /mantener2/home. Después, mientras estaba intentando instalar Fedora 33 otra vez, anaconda me decía que detectaba dos discos con la misma UUID. ¿Cómo? Pues por que el disco Caviar Black ERA mi antiguo home, y el nuevo es un clon de él (aquí la prueba del delito clonador).
Sí, había clonado uno sobre otro, y eso ha supuesto que tuvieran para el sistema la misma UUID, y debería saberlo, por que como había dicho en la entrada donde explicaba ese cambio, no había sido necesario recurrir a editar fstab, ya que tenía la misma identificación y, además, debería haberlo visto al editar fstab, pero como lo hacemos todo a velocidad terminal, no nos fijamos en el resto del ambiente. Es decir, al decirle al sistema a través de nautilus —ahora llamado Archivos— que borrara el contenido de un disco, el sistema borró los dos que tenían la misma UUID.

En resumen, antes de reutilizar un disco clonado, formatearlo previamente y a ser posible en un ordenador distinto al que contenga la copia, no vaya a ser que también formatee a los dos en paralelo. Y además, copia de seguridad para todo, y no nos fiemos de tener algo en la nube, por que las nubes se las lleva el viento, o un borrado accidental.

jueves, 5 de noviembre de 2020

Onedrive actualizado en Linux

A pesar de ser un usuario de Dropbox desde que esta aplicación nació, y que además tengo contratada una licencia plus de 2TB, por razones profesionales —los documentos oficiales de mi Universidad tienen que localizarse solo en el software y en el servicio de alojamiento contratado por ella— no me ha quedado más remedio que usar también OneDrive. El problema para lograr un trabajo fluido por alguien que usa software libre para todo está en que no existe un demonio cliente oficial que permita sincronizar OneDrive con el disco duro de trabajo en un sistema operativo Linux. He mirado las posibilidades no oficiales. La que parece más sencilla, Insync, no es GPL y además es de pago. La siguiente posibilidad, Rclone (página propia aquí), sí es GPL y gratuita, y que además permite sincronizar Google Drive, la veo complicada en su configuración (véase aquí y aquí, para el que quiera). Lo que he visto más sencillo y rápido es onedrive, el cliente gratuito y libre de OneDrive de MS.

La instalación y preparación es sencilla. Una buena página que indica lo más importante es ésta. Por pasos:

1. Instalamos

su -c 'dnf install onedrive'


2. Ejecutamos:

$ onedrive

y en el terminal aparece una URL muy grande que nos conecta al sistema Microsoft. Hay que abrir la cuenta y luego (o si ya la tienes abierta también) queda una página en blanco. Copiamos la URL de esa página en el terminal donde decía Enter the response uri:

y con ello permitimos la conexión y sincronización de onedrive con nuestro disco duro.


 

3. Sincronizamos

$ onedrive --synchronize

y aparece en nuestro nautilus —ahora llamado Archivos—. Esta orden actualiza en ambas direcciones TODO el contenido de OneDrive. Si queremos sincronizar solo parte de los directorios o ficheros de nuestro OneDrive, generamos un fichero sync_list en el directorio /home/usuario/.config/onedrive. Ese fichero podría líneas similares a: 

Apuntes
Imagenes
Documenots/fichero1.odt

Siendo los primeros directorios y el último un fichero en concreto que queremos que se sincronice. 

Hasta ahora estoy sincronizándolo todo.

Después de cada cambio, se resincroniza mediante

$ onedrive --synchronize --resync

4. Si queremos evitar la resincronización continua, podemos incluir el cliente onedrive en systemd. De este modo se sincroniza de manera continua desde el inicio y nos olvidamos de resincronizar

$ systemctl --user enable onedrive # permiso
$ systemctl --user start onedrive # inicio servicio

Si queremos comprobar que onedrive está monitorizando los cambios:

$ systemctl status --user onedrive

Si tenemos la monitorización activada y aparece un problema al ejecutar una sincronización al ejecutar onedrive --synchronize --resync—que no es necesario hacer, ya que el sistema se monitoriza automáticamente—, podemos apagar el servicio onedrive en systemd

$ systemctl --user stop onedrive

luego resincronizar OneDrive

$ onedrive --synchronize --resync 

y luego reiniciar el servicio
 
$ systemctl --user start onedrive

Sencillo.