Paheko

Gestion d'association simple, complète et efficace

Sauvegarde automatique et synchronisation des fichiers

Afin de vous assurer que vos données sont toujours disponibles, même en cas de problème au niveau de l'hébergeur de votre Paheko, il est conseillé de réaliser des sauvegardes régulièrement.

Le plus simple est de faire manuellement une sauvegarde de la base de données et des documents sur votre disque dur.

Mais il est aussi possible de mettre en place une sauvegarde automatique de la base de données et des documents.

Voici un exemple de mise en place, si vous avez un ordinateur sous Linux, qui ne sera évidemment pas le même que celui utilisé pour l'hébergement de Paheko :-)

Il est évidemment conseillé d'adapter cet exemple à vos besoins.

Paheko version 1.3.4 ou supérieur est requis.

Créer un identifiant d'accès à l'API

Commencez par créer un nouvel identifiant et mot de passe d'accès à l'API, dans le menu Configuration, onglet Fonctions avancées, puis API.

Choisissez une description (par exemple Sauvegardes), et un identifiant, par exemple backups.

Notez le mot de passe, il vous sera utile plus tard.

Sauvegarde automatique de la base de données et des fichiers

Installez d'abord le logiciel curl, par exemple avec la commande sudo apt install curl si vous utilisez Debian, Ubuntu, ou Mint.

Dans votre répertoire personnel, créez un nouveau répertoire paheko_backup, et créez-y le fichier texte backup.sh contenant ceci :

#!/bin/sh
# Sauvegarde automatique de Paheko

LOGIN="backupread"
PASSWORD="khoZv3mtwnsHZ85vqHKxQ!!"
HOST="larustine.org"

api ()
{
  curl --fail-with-body -s -o .download "https://${LOGIN}:${PASSWORD}@${HOST}/api/$1"
  if [ $? != 0 ]
  then
    echo "CURL API call error!"
    cat .download
    rm -f .download
    echo
    exit $?
  fi
  mv .download "$2"
}

if [ "$1" = "daily" ]
then
  api download "daily_$(date +'%Y-%m-%d').sqlite"

  # Ne garder que 15 jours de sauvegardes quotidiennes
  ls -1 daily_*.sqlite | sort -r | tail -n +15 | xargs rm > /dev/null 2>&1
elif [ "$1" = "weekly" ]
then
  # Sauvegarder la base de données
  api download "weekly_$(date +'%Y_W%U').sqlite"

  # Sauvegarder les fichiers
  api "download/files" "files_weekly_$(date +'%Y_W%U').zip"

  # Ne garder que 6 mois de sauvegardes hebdomadaires (25)
  ls -1 weekly_*.sqlite | sort -r | tail -n +25 | xargs rm > /dev/null 2>&1

  # Ne garder que 4 semaines de sauvegardes hebdomadaires des fichiers
  ls -1 files_weekly_*.zip | sort -r | tail -n +4 | xargs rm > /dev/null 2>&1
else
  echo "Unknown command. Usage: $0 [daily|weekly]"
  exit 1
fi

N'oubliez pas de modifier les variables LOGIN, PASSWORD selon l'identifiant et le mot de passe créé, et HOST selon le nom de domaine ou sous-domaine de votre instance Paheko.

Lancez le script pour tester ensuite en exécutant les commandes suivantes :

cd ~/paheko_backup
chmod +x backup.sh
./backup.sh daily
./backup.sh weekly

Vous devriez maintenant avoir 2 fichiers dans le répertoire, un pour la sauvegarde quotidienne, l'autre pour la sauvegarde hebdomadaire.

Si tout fonctionne, vous pouvez maintenant mettre en place l'exécution du script en éditant votre crontab avec la commande EDITOR=nano crontab -e. Sur une ligne vide à la fin du fichier, après toutes les lignes existantes rajoutez les lignes suivantes :

@daily cd ~/paheko_backup && ./backup.sh daily
@weekly cd ~/paheko_backup && ./backup.sh weekly

Ce script gardera :

  • jusqu'à 15 sauvegardes quotidiennes de la base de données
  • jusqu'à 25 sauvegardes hebdomadaires de la base de données
  • jusqu'à 4 sauvegardes hebdomadaires des fichiers (attention : cette sauvegarde peut se révéler assez lourde si vous avez beaucoup de fichiers)

N'hésitez pas à adapter le script à vos besoins :)

Synchronisation bi-directionnelle automatique des fichiers

Il est également possible de mettre en place une synchronisation bi-directionnelle des fichiers.

Cela peut être utile si vous avez un ordinateur dans votre local associatif (bureau, atelier, etc.) et que vous désirez que les fichiers modifiés sur l'ordinateur soient automatiquement ajoutés à vos documents dans Paheko, et inversement.

Faites une sauvegarde de la base de données et des fichiers avant de commencer.

Attention : la synchronisation bi-directionnelle ne remplace pas des sauvegardes !

