Etape 8 : Sauvegarder les données utilisateurs sur un périphérique externe (clef USB)
D’une part pour limiter l’usure de la carte micro SD du fait des écritures multiples des données utilisateurs, et d’autre part pour réserver la carte micro SD uniquement au système, les données seront écrites sur un disque externe USB (ici une clef USB branchée sur un des ports du Raspberry Pi). Le problème paraît simple au départ, il suffit d’ajouter une entrée dans le fstab de façon à monter automatiquement la clef USB au démarrage, de déplacer les répertoires des utilisateurs situées dans /var/lib/owncloud/data vers la clef USB puis de créer des liens symboliques du dossier /var/lib/owncloud/data vers les dossiers utilisateurs situés sur la clef de stockage et enfin d’exclure du LBU les répertoires utilisateurs (sinon LBU suivra les liens symboliques et enregistrera les données utilisateurs de la clef externe sur la micro SD…). Essayons cela.
lbu exclude /var/lib/owncloud/data/utilisateur1
Hélas, après redémarrage, cela ne fonctionne pas… En effet, le démarrage d’Alpine est trop rapide (!!) pour les disques externes et les clefs USB qui n’ont pas le temps de s’initialiser… Bien que le périphérique de stockage soit effectivement monté, les répertoires et fichiers qu’il contient n’apparaissent pas ! De plus, au redémarrage les liens symboliques ont été effacés, puisque exclus du LBU… Aïe !!
La solution :
1- Créer le répertoire de montage et monter la clef USB :
Remarque : le “nom” de la clef USB peut être facilement trouvé en tapant la commande :
fdisk -l
Cette commande renvoie la liste des périphériques de stockage. Sachant que la carte micro SD sera identifiée mmcblk… l’autre périphérique sera donc la clef USB de stockage (normalement : sda1)
tapez donc :
mkdir -p /media/sda1
mount /dev/sda1 /media/sda1
Vérifier le point de montage en tapant :
mount | grep sda1
la commande renvoie : /dev/sda1 on /media/sda1 type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
2- Déplacez les répertoires utilisateurs (et leur contenu) situés dans /var/lib/owncloud/data vers la clef de stockage.
mv /var/lib/owncloud/data/nom_utilisateur1 /media/sda1/. (attention tapez le point en fin de ligne !!!)
etc…
Dans notre exemple (voir capture d’écran) utilisateur1 est admin.
Le message suivant va apparaître : mv: can’t preserve ownership of ‘/media/sda1/admin/files’: Operation not permitted
Peu importe, cela est du au système FAT 32 de la clef. Si ce message vous dérange, la clef devra être préalablement formatée en EXT3/4, mais pour la compatibilité il est préférable de rester en FAT.
3- La solution va consister à écrire un script qui s’exécutera en fin de démarrage du Raspberry et qui exécutera les actions suivantes :
– création d’un point de montage pour le périphérique de stockage USB :
– montage du périphérique :
– re-création du (des) lien(s) symbolique(s) du dossier /var/lib/owncloud/data vers les dossiers utilisateurs situés sur la clef de stockage
Cette solution pourra paraître peu orthodoxe, mais le script ci-dessous remplit parfaitement son rôle.
Éditer le fichier : nano /etc/local.d/demarrage.start
# !/bin.sh
#
#Script de démarrage
# Forcer le démarrage de Chrony
/etc/init.d/chronyd restart
# Création d’un point de montage pour la clef USB
mkdir -p /media/sda1
# Montage de la clef
mount /dev/sda1 /media/sda1
# Création des liens symboliques
ln -s /media/sda1/nom_utilisateur1/ /var/lib/owncloud/data/nom_utilisateur1
ln -s /media/sda1/nom_utilisateur2/ /var/lib/owncloud/data/nom_utilisateur2
return 0
Enregistrer : ctrl + O
Rendre le script exécutable : chmod + x /etc/local.d/demarrage.start
démarrer le service local : rc-update add local
Remarque : au démarrage il est apparu nécessaire de forcer le démarrage de chrony afin de s’assurer de la mise à la date et à l’heure du système, sans quoi il y a cafouillage avec la base de données.
Remarque 3 : attention, un petit lbu s’impose !!