Puppy Linux Discussion Forum Forum Index Puppy Linux Discussion Forum
Puppy HOME page : puppylinux.com
"THE" alternative forum : puppylinux.info
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

The time now is Fri 15 Dec 2017, 21:57
All times are UTC - 4
 Forum index » House Training » Users ( For the regulars ) » Pour les francophones
Faire 2 archives en vitesse, horodatées, de son pupsave
Moderators: Béèm, darkerror05
Post new topic   Reply to topic View previous topic :: View next topic
Page 1 of 1 [13 Posts]  
Author Message
musher0


Joined: 04 Jan 2009
Posts: 11277
Location: Gatineau (Qc), Canada

PostPosted: Sat 28 Oct 2017, 04:51    Post subject:  Faire 2 archives en vitesse, horodatées, de son pupsave  

Bonjour !

Colmme le titre l'indique.
Code:
#!/bin/sh
# ./2archives-en-vitesse.sh
# Objectif : créer rapidement deux sauvegardes
# datées de son pupsave, l'une en lz4, l'autre en zip.
#
# Usage : Ouvrir une console dans le répertoire
# de son Toutou | Puppy et taper :
# ./2sauvegardes.sh < NomDuPupsave.?fs > (? peut être 2, 3 ou 4.)
#
# Exemple : ./2sauvegardes.sh xenialsave-arf.2fs
#
# Requis : lz4. Zip est déjà dans Toutou | Puppy.
####
Z="$1";Dat="`date +'%F_%Hh%M'`"
#
lz4 -2f $Z;mv -f $Z.lz4 "$Z-$Dat.lz4"
#
zip -2u -dd $Z.zip $Z 2>/dev/null
mv -f $Z.zip "$Z-$Dat.zip"

Le lz4 requis est joint.

Pour se servir du script ci-dessus,
-- on fait un copier-coller
-- qu'on enregistre
-- dans le répertoire de son Puppy
-- sous le nom de fichier < 2archives-en-vitesse.sh >, et
-- on le rend exécutable.

On s'en sert en tapant en console, par exemple :
Quote:
./2archives-en-vitesse.sh xenialsave-arf.2fs

(Nom du script corrigé 17-12-06. Merci à Dorothée de m'avoir tapé sur les doigts.)

C'est rapide parce que la compression n'est pas forte: libre à vous de changer
les paramètres < -2 > ci-dessus à un paramètre < -9 >.

C'est utile parce que, le nom des archives étant horodaté, les nouvelles archives
n'écrasent pas les anciennes. On peut composer un script "cron" pour automatiser
la procédure toutes les 2 ou 3 heures. Ainsi, s'il arrive un incident fâcheux, on peut
remettre le Puppy sur pattes en un rien de temps en remettant en service le
pupsave contenu dans la dernière archive. Avec un peu de chance on n'aura pas
perdu grand'chose. Sinon, on élague le lendemain les sauvegardes de la veille.

On crée deux archives, parce qu'on ne fait jamais assez de sauvegardes
généralement, et au cas où une des archives se serait corrompue, on a l'autre,
quand un pépin arrive.

J'espère que cela vous sera utile, au moins pour susciter une réflexion sur les
sauvegardes systématiques.

ALP.
lz4-r131_exec.pet
Description 
pet

 Download 
Filename  lz4-r131_exec.pet 
Filesize  124.54 KB 
Downloaded  13 Time(s) 

_________________
musher0
~~~~~~~~~~
"Logical entities must not be multiplied beyond necessity." | |
« Il ne faut pas multiplier les entités logiques sans nécessité. » (Ockham)

Last edited by musher0 on Wed 06 Dec 2017, 15:14; edited 2 times in total
Back to top
View user's profile Send private message 
musher0


Joined: 04 Jan 2009
Posts: 11277
Location: Gatineau (Qc), Canada

PostPosted: Mon 30 Oct 2017, 18:39    Post subject:  

Rebonjour.

De bonnes archives de sauvegarde m'ont plus d'une fois sauvé l'échine...
C'est pourquoi je me permets d'insister.

Je vous reviens ici avec un petit automate pour faire des sauvegardes en tous
points comme détaillé ci-dessus, mais avec lzop et zip au lieu de lz4 et zip.

Pour une raison que j'ignore, lz4 ne se prêtait pas bien à une automatisation.
Dans mes essais, l'archive lz4 se créait bel et bien au démarrage du Puppy, mais
elle allait se flanquer dans xerrs.log !!! Misère et mystère...

Avec lzop, ce problème n'existe pas, et l'archive créée est à peine plus grosse.

Alors voici. Je pense avoir assez bien commenté les deux scripts qui suivent, alors
je ne me répéterai pas dans ce message. Veuillez lire les commentaires dans les
scripts, s.v.p.

Si vous avez des questions, vous n'avez qu'à revenir les poser ici ?

D'abord le script 2archives-en-vitesse.sh, deuxièmement le script
watch-2archives.sh. Puis je joins une archive pet du vrai lzop (car ceci ne
fonctionnera pas avec le lzop de busybox), et une archive pet prête à installer pour
les deux scripts.

À la bonne vôtre !

2archives-en-vitesse.sh
Code:
#!/bin/sh
# $MBINS/2archives-en-vitesse.sh # où MBINS="/opt/local/bin"
#
# Objectif : créer rapidement deux sauvegardes horodatées
# de son pupsave, l'une en lzop, l'autre en zip.
#
# Usage : Ouvrir une console dans le répertoire de
# son Toutou | Puppy et taper :
# 2sauvegardes.sh < NomDuPupsave.?fs >
# (? peut être 2, 3 ou 4; sans les chevrons !)
#
# Exemple : ./2archives-en-vitesse.sh xenialsave-arf.2fs
#
# Requis : le vrai lzop, et non pas celui de busybox.
# L'utilitaire zip est déjà dans Toutou | Puppy.

# NOTES IMPORTANTES
# 1) -- Si vous utilisez un des scripts compagnons
# /etc/init.d/start_watch-2archives.sh ou $MBINS/watch-2archives.sh,
# le paramètre de fichier est ajouté automatiquement : vous n'avez
# pas besoin de l'inscrire à la main.
#
# 2) --  Au dézippage, Attention de ne pas écraser le pupsave actif.
# Il est suggéré de taper < unzip -l $Z-$Dat.zip > avant, pour éviter les
# accidents. Bien que le nom de l'archive zip soit horodaté, le nom du
# fichier dedans cette archive ne l'est pas.
#
# De même pour le « dézoppage » de l'archive lzop.
#
# 3) -- On pourra aussi songer à stocker ces archives ailleurs, par
# exemple sur :
# Disq2e="`mount | awk '$1 ~ /sd/ { print $3 }' | head -n 2 | tail -1`"
# Je rédigerai ce code-là s'il y a une demande.
#
#
# © Christian L'Écuyer,Gatineau (Qc), Canada, 27-30 oct. 2017. GPL3
# (Alias musher0 [forum Puppy].) # https://opensource.org/licenses/GPL-3.0
#################
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#       This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
##########

Z="$1"
Dat="`date +'%F_%Hh%M'`"
# < %F_%Hh%M > parce que très facile à lire. :-)
lzop -2f -o$Z-$Dat.lzo $Z 2>/dev/null
zip -1 -u -dd $Z-$Dat.zip $Z 2>/dev/null


~~~~~~~~~~~~~~~~~~
watch-2archives.sh
Code:
#!/bin/sh
# $MBINS/watch-2archives.sh # Avec lien dans /root/Startup.
#
# Objectif :
# Fonctionnement automatique du script < 2archives-en-vitesse.sh >.
#
# NOTES
# 1) -- Le présent script se recycle chaque fois que vous retournez
# à la console initiale et revenez dans votre gestionnaire de fenêtres.
#
# 2) -- Une sauvegarde se fait 20 secondes après tout recyclage.
#
# 3) -- Il y a 20 sec. d'attente, pour permettre aux autres scripts dans
# ~/Startup de terminer leur mise en marche. En particulier, le script
# PSync ou équivalent (ntp-simple ou htpdate, par exemple) doit être
# bien « enclenché » pour que le présent script et le script
# < 2archives-en-vitesse.sh > fonctionnent bien.
#
# 4) -- Pour personaliser l'intervalle de temps entre les sauvegardes,
# taper, en console : echo un-nombre-quelconque > ~/interval
# Par exemple :       echo 9000 > ~/interval.
# Sinon, la sauvegarde se fera aux trois heures (ligne 54 ci-dessous).
#
# 5) -- Il est recommandé de faire un élagage de vos sauvegardes
# tous les deux jours. Selon l'intervalle que vous aurez défini, il peut
# y en avoir énormément, et s'il y a un incident, vous n'aurez besoin
# que d'une des dernières. Sinon, ces archives de sauvegarde finiront
# forcément par occuper trop de place sur votre disque rigide.
#
######
#
# © Christian L'Écuyer,Gatineau (Qc), Canada, 28-30 oct. 2017. GPL3
# (Alias musher0 [forum Puppy].) # https://opensource.org/licenses/GPL-3.0
#################
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#       This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#       You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
##########
sleep 20s
if [ -f /root/interval ];then
   Intervalle="`cat /root/interval`"
else
   # Intervalle=3600 secondes  # <=- 1 heure
   # Intervalle=5400 secondes  # <=- 1 heure et demie
   # Intervalle=7200 secondes  # <=- 2 heures
   # 3 heures, en secondes (ou 3 x 60 min. x 60 sec.)
   Intervalle=10800 # <=-
   # Intervalle=14400 secondes  # <=- 4 heures
   # Intervalle=18000 secondes  # <=- 5 heures
   # Intervalle=21600 secondes   # <=- 6 heures
fi

MBINS=/opt/local/bin
PHome="`awk -F"'" '$1 ~ /PUP_HOME/ {print $2}' /etc/rc.d/PUPSTATE`"
PHome="${PHome/dev_save/home}"
PDir="`awk -F"," '$1 ~ /PUPSAVE/ {print $NF}' /etc/rc.d/PUPSTATE | awk -F"/" '{print $2}'`"
PSave="`awk -F"," '$1 ~ /PUPSAVE/ {print $NF}' /etc/rc.d/PUPSTATE | awk -F"/" '{print $NF}' | awk -F"'" '{ print $1 }'`"

cd "$PHome/$PDir"
watch -n $Intervalle -t $MBINS/2archives-en-vitesse.sh $PSave
2archives-0.1.pet
Description  Cette archive-ci contient les deux scripts ci-dessus, prêts à l'emploi.
pet

 Download 
Filename  2archives-0.1.pet 
Filesize  2.67 KB 
Downloaded  9 Time(s) 
lzop-1.03-i386.pet
Description  Voici le « vrai » lzop, pas la comédie d'archiveur fournie par busybox...
pet

 Download 
Filename  lzop-1.03-i386.pet 
Filesize  53.07 KB 
Downloaded  11 Time(s) 
watch-2archive-en-vitesse.jpg
 Description   Le résultat est encerclé en rouge. J'ai élagué quelques sauvegardes, mais le résultat du fonctionnement de ces scripts devrait apparaître clairement.
 Filesize   126.49 KB
 Viewed   137 Time(s)

watch-2archive-en-vitesse.jpg


_________________
musher0
~~~~~~~~~~
"Logical entities must not be multiplied beyond necessity." | |
« Il ne faut pas multiplier les entités logiques sans nécessité. » (Ockham)

Last edited by musher0 on Sun 05 Nov 2017, 16:13; edited 1 time in total
Back to top
View user's profile Send private message 
Dorothée


Joined: 27 Nov 2012
Posts: 171

PostPosted: Thu 02 Nov 2017, 00:14    Post subject:  

Merci beaucoup. Cela peut être vraiment utile.

À bientôt.
Back to top
View user's profile Send private message 
Anaxagore

Joined: 04 Aug 2014
Posts: 48

PostPosted: Thu 02 Nov 2017, 01:20    Post subject:  

Bonjour, désolé si ma question est idiote, mais peut-on, avec ce script compresser le fichier de sauvegarde qu’on est en train d’utiliser (j’en ai plusieurs) ? Si j’ai bien compris les commentaires des scripts, on ne peut pas restaurer et utiliser "à chaud" (écraser), le fichier de sauvegarde qu’on est en train d’utiliser ? Est-ce correct ?

Une fois encore, désolé si mes questions sont naïves, mais autant j’utilise régulièrement Puppy (et plus précisément ToOpPy), autant je ne suis qu’un simple utilisateur. Rien à voir avec un quelquonque spécialiste.

Merci d’avance.
Back to top
View user's profile Send private message 
Argolance


Joined: 06 Jan 2008
Posts: 3148
Location: PORT-BRILLET (Mayenne - France)

PostPosted: Thu 02 Nov 2017, 05:45    Post subject:  

Merci musher0. Peut en effet être très utile.
Cordialement.

_________________

Back to top
View user's profile Send private message Visit poster's website 
musher0


Joined: 04 Jan 2009
Posts: 11277
Location: Gatineau (Qc), Canada

PostPosted: Fri 03 Nov 2017, 02:50    Post subject:  

Anaxagore wrote:
Bonjour, désolé si ma question est idiote, mais peut-on, avec ce script compresser le fichier de sauvegarde qu’on est en train d’utiliser (j’en ai plusieurs) ? Si j’ai bien compris les commentaires des scripts, on ne peut pas restaurer et utiliser "à chaud" (écraser), le fichier de sauvegarde qu’on est en train d’utiliser ? Est-ce correct ?

Une fois encore, désolé si mes questions sont naïves, mais autant j’utilise régulièrement Puppy (et plus précisément ToOpPy), autant je ne suis qu’un simple utilisateur. Rien à voir avec un quelquonque spécialiste.

Merci d’avance.

Salut Anaxagore.

Tes questions ne sont ni naïves, ni idiotes. D'ailleurs tu fais bien de demander, parce
que je ne l'ai pas pensé à le mentionner.

On ne doit jamais restaurer à chaud.

Pour restaurer, il faut procéder à partir d'un autre Toutou ou Linux. On se rend dans le
répertoire du Toutou amoché et on décompresse l'archive désirée. (S.v.p.voir les notes
au bas du message.)

Puis on quitte ce Toutou ou ce Linux, et on redémarre le Toutou ou Puppy qu'on vient
de réparer.

Merci d'avoir posé la question.

Je te souhaite une excellente journée !

~~~~~~~~~~~~~~~~

Notes --
On peut à la rigueur utiliser le même Toutou, après l'avoir redémarré, pourvu
qu'on ne charge pas de pupsave. (Option « 0 » dans le sous-menu des pupsaves
au démarrage)

Si vous ne voyez pas ce sous-menu au cours du démarrage, il n'est peut-être pas
bête, en cas de panne, de se créer un pupsave bidon. Cela forcera ce sous-menu
à apparaître.

On se crée un pupsave bidon comme suit :
-- on ouvre une console dans le répertoire de son Toutou et on tape :
Code:
echo Rien > xenialsave-bidon.2fs
.
Remplacer le « xenial » dans le nom de fichier ci-dessus par le nom de votre Toutou.
Pour un Triton, par exemple, cela deviendra :
Code:
echo Rien > tahrsave-bidon.2fs

Donc pour le cas où on n'a qu'un Toutou sur son ordi, on crée ce pupsave bidon, on
redémarre, et on tape le numéro « 0 » quand apparaît le sous-menu des pupsaves.

On retrouve alors un Toutou « vierge », tel qu'il était avant que vous ayez ajouté des
applis, modifié des positions d'icônes, etc.

Dans votre répertoire Toutou, vous verrez sans doute plusieurs sauvegardes, de
diverses dates et heures. Choisissez-en-une dont vous êtes sûr qu'elle est « saine ».
Peut-être choisir l'avant-dernière plutôt que la dernière, ou même une faite la veille,
si vous n'avez pas remarqué quand au juste votre pauvre Toutou s'est « blessé ».

Vous faites la restauration à partir d'une sauvegarde en zip avec l'utiliaire PupZip ou
xArchiver. Cela prend quelques secondes. Soyez patient si votre pupsave est gros ! Wink
Ou encore en console avec l'utilitaire unzip, commande :
Code:
unzip NomDeFichier.zip
ou l'utilitaire lzop, commande :
Code:
lzop -d NomDeFichier.lzo
(le lzop dans Puppy par défaut est ok pour « dézopper ».)

Ensuite, on quitte et on redémarre le Toutou réparé, bien sûr, comme auparavant.

Vérifiez que la copie est bonne, même s'il vous manque vos tout derniers ajouts.
Sinon, il faudra recommencer ce processus avec une sauvegarde plus ancienne.

Une fois qu'on a effectué la restauration et qu'on est sûr que tout va bien, on peut
se débarrasser du pupsave bidon. Ou le laisser, pour la commodité de la chose.

~~~~~~~~~~~~~~~~

* Il va de soi que si le pupsave d'un Toutou ou Puppy fonctionne bien, on n'a pas
besoin de le remplacer par une copie antérieure.

_________________
musher0
~~~~~~~~~~
"Logical entities must not be multiplied beyond necessity." | |
« Il ne faut pas multiplier les entités logiques sans nécessité. » (Ockham)

Last edited by musher0 on Sun 05 Nov 2017, 16:26; edited 1 time in total
Back to top
View user's profile Send private message 
Anaxagore

Joined: 04 Aug 2014
Posts: 48

PostPosted: Sat 04 Nov 2017, 08:46    Post subject:  

Bonjour et merci pour cette réponse détaillée. Et bien sûr aussi un grand merci pour ces scripts fort pratique.

Bonne continuation
Back to top
View user's profile Send private message 
musher0


Joined: 04 Jan 2009
Posts: 11277
Location: Gatineau (Qc), Canada

PostPosted: Sun 05 Nov 2017, 04:04    Post subject:  

Anaxagore wrote:
Bonjour et merci pour cette réponse détaillée. Et bien sûr aussi un grand merci pour ces scripts fort pratique.

Bonne continuation
De rien ! Smile
_________________
musher0
~~~~~~~~~~
"Logical entities must not be multiplied beyond necessity." | |
« Il ne faut pas multiplier les entités logiques sans nécessité. » (Ockham)
Back to top
View user's profile Send private message 
Dorothée


Joined: 27 Nov 2012
Posts: 171

PostPosted: Wed 06 Dec 2017, 13:52    Post subject:  

Bonjour Musher0,

si le script s'appelle "2archives-en-vitesse.sh"

on ne doit pas plutôt taper

Code:
./2archives-en-vitesse.sh XXXsave.2fs


au lieu de

Code:
./2sauvegardes.sh XXXsave.2fs
?

Ou alors je n'ai pas tout compris.

À bientôt,
Back to top
View user's profile Send private message 
musher0


Joined: 04 Jan 2009
Posts: 11277
Location: Gatineau (Qc), Canada

PostPosted: Wed 06 Dec 2017, 15:15    Post subject:  

Dorothée wrote:
Bonjour Musher0,

si le script s'appelle "2archives-en-vitesse.sh"
on ne doit pas plutôt taper
Code:
./2archives-en-vitesse.sh XXXsave.2fs
au lieu de
Code:
./2sauvegardes.sh XXXsave.2fs
?

Ou alors je n'ai pas tout compris.

À bientôt,

Si, si, t'as tout compris. Désolé. Ce doit être chez moi un début d'Alzheimer...
(Nom du script corrigé 17-12-06. Merci à Dorothée de m'avoir tapé sur les doigts.
Voir 1er message.)

_________________
musher0
~~~~~~~~~~
"Logical entities must not be multiplied beyond necessity." | |
« Il ne faut pas multiplier les entités logiques sans nécessité. » (Ockham)
Back to top
View user's profile Send private message 
Dorothée


Joined: 27 Nov 2012
Posts: 171

PostPosted: Thu 07 Dec 2017, 01:46    Post subject:  

Hello Musher0,

Alzheimer... Tout de suite les grands mots... comme tu y vas... On oublie tous de changer un nom récurrent dans des scripts ou des tutos en oubliant qu'on a modifié le premier...

Je me sers régulièrement de ton script que je trouve formidable (je l'ai appelé simplement sauvegarde.sh). Je n'ai gardé que la ligne zip parce que je trouve qu'une sauvegarde zip me suffit. La console met une phrase un peu curieuse (preciseXXX.4fs.zip not found...) mais ça fonctionne très bien.

Merci, à bientôt,
console_sauvegarde.jpg
 Description   
 Filesize   47.1 KB
 Viewed   25 Time(s)

console_sauvegarde.jpg

Back to top
View user's profile Send private message 
musher0


Joined: 04 Jan 2009
Posts: 11277
Location: Gatineau (Qc), Canada

PostPosted: Thu 07 Dec 2017, 05:24    Post subject:  

Allô.

Tu es gentille (à propos de l'Alzheimer) !

C'est parce qu'au départ, j'avais mis < zip -2u -dd ... etc. >
u pour "update" (mise à jour).

Je pensais toujours sauvegarder dans le même zip, puis j'ai changé d'idée, j'ai
décidé d'ajouter la date et l'heure au nom de fichier.

Or avec date et heure, on a un zip qui a un nom à lui, donc on ne le met jamais à
jour parce qu'il n'existe pas encore.

Enlève le "u" à côté du "-2", et l'erreur s'en ira.

Merci de me le signaler.

À+

_________________
musher0
~~~~~~~~~~
"Logical entities must not be multiplied beyond necessity." | |
« Il ne faut pas multiplier les entités logiques sans nécessité. » (Ockham)
Back to top
View user's profile Send private message 
musher0


Joined: 04 Jan 2009
Posts: 11277
Location: Gatineau (Qc), Canada

PostPosted: Thu 07 Dec 2017, 06:44    Post subject:  

Ok. Je crois qu'il est temps de suggérer une mise à jour.

Automatisation des sauvegardes, 2e version.

Merci à toutes et à tous de vos observations. Je les ai incluses.

La différence principale est qu'il n'y aura pas de sauvegarde si on en déjà fait une
dans l'heure. Si une sauvegarde a été faite dans l'heure « 14 h », il n'y en aura
pas d'autre dans l'heure « 14 h ».

L'algorythme est primitif, parce que si une sauvegarde a été faite à 14 h 59 et
que vous recyclez votre gestionnaire de fenêtres ou X à 15 h 01, une sauvegarde
sera quand même faite. Mais bon, c'est mieux que de faire une sauvegarde à
chaque recyclage de votre gest. de fen. ou de X.

Si vous avez des idées pour améliorer cet algorythme, je vous écoute !!!

Je vous fais grâce du code ici, mais lisez-le, s.v.p., il y a plein de commentaires
utiles dedans. (Du moins je crois.)

@Dorothée : tu vas vouloir mettre un dièse devant la ligne lzop !!! Wink

@tous : n'oubliez pas que vous pouvez moduler la fréquence des sauvegardes en
créant un petit fichier /root/interval, avec un des paramètres suivants :
Code:

            # Intervalle=3600 secondes  # <=- 1 heure
   # Intervalle=5400 secondes  # <=- 1 heure et demie
   # Intervalle=7200 secondes  # <=- 2 heures
   # 3 heures, en secondes (ou 3 x 60 min. x 60 sec.)
   Intervalle=10800 # <=- Par défaut, 3 heures
   # Intervalle=14400 secondes  # <=- 4 heures
   # Intervalle=18000 secondes  # <=- 5 heures
   # Intervalle=21600 secondes   # <=- 6 heures

Si ce petit fichier n'existe pas, l'intervalle par défaut est de trois heures. Si on veut
une sauvegarde aux quatre heures, par exemple, on tapera en console :
Code:
echo 14400 > /root/interval

Continuez à m'en donner des nouvelles, j'apprécie beaucoup.

À+
sauv2archives-0.1.pet
Description 
pet

 Download 
Filename  sauv2archives-0.1.pet 
Filesize  3.27 KB 
Downloaded  8 Time(s) 

_________________
musher0
~~~~~~~~~~
"Logical entities must not be multiplied beyond necessity." | |
« Il ne faut pas multiplier les entités logiques sans nécessité. » (Ockham)
Back to top
View user's profile Send private message 
Display posts from previous:   Sort by:   
Page 1 of 1 [13 Posts]  
Post new topic   Reply to topic View previous topic :: View next topic
 Forum index » House Training » Users ( For the regulars ) » Pour les francophones
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group
[ Time: 0.0697s ][ Queries: 15 (0.0059s) ][ GZIP on ]