[Tuto/HowTo] [GNU/Linux] Sauvegarder les fichiers joints de phpBB3 sur le cloud (nextcloud / owncloud) via rsync

User avatar
voxdemonix
Posts: 834
Joined: Mon Feb 02, 2015 7:28 pm

[Tuto/HowTo] [GNU/Linux] Sauvegarder les fichiers joints de phpBB3 sur le cloud (nextcloud / owncloud) via rsync

Postby voxdemonix » Wed Jan 11, 2017 3:04 am

musique d'entrain : Zanski - Lead Fever
Testé sur : Raspbian Jessie, Xubuntu 16.04

Introduction
    Pour protéger le forum phpBB3 d'une perte de données (en cas par exemple de mise à jours foirée), il faut maintenir une ou plusieurs copies de la base de données, des fichiers joints et, si vous avez personnalisé votre thème, de vos fichiers styles.
    Côté client on va donc utiliser rsync pour sauvegarder les fichiers joints de phpBB (dossier /files/) sur un serveur cloud (nextcloud / owncloud) avec un utilisateur dédié.
    Rien ne vous empêche de reproduire cette solution pour d'autres dossier voir pour tout votre forum si vous le souhaitez.
    Vous vous demanderez sans doute "pourquoi ne pas directement le faire avec le client owncloud en ligne de commande" et la réponse tient en une phrase : il est buggé. (voir ce tuto non fonctionnel)


Farm Link

Mise en place
Sur votre serveur cloud (nextcloud / owncloud)
  1. Créez un utilisateur dédié avec des droits restreints
  2. Connectez-vous à cet utilisateur et créé un dossier dédié à votre synchronisation (par exemple : phpBB_fichiers_joints)
Sur votre client (le serveur où est hébergé votre forum phpBB)
  1. Effectuez un montage WEBDAV/DAVFS2, ici le point de montage sera /media/montageDistant
  2. Créez le fichier /opt/scripts/synchroCloud.sh

      Code: Select all

      sudo nano /opt/scripts/synchroCloud.sh
  3. Insérez le code suivant en l'adaptant à votre config

      Code: Select all

      #!/bin/bash
      # Licence WTFPL - infos : https://www.0rion.netlib.re/forum4/viewtopic.php?f=71&t=496#p1081
      # synchronisation des fichiers joints d'un ou plusieurs forum phpBB sur le cloud

      montageLocal="/media/montageDistant" #le point de montage locale
      dossierDistant="/phpBB_fichiers_joints/" #le dossier destination
      monDossier="/var/www/html/forum/files/" #le dossier source
      userPourCopie="root" #l'utilisateur a utiliser pour la copie

      if [ ! "$SUDO_USER" ]; then
      echo "this script need to be lunch by root"
      exit 0
      fi

         #VERIFICATION DU MONTAGE
      startTime=`date +%s`
      if [ -d "$montageLocal$dossierDistant" ];then
         endTime=`date +%s`
         runTime=$((endTime-startTime))
         if [ "$runTime" -lt "600" ];then
         #ACTION
                 sudo chown www-data:$userPourCopie -R $monDossier & sudo chmod 770 -R $monDossier
                    #sauvegarde des fichiers locaux vers cloud
                 su $userPourCopie -c "rsync $monDossier $montageLocal$dossierDistant -r"
                    #restauration des fichiers depuis le cloud vers local
                    #commentez la ligne suivante si vous ne voulez pas de restauration automatique
                 su $userPourCopie -c "rsync $montageLocal$dossierDistant $monDossier -r"
                    #on reverrouille l'accès au dossier
                 sudo chown www-data:root -R $monDossier & sudo chmod 770 -R $monDossier
         else
         echo "$montageLocal => not responding (408) / delais d'attente depasse"
         fi
      else
      echo "$montageLocal$dossierDistant => not exist"
      fi

        montageLocal="/media/montageDistant" : le point de montage
        dossierDistant="/phpBB_fichiers_joints/" : le dossier destination
        monDossier="/var/www/html/forum/files/" : le dossier source
        userPourCopie="root" : l’utilisateur a utiliser pour la copie
      Note : le script a un soucis d'héritage des variables quand on veut utiliser un utilisateur système dédié (les variables sont créées par root et inaccessible aux autres users)
  4. Accordez les bonnes permissions au script

      Code: Select all

      sudo chown root:root /opt/scripts/synchroCloud.sh
      sudo chmod 755 /opt/scripts/synchroCloud.sh
  5. Ajoutez votre script au cron (tâches planifiées) de votre machine
  6. Insérez la ligne suivante en l'adaptant éventuellement

      Code: Select all

      3 0 * * * /opt/scripts/lunchOwncloud.sh

      Avec cette commande la tâche sera exécutée une fois par jours a minuit et trois minutes.
      Si vous préférez le lancer toutes les heures à la troisième minute, utilisez le cron suivant : 3 * * * *
~ Infernalis Creatorem ~
    Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Return to “CMS & Kit”

Who is online

Users browsing this forum: No registered users and 1 guest