une "archive" d'un site ?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

bonjour,

j'aimerai savoir si il est possible de créer une "archive" de mon site web sous drupal. Je m'explique: le site a été construit pour un évenement fin 2005. Cet évenement fini, il se reproduira cette année, le site servira comme l'année dernière de base d'information, mais j'aimerai sauvegarder quelque part (en ligne et accessible) tous les documents de l'année dernière, et remttre en place "un nouveau" site, de la meme forme que le precedent (en utilisant le squelette deja existant afin de pouvoir y mettre les nouveaux documents). Je vous laisse mon site pour vous faire une idée:
http://octobreverre.free.fr

Merci d'avance.

Pour archiver un site, il faut archiver la base de données SQL ainsi que les fichiers constituant le site.

Avec MySQL, il s'agit d'utiliser mysql_dump, et pour le site, un simple tar cfz dans le répertoire qui contient le répertoire du site devrait faire l'affaire.

Si le site est sous une routine régulière de sauvegarde (backup automatique), alors il n'y a pas grand chose à faire, les archives se construisent automatiquement et continuellement (selon la routine de backup).

Voici ma routine de backup (/etc/cron.daily/mysql_dump). Cette routine sauvegarde la base de donnée MySQL sur une base régulière. Le backup de chaque mois est conservé indéfiniment, et les backups journaliers sont réécrits à chaque semaine:

# Backup script for mysql database
COMPUTER=tux
BACKUPDIR=/root/mysql_dump
TIMEDIR=/root/mysql_dump/last_dump
DUMP=/usr/bin/mysqldump
SESAME=mot_de_passe
WHO=nom_d_usager_mysql
DB="--opt --all-databases"

if [ ! -d $BACKUPDIR ]; then
  mkdir $BACKUPDIR
fi

if [ ! -d $TIMEDIR ]; then
  mkdir $TIMEDIR
fi

# you shouldn't have to change anything below

DOW=date +%a                          # Day of the week e.g. Mon
DOM=date +%d                          # Date of the Month e.g. 27
DM=date +%d%b%Y               # Date,Month,Year e.g. 27Sep2003

NOW=date +%d-%b

# Monthly dump is kept
if [ $DOM = "01" ]; then
   #echo Monthly backup
   echo $NOW >$TIMEDIR/$COMPUTER-monthly
   #echo $DUMP $DB -u $WHO -p$SESAME '|' bzip2 -c >'$BACKUPDIR/$COMPUTER-$DM.mysqldump.bz2
   $DUMP $DB -u $WHO -p$SESAME | /bin/bzip2 -c >$BACKUPDIR/$COMPUTER-$DM.mysqldump.bz2
fi

# Daily backups are kept for one week then filenames are reused
if [ $DOW = "Sun" ]; then
   #echo Daily Sunday backup
   echo $NOW >$TIMEDIR/$COMPUTER-weekly
   #echo $DUMP $DB -u $WHO -p$SESAME '|' bzip2 -c '>'$BACKUPDIR/$COMPUTER-$DOW.mysqldump.bz2
   $DUMP $DB -u $WHO -p$SESAME | bzip2 -c >$BACKUPDIR/$COMPUTER-$DOW.mysqldump.bz2
else
   #echo Daily backup
   echo $NOW >$TIMEDIR/$COMPUTER-daily
   #echo $DUMP $DB -u $WHO -p$SESAME '|' bzip2 -c '>'$BACKUPDIR/$COMPUTER-$DOW.mysqldump.bz2
   $DUMP $DB -u $WHO -p$SESAME | bzip2 -c >$BACKUPDIR/$COMPUTER-$DOW.mysqldump.bz2
fi

Pour faire un backup du site, j'utilise rsync. Dans mon cas, j'ai deux ordinateurs. Le serveur du site (ordi A) et un maitre backup (ordi B). Le serveur du site contient donc aussi un serveur rsync (rsyncd). Le maitre backup (ordi B) s'adresse au serveur rsync (ordi A) pour obtenir une copie intégrale du site sur une base régulière.

Sur le serveur du site, ordi A, j'ai le serveur rsync suivant:

# /etc/rsyncd.conf
# $Header: /var/cvsroot/gentoo-x86/net-misc/rsync/files/rsyncd.conf,v 1.6 2005/03/24 03:1
2:45 vapier Exp $

# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help

# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help

uid = root
gid = root
use chroot = yes
hosts allow = 192.168.0.2/255.255.255.0
hosts deny = *

max connections = 5

log file = /var/log/rsync.log

# This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid

[drupalfr]
   path = /home/drupalfr
   comment = web
   list = yes
   read only = yes
   auth users = usager_autorise
   secrets file = /etc/rsync/rsyncd.secrets

[mysql]
   path = /root/mysql_dump
   comment = MySQL Dumps
   list = yes
   read only = yes
   auth users = usager_autorise
   secrets file = /etc/rsync/rsyncd.secrets

L'adresse 192.168.0.2 correspond à l'adresse IP du maitre backup. Seul le maitre backup est autorisé à communiquer avec le serveur rsyncd.

Le fichier rsyncd.secrets sur le serveur du site (ordi A) contient:

usager_autorise:mot_de_passe

Sur le maitre backup, ordi B, j'ai le cron job suivant:

# /etc/cron.hourly/rsync_tux.cron
#!/bin/sh
PASSFILE=/etc/cron.hourly/rsync.password
OPTIONS='-azq --recursive'
RSYNC=/usr/bin/rsync

$RSYNC $OPTIONS --password-file=$PASSFILE usager_autorise@tux::mysql /backup/tux/mysql

$RSYNC $OPTIONS --password-file=$PASSFILE usager_autorise@tux::drupalfr /home/drupalfr

date >/backup/tux/LATEST_BACKUP_DATE

Où usager_autorise est le même usager que dans rsyncd.secrets.

Finalement, toujours sur le maitre backup (ordi B), le fichier
identifié dans par PASSFILE=/etc/cron.hourly/rsync.password contient:

mot_de_passe

qui est le même mot de passe quand dans rsyncd.secrets.

merci beaucoup pour cette réponse détaillée. Je vais essayé votre facon avec vos scipts, c'est pas trop évident mais on va bien voir, encore merci ! ca servira à plein d'autres personnes qui sont dans mon cas !