Configuration de rclone

Pour cela il vous faudra le logiciel rclone en version 1.58 ou supérieure, en l'installant par exemple avec la commande sudo apt install rclone.

Commencez par créer un identifiant d'accès à l'API, mais cette fois-ci avec l'autorisation de tout faire. Notez l'identifiant et le mot de passe.

Ouvrez un terminal et lancez la commande rclone config.

No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> 

Répondez n puis appuyez sur la touche Entrée.

Enter name for new remote.
name> 

Indiquez ici un nom, par exemple Mon_asso

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ (fichier)
(...)
42 / WebDAV
   \ (webdav)
43 / Yandex Disk
   \ (yandex)
44 / Zoho
   \ (zoho)
45 / premiumize.me
   \ (premiumizeme)
46 / seafile
   \ (seafile)
Storage>

Indiquez ici webdav

Option url.
URL of http host to connect to.
E.g. https://example.com.
Enter a value.
url>

Indiquez ici https://adresse_de_votre_paheko/dav/

Option vendor.
Name of the WebDAV site/service/software you are using.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
 1 / Nextcloud
   \ (nextcloud)
 2 / Owncloud
   \ (owncloud)
 3 / Sharepoint Online, authenticated by Microsoft account
   \ (sharepoint)
 4 / Sharepoint with NTLM authentication, usually self-hosted or on-premises
   \ (sharepoint-ntlm)
 5 / Other site/service or software
   \ (other)
vendor> 

Indiquez ici nextcloud

Option user.
User name.
In case NTLM authentication is used, the username should be in the format 'Domain\User'.
Enter a value. Press Enter to leave empty.
user> 

Indiquez ici l'identifiant API créé au début.

Option pass.
Password.
Choose an alternative below. Press Enter for the default (n).
y) Yes, type in my own password
g) Generate random password
n) No, leave this optional password blank (default)
y/g/n> 

Tapez y.

Enter the password:
password:

Tapez le mot de passe de l'accès API créé au début, puis confirmez.

Option bearer_token.
Bearer token instead of user/pass (e.g. a Macaroon).
Enter a value. Press Enter to leave empty.
bearer_token> 

Laissez vide, tapez Entrée.

Edit advanced config?
y) Yes
n) No (default)
y/n> 

Tapez n.

Configuration complete.
Options:
- type: webdav
- url: https://monasso.paheko.cloud/dav/
- vendor: nextcloud
- user: abcd
- pass: *** ENCRYPTED ***
Keep this "Asso" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> 

Tapez y. Puis quittez en tapant q.

Test de la synchronisation

Dans un terminal lancez :

rclone -v copy Mon_asso: ~/paheko_fichiers/ --exclude trash

Rclone va ensuite copier tous les fichiers dans le répertoire paheko_fichiers. Cela peut prendre un peu de temps.

Il faut maintenant synchroniser les deux répertoires ensemble avec la commande rclone bisync --resync. Cela n'est à faire que la première fois. Lancez la commande suivante qui ne fait que simuler la resynchronisation :

rclone -v bisync ~/paheko_fichiers/ Mon_asso:/ --exclude /trash --size-only --resync --dry-run

Vérifiez que la commande ne va pas supprimer ou écraser de fichiers. Ensuite relancez la commande sans --dry-run pour effectuer la synchro :

rclone -v bisync ~/paheko_fichiers/ Mon_asso:/ --exclude /trash --size-only --resync

Quand tout est terminé et que ça fonctionne, vous pouvez créer un fichier texte dans le répertoire paheko_fichiers/documents/, et un autre (avec un autre nom) dans les documents de Paheko.

Puis lancez la commande suivante :

rclone -v bisync ~/paheko_fichiers/ Mon_asso:/ --exclude /trash --size-only

Si tout va bien, les deux fichiers devraient maintenant apparaître sur votre ordinateur et dans les documents de Paheko.

Mise en place d'une synchronisation

Nous allons mettre en place une synchronisation "bête" qui ne va lancer la synchro qu'une fois toutes les heures. Cela veut dire que les modifications ne seront pas prises en compte immédiatement.

Pour cela créons une tâche cron en lançant la commande EDITOR=nano crontab -e, et à la fin du fichier présenté, sur une nouvelle ligne vide ajouter celle-ci :

@hourly rclone -v bisync ~/paheko_fichiers/ Mon_asso:/ --exclude /trash --size-only >> ~/.rclone_sync.log 2>&1

Pour quelque chose de plus intelligent, qui réagit dès qu'un fichier est modifié, voir par exemple cet article de blog (en anglais) : Continuous immediate file sync with Rclone.

Alternativement, il est aussi possible d'utiliser l'application NextCloud ou ownCloud de bureau, ou en ligne de commande.

Aller plus loin

Mis à jour le vendredi 16 février 2024

Vous n'avez pas trouvé réponse à vos questions ?

N'hésitez pas à chercher ou poster dans le forum d'entraide :-)