Skip to content

Vredeza/sauvegardeur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sauvegardeur

Une application de sauvegarde externalisée.

Contexte

L’objectif est de réaliser une application de sauvegarde externalisée, qui va faciliter la vie à l’utilisateur.

Il s’agit d’une application client-serveur en réseau, qui doit satisfaire aux règles suivantes :

  • L’utilisateur choisi le nom du dossier à partir duquel il veut faire la sauvegarde, il entre l’adresse IP du serveur et la sauvegarde démarre.
  • L’application cliente ne sauvegarde pas tous les fichiers du dossier, mais seulement ceux dont les propriétés (suffixes) sont décrites dans un fichier de paramètres, prédéfini. L’application, sauvegarde toute l’arborescence depuis le nom de dossier indiqué.

Utilisation

Déploiement du serveur

Le serveur est prêt à être déployé avec docker compose. Pour cela, peut entrer la commande suivante :

docker compose up -d

Il est évidemment possible de choisir un autre port pour l'hôte, remplacez selon vos besoins.

Le serveur propose une API web permettant la sauvegarde, la restauration et la visualisation des fichiers. On peut interagir avec cette API par les extrémités :

  • GET /saves : renvoie un objet contenant l'ensemble des sauvegardes, avec leur id, leur date de création et leur poids. Exemple :
{
  "directories": [
    {
      "creation_time": "2023-12-19 14:29:00",
      "id": "057eef78-2bd9-4504-a97f-bed9ef0e1d51",
      "size": 244
    },
    {
      "creation_time": "2023-12-20 16:43:31",
      "id": "343aa71d-2611-405a-afce-198ffaa14f82",
      "size": 271
    }
  ]
}
  • GET /save/<id> : Renvoie une version empaquetée en .zip de la sauvegarde d'identifiant <id>.
  • GET /save/<id>/tree : Renvoie l'arborescence de la sauvegarde d'identifiant <id>. Par exemple :
|___ folder1
    |___ yes.txt
    |___ folder11
        |___ yes.jar
|___ folder2
    |___ yes.java
|___ yes.java
  • POST /upload : Avec un fichier .zip dans le corps de la requête, demande au serveur de sauvegarder la structure.

Utilisation du client

Le client s'utilise comme une interface en ligne de commandes exécutée depuis python :

python3 client.py

On peut aussi utiliser le gestionnaire de paquets pip afin d'installer l'application. Le script build.sh s'en occupe.

Ce client propose différentes options. Pour chacune d'entre elles, on peut préciser l'adresse et le numéro de port du serveur; par défaut, on considère qu'on envoie au serveur localhost:443. De la mème manière, le -h ou --help donnera des indications sur l'utilisation de l'option.

save

Envoie un dossier au serveur pour le sauvegarder.

Utilisation :

sauvegardeur save [-e FICHIER] [-s ADRESSE] [-p PORT] dossier

Avec :

  • FICHIER : le fichier contenant les extensions de fichier à sauvegarder (exemple dans ce fichier). S'il n'est pas renseigné, envoie tous les fichiers au serveur.
  • dossier : le dossier à sauvegarder

ls

Liste les sauvegardes disponibles.

Utilisation :

sauvegardeur ls [-s ADRESSE] [-p PORT]

On aura un retour comme :

ls

tree

Affiche l'arborescence d'une sauvegarde donnée.

Utilisation :

sauvegardeur tree [-s ADRESSE] [-p PORT] id

Avec :

  • id : l'identifiant, ou les premiers caractères de l'identifiant de la sauvegarde.

On aura un retour comme :

tree

restore

Restaure la sauvegarde donnée.

Utilisation :

sauvegardeur restore -d DESTINATION [-s ADRESSE] [-p PORT] id

Avec :

  • DESTINATION : le dossier de destination pour la restauration de la sauvegarde.
  • id : l'identifiant, ou les premiers caractères de l'identifiant de la sauvegarde.

About

Une application de sauvegarde externalisée.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages