# SelBackup Selbackup permet d'uploader facilement des fichiers sur un serveur Amazon S3. Selbackup permet également d'avoir un backup d'un même fichier sur une durée personnalisable, sans surcharger le serveur. ## Installation Installation ``` gem install specific_install gem specific_install -l https://github.com/Selectra-Dev/selbackup.git ``` votre_fichier.rb ``` require 'selbackup' ``` ## Utilisation ``` selbackup = SelBackup.new('key', 'secret', 'bucket', 'region') selbackup.upload_file(VotreFichier, nb_jour, nb_semaine, nb_mois) ``` Key, secret et bucket sont vos identifiants de connection à votre server Amazon S3. nb_jour, nb_semaine et nb_mois permet de choisir le nombre de fichier quotidiens, hebdomadaires et mensuels à garder. Ces paramètres sont optionnels et fixés respectivement à 7, 4 et 3 par défaut. ## Backup Rotation System Il vous est possible d'uploader de nombreux type de fichiers, la syntaxe de nommage de fichier recommandée étant: `AAAA-MM-JJ-nom_du_fichier.extension` Il est cependant possible de ne pas renseigner de date (la date du jour sera automatiquement rajoutée), ou d'extension. A noter que si le fichier à uploader ne contient qu'une date (par exemple, '2013-01-01' ou '2013-01-01.tgz'), une erreur sera retournée et l'upload n'aura pas lieu. SelBackup doit être utilisé chaque jour pour une efficacité optimale. Il garde 'nb_jours' versions quotidiennes, 'nb_semaine' versions hebdomadaires et 'nb_mois' versions mensuelles d'un même fichier Ainsi, la rotation des fichiers se fait de cette manière: - Chaque jour, un fichier est upload - Chaque jour, la plus ancienne version quotidienne est supprimée s'il y a plus de nb_jours fichiers quotidiens - Chaque semaine, la plus ancienne version quotidienne devient une version hebdomadaire - Chaque semaine, la plus ancienne version hebdomadaire est est supprimée s'il y a plus de nb_semaine fichiers hebdomadaires. - Chaque mois, la plus ancienne version hebdomadaire devient une version mensuelle - Chaque mois, la plus ancienne version mensuelle est supprimée s'il y a plus de nb_mois fichiers mensuels. Avec les paramètres par défaut, pour un fichier "file1.tgz", l'arborescence de votre serveur S3 ressemblera donc à: ``` bucket/ file1.tgz/ 2013-01-01-monthly-file1.tgz # 3 dernières versions mensuelles 2013-02-01-monthly-file1.tgz 2013-03-01-monthly-file1.tgz 2013-03-08-weekly-file1.tgz # 4 dernières versions hebdomadaires 2013-03-15-weekly-file1.tgz 2013-03-22-weekly-file1.tgz 2013-03-29-weekly-file1.tgz 2013-04-05-daily-file1.tgz # 7 dernières versions journalières 2013-04-06-daily-file1.tgz 2013-04-07-daily-file1.tgz 2013-04-08-daily-file1.tgz 2013-04-09-daily-file1.tgz file2.tgz/ [...] [...] ``` ## Auteur Simon Ninon pour Selectra SARL aka [Cylix](https://github.com/Cylix) ## License Nous utilisons la [Licence WTF](LICENSE) ## Contribuer 1. Forkez 2. Créez votre branche (`git checkout -b ma-branche`) 3. Commit vos changements (`git commit -am 'Nouvelles features'`) 4. Push (`git push origin ma-branche`) 5. Faîtes une `Pull request`