Simple script de backup

Pour préserver vos fichiers et les sauvegarder périodiquement, le mieux est d'utiliser un outil d'archivage avec votre propre liste de répertoires à sauver, pour éviter de taper les mêmes commandes continuellement.

SEB (Simple and Efficient Backup) est un script écrit en Scriptol/PHP qui automatise la sauvegarde fréquente de vos données.

Comment fonctionne le script

Pour l'essentiel, ce qu'il faut ajouter à l'archiveur:

  1. Un tableau contenant la liste des fichiers ou des répertoires à sauvegarder régulièrement.
  2. Le nom de l'archive, construit automatiquement en fonction de la date et l'heure.
  3. Une commande avec les options de 7-Zip ou PKZip.

Le programme inclut alors le code suivant...

Un tableau contenant une liste de fichiers ou répertoires.

array saving = [
....noms séparés par une virgule
]

PKZip seulement: Dans le cas d'un répertoire, on fait suivre le slash d'une astérisque. Exemple:

w:/scriptol.com/     // pour 7-zip
mais
w:/scriptol.com/*     // pour pkzip
Création automatique du nom de l'archive avec dans l'ordre: année, mois, jour, heure, minute.
Ce nom de fichier sera concaténé avec le nom de l'unité et éventuellement du répertoire de destination et passés en ligne de commande.
text newdir = "backup-" + Date("Y-M-d-H-i") 

Construction de la commande pour l'archiveur.

 text command = "7z a -tzip $target "
for text t in saving
command + t + " "
/for

Exécution de la commande:

exec(command)  

La structure des répertoires et fichiers sera conservée dans l'archive.

Utilisation du programme

Extraire le contenu de l'archive à la racine du disque. Le script sera accessible en ligne de commande dans le répertoire /seb/.

Placer 7z.exe et 7z.dll dans un répertoire pris en compte par la variable PATH, ce qui permet de lancer ces programmes depuis n'importe quel répertoire.

Il faut d'abord éditer le code du script, soit dans le source seb.sol, dans en php dans seb.php afin de donner la liste des fichiers et répertoire à sauvegarder.

Pour cela on modifie le contenu du tableau saving comme indiqué plus haut.

array saving = [ votre liste de répertoire séparés par une virgule ]

Choisissez votre fuseau horaire, et assignez le à la fonction suivante:

date_default_timezone_set("US/Central") 

La liste des fuseau horaires est dans le manuel PHP. Remplacez US/Central par celui de votre ville.

Puis on peut exécuter le script. On indique un disque ou répertoire de destination.

Exemple de commande en Scriptol:

solp seb d:

Exemple de commande en PHP:

php seb.php d:/temp/

Si /temp n'existe pas sur le lecteur d il sera créé.

Récupérer une sauvegarde

Il arrivera peut-être un jour où vous perdrez accidentellement, ou à cause d'un virus, tout ou partie de vos données.

Vous pouvez alors reconstruire la structure des répertoires avec les fichiers contenus, par la commande:

7z e nomarchive.zip   

Si vous voulez récupérer juste un fichier ou un répertoire, vous pouvez utiliser un gestionnaire d'archives pour sélectionner les fichiers, et la destination, à travers une interface graphique.

Avec Windows 7 il est possible d'ouvrir une archive zip comme un dossier et de déplacer un répertoire ou fichier vers un répertoire du système de fichier.
Noter qu'on peut aussi créer un "dossier compressé", qui est en fait une archive zip, et y déplacer des fichiers et répertoires.

Télécharger l'archive de SEB

Ce script est gratuit et sous licence MIT.

Dans une deuxième partie nous allons voir comment réaliser un backup incrémental en mettant à jour un même fichier avec un archiveur.