|
|
|
|
Bonjour a tous,
J'aimerais realisé un petit script qui versionne mes fichiers tous les jours a la meme heure et qui ne gardent que 3 increments.
J'utilise rdiff-backup qui generent donc des increments de cette forme:
mon_fichier.son_extension.2009-04-15T16 : 05 : 15+02.00.diff.gz
Au debut j'avais fais un script qui supprimait les versions vieilles de plus de 3 jours (vu que le versionning se passe tous les jours a la même heure) juste après les synchros.le problème c est que si je ne modifie pas un fichier au bout de 4 jours tous ses incréments ont disparus.Alors que j'aimerai garder les "3 plus jeunes versions"
Et la du coup...je lag...
Je pensais faire un enorme fichier texte qui a tous les noms de fichiers (nom de fichier + path) .Ensuite je calcule le nombre d'occurence du noms de fichier (donc regex pour virer ".2009-04-15T16 : 05 : 15+02.00.diff.gz")et des que le nombre d'occurence est > 4 je recupere le nom du fichier,et je supprime le plus vieux...
Sa me parait un peu lourd nan?
merci a tous
Configuration: Linux Ubuntu Firefox 3.0.8
Ok par exemple:
|
Le répertoire contenant les archives.
[tmpfs]$ ls -1v rep/ test_1.txt.2009-04-02T09 : 00 : 00+02.00.diff.gz test_1.txt.2009-04-04T09 : 00 : 00+02.00.diff.gz test_1.txt.2009-04-12T09 : 00 : 00+02.00.diff.gz test_1.txt.2009-04-14T09 : 00 : 00+02.00.diff.gz test_1.txt.2009-04-15T09 : 00 : 00+02.00.diff.gz test_2.txt.2009-03-12T09 : 00 : 00+02.00.diff.gz test_2.txt.2009-03-28T09 : 00 : 00+02.00.diff.gz test_2.txt.2009-04-01T09 : 00 : 00+02.00.diff.gz test_2.txt.2009-04-15T09 : 00 : 00+02.00.diff.gz test_3.txt.2009-03-05T09 : 00 : 00+02.00.diff.gz test_3.txt.2009-03-16T09 : 00 : 00+02.00.diff.gz test_3.txt.2009-03-29T09 : 00 : 00+02.00.diff.gz test_3.txt.2009-04-08T09 : 00 : 00+02.00.diff.gz test_3.txt.2009-04-22T09 : 00 : 00+02.00.diff.gz Le script. J'ai préféré ne pas exécuter la commande "rm" directement, mais envoyer l'echo de ce qui devrait être fait, donc enlever les echo si tout va bien... [tmpfs]$ cat foo.sh
#! /bin/sh
#set -xv
# On récupère le nom des fichiers dont le nombre d'occurrences > 3
ls -1 rep/ | awk -F'-' '{ print $1 }' | uniq -c | awk '{ if ( $1 > 3 ) { print $2 }}' > recup.txt
# On récupère les fichiers les plus anciens pour chaque occurence
while read line
do
ls -1 rep/ | grep "${line}" | sort -t'.' -k 3.6r | sed -n '4,$p' >> final.txt
done < recup.txt
# On supprime les fichiers les plus anciens
while read line
do
echo "rm -f rep/\"${line}\""
done < final.txt
# On supprime les 2 fichiers temporaires
echo "rm -f final.txt recup.txt"
Le résultat : [tmpfs]$ ./foo.sh rm -f rep/"test_1.txt.2009-04-04T09 : 00 : 00+02.00.diff.gz" rm -f rep/"test_1.txt.2009-04-02T09 : 00 : 00+02.00.diff.gz" rm -f rep/"test_2.txt.2009-03-12T09 : 00 : 00+02.00.diff.gz" rm -f rep/"test_3.txt.2009-03-16T09 : 00 : 00+02.00.diff.gz" rm -f rep/"test_3.txt.2009-03-05T09 : 00 : 00+02.00.diff.gz" rm -f final.txt recup.txt [tmpfs]$ --C'est loin d'être optimisé je pense, sûrement qu'il y a mieux à faire... ;-)) $ man woman Il n'y a pas de page de manuel pour woman.
|