IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script de sauvegarde


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Script de sauvegarde
    Bonjour,

    J'ai trouvé un script ayant des fonctions qui m'intéressent et j'aimerais complémenter le script par une sauvegarde spécifique.
    Je suis avec xubuntu xfce 14.04

    voici l'idée en sh: la partie "sauvegarde" à transformer du script entier posté en fin de message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
    sauvegarde()
    {
    #permet de creer une archive compressée d'un dossier
    ici=`pwd`
    # Selection du repertoire a  explorer ($HOME par defaut)
    chemin=$(zenity  --file-selection --title="Dossier à sauvegarder" --directory --filename=$HOME/)
    tar -cvf  $chemin".tar" $chemin && bzip2 $chemin".tar" | zenity --info --title="En cours" --text="Archivage et compression de $chemin en cours"
    }


    Mais j'aimerais transformer cela par une liste spécifique de fichiers et dossiers
    j'ai reçu comme suggestion de faire une boucle... (ok mais comment boucler et comment l'intégrer au script?) Car moi je n'y connais rien en script,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in  $USER/.config/thunar/* $USER/.conky/conky-perso/ $USER/.config/tox/* etc....
    do tar -cvf $i
    done
    Le but c'est de sauvegarder mes paramètres et pouvoir les réinstaller et les partager, tel que thunar, conky, utox, panels, scripts, radiotray, etc.

    Le rêve serait qu'en plus d'avoir la formation en archives des fichiers et dossiers spécifiques avec cases à cocher, et avoir l'option de restauration avec aussi des cases à cocher.


    Mais bon ! si j'avais déjà la possibilité de lancer la formation de toutes les archives prévues, je serais déjà très content.

    Question subsidiaire: la sauvegarde des panels est spéciale sur xfce et je ne suis pas certain que les fichiers situés dans ~/.config/ soit suffisant, si vous connaissez la bonne procédure...

    Merci de votre attention.

    Le script complet par barbican82:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    #!/bin/bash
    ############################################
    #Script utilitaire 
    # auteur: jean-françois BAERT
    #Licence Creativ Common BY - SA http://creativecommons.org/licenses/by-sa/2.0/fr/ ou GPL v3
    #
    #
    #
    #systemes testés: ubuntu et variantes
    #dependance: zenity
    #
    ############################################
     
     
    #declaration des fonctions:
     
     
    install()
    {
    #Installation d'un programme (comme son nom l'indique)
    			prog=$(zenity --entry --title="Programme" --text="Quel programme voulez vous installer ?" --entry-text= "Programme")
    			zenity --question --title="Question" --text="Vous allez installer $prog, merci de confirmer"
    			zenity --password | sudo -S apt-get -y install $prog	
    	main
    }
     
    update()
    {
    #Mise a jour du système
    			zenity --password | sudo -S apt-get update && sudo apt-get dist-upgrade
    	main
    }
     
    space()
    {
    #contrôle espace disques
    	df -h | awk '{print $5 " utilise sur  " $6}' | grep % | grep -v Use| sort -n | zenity --text-info --title="Occupation des disques"
    	main
    }
     
    profil_creation()
    {
    #creation d'un fichier peremttant de lancer des programmes en fonction d'un profil defini
    ici=`pwd`
    nom_profil=$(zenity --entry --title="Création du profil" --text="Entrez le nom du profil")
    profil=$ici/$nom_profil".desk"
    	if test -e $profil
    		then
    			zenity --warning --title="Erreur" --text="Ce profil existe déjà"
    			question=$(zenity --entry --width=600 --title="Voulez vous modifier le profil existant?" --text= "Non" Oui)
    			case $question in
    				Non)
    				exit 0
    				;;
    				Oui)
    				rm $profil
    				programmes=$(zenity --entry --width=600 --title="Programmes à lancer" --text="Entrez les programmes à lancer séparés par un espace")
    					for i in $programmes
    						do echo $i >> $profil
    						done
    						echo $programmes | zenity --text-info --width=400 --title="Ces programmes seront lancés" 
     
    				chmod u+x $profil
    				;;
    			esac
    		else
    	programmes=$(zenity --entry --title="Programmes à lancer" --text="Entrez les programmes à lancer séparés par un espace")
    		for i in $programmes
    			do echo $i >> $profil
    			done
    			echo $programmes| zenity --text-info --width=400 --title="Ces programmes seront lancés"
    			chmod u+x $profil
     
    	fi 
    	main
    }
     
    profil_login()
    {
    #Lancement des programmes precedemment definis dans le profil (fonction ci-dessus)	
    ici=`pwd`
    	ls -lrt  *desk |awk '{print $9}'| cut -d'.' -f1 > choix_profil
    	var=`awk '{print $1}' choix_profil`
    	execute=$(zenity --list --separator='\n' --title="Choix du profil à lancer" --column="Profil" $var)
    	./$execute".desk"
    	rm choix_profil
    	main
    }
     
    charge_profil()
    {
    #création du fichier .desktop et copie vers /etc/xdg/autostart pour lancement automatique des programmes au demarrage de la machine
    	ici=`pwd`
    	ls -lrt  *desktop |awk '{print $9}'| cut -d'.' -f1 > choix_profil
    	var1=`awk '{print $1}' choix_profil`
    	prof=$(zenity --list --separator='\n' --title="Choix du profil à lancer" --column="Profil" $var1)
    	fic=$ici/$prof".desktop"
    	echo "[Desktop Entry]" > $fic 
    	echo "Encoding=UTF-8" >> $fic
    	echo "Name=$prof" >> $fic
    	echo "Exec=$ici/$prof".desktop"" >>$fic
    	echo "Terminal=false" >>$fic
    	echo "Type=Application" >> $fic
    	chmod 644 $fic
    	zenity --password --title="Authentification" --text="Entrez votre mot de passe" | sudo -S cp $fic /etc/xdg/autostart/ && sudo chown root:root $fic
     
    	main
    	}
     
    aide()
    {
    ici=`pwd`
    	firefox $ici/aide.html
    	main
    }
     
     
    sauvegarde()
    {
    #permet de creer une archive compressée d'un dossier
    ici=`pwd`
    # Selection du repertoire a  explorer ($HOME par defaut)
    chemin=$(zenity  --file-selection --title="Dossier à sauvegarder" --directory --filename=$HOME/)
    tar -cvf  $chemin".tar" $chemin && bzip2 $chemin".tar" | zenity --info --title="En cours" --text="Archivage et compression de $chemin en cours"
    }
     
    recherche()
    {
    # Fonction de recherche de fichiers divers (choix) et affichage des resultat en page web
     
    # on se place dans le home du user courant
    cd
    ici=`pwd`
    ##On cree/vide le fichier
    > $ici/index.html
    # Selection du repertoire a  explorer ($HOME par defaut)
    chemin=$(zenity  --file-selection --title="Select Directory" --directory --filename=$HOME/)
     
    #Selection du type de fichier a chercher
    doc=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title="Saisie" --text="Faites votre choix" --entry-text="Films" Musiques Documents Ebook)
     
    case $doc in
        	1) 
    			exit 
    		;;
     
    		Films)
    			rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Entrez tout ou partie du nom du film ou laissez vide pour tous" )
     
    		set -x
    		# recherche des fichiers videos, on se limite aux avi AVI, mp4 MP4 et mkv MKV
    		if [$rep == ""] ;then 
    				find  $chemin $file -type f -iname '*.mp4' -o -iname '*.avi' -o -iname '*.mkv' | while read i
    			#on ajoute les fichiers trouves dans la page html
    				do
    				echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
    				done
    				else 
    				find $chemin $file -type f -iname "*$rep*.mp4" -o -iname "*$rep*.avi" -o -iname "*$rep*.mkv" | while read i
    				do
    				echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
    				done
    		fi
    			;;
     
    		Musiques)
    			rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Entrez tout ou partie du titre recherché, laissez vide pour tous" )
     
     
    		# recherche des fichiers sons on se limite aux mp3, flac, wav
    		if [$rep == ""] ;then 
    				find $chemin $file -type f -iname '*.mp3' -o -iname '*.flac' -o -iname '*.wav' | while read i
    				#on ajoute les fichiers trouves dans la page html
    				do
    					echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
    				done
    				else	 
    					find $chemin  $file -type f -iname "*$rep*.mp3" -o -iname "*$rep*.flac" -o -iname "*$rep*.wav" | while read i
    				do
    					echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
    				done
    		fi
    			;;
     
    		Documents)
    			rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Entrez tout ou partie du nom du document, laissez vide pour tous" )
    			# recherche des fichiers  on se limite aux doc, xls, odt, ods
    		if [$rep == ""] ;then 
    				find $chemin $file -type f -iname '*.doc' -o -iname '*.odt' -o -iname '*.xls' -o -iname '*.ods' | while read i
    				#on ajoute les fichiers trouves dans la page html
    				do
    					echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
    				done
    				else 
    				find $chemin $file -type f -iname "*$rep*.doc" -o -iname "*$rep*.odt " -o -iname "*$rep*.xls"  -o -iname "*$rep*.ods"| while read i
    				do
    				echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
    				done	
    		fi
    			;;
    		Ebook)
    			rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Entrez tout ou partie du nom du document, laissez vide pour tous" )
    			# recherche des fichiers  on se limite aux epub, pdf 
    		if [$rep == ""] ;then 
    				find $chemin $file -type f -iname '*.epub' -o -iname '*.pdf'  | while read i
    				#on ajoute les fichiers trouves dans la page html
    				do
    					echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
    				done
    				else 
    				find $chemin $file -type f -iname "*$rep*.epub" -o -iname "*$rep*.pdf " | while read i
    				do
    				echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
    				done	
    		fi
    			;;
    			esac
    	#Generation de la page web # en-tete
    		echo '<html>' >> $ici/index.html
    		echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
     
    echo '</ul></body></html>' >> $ici/index.html
    # firefox ouvre la page
    firefox $ici/index.html
    }
    list_start()
    {
    ls -lrt /etc/xdg/autostart/* | awk '{print $9}'| awk -F '/' '{print $5}'| cut -d'.' -f1 | zenity --text-info --title="Programmes lancés au démarrage"
    }
     
    #Interface pricipale
    main()
    {
    rep=`pwd`
    choix=$(zenity --entry --title="Bonjour" --text="Faites votre choix" --entry-text= Utilitaire Administration Aide)
     
    case $choix in
        1)
    		exit 0
    	;;
    	Utilitaire)
    		utile=$(zenity --entry --title="Choix" --text="Faites votre choix" --entry-text= "Recherche" Espace_disque Programmes_au_demarrage Sauvegarde)
    			case $utile in
    				1)
    					exit 1
    				;;
    				Recherche)
    					recherche
    				;;
    				Espace_disque)
    					space
    				;;	
    				Programmes_au_demarrage)
    					list_start
    				;;
    				Sauvegarde)
    					sauvegarde
    				;;
    			esac
    			;;
    	Administration)	
    		tache=$(zenity --entry --title="Choix"  --text="Que voulez vous faire?" --entry= "Update" Install_programm Creer_profil Lancer_profil Charger_profil)
    			case $tache in
    				1)
    					exit 1
    				;;
    				Update)
    					update 
    				;;
    				Install_programm)
    					install		
    				;;
    				Creer_profil)
    					profil_creation
    				;;	
    				Lancer_profil)
    					profil_login
    				;;
    				Charger_profil)
    					charge_profil
    				;;
    			esac	
    			;;
    		Aide)
    			aide
    		;;
    esac
    }
     
    #lancement de la fonction "main", l'interface quoi!
    main

  2. #2
    Expert confirmé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Points : 4 805
    Points
    4 805
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par enebre Voir le message
    ... j'aimerais transformer cela par une liste spécifique de fichiers et dossiers ...
    pour faire cela tu doit au préalable créer ton archive avec la commande "tar"
    puis ajouter au fur et à mesure les fichiers/dossiers avec la commande "tar" dans l'archive existante
    Rien, je n'ai plus rien de pertinent à ajouter

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Bonjour TiranusKBX
    Je ne comprend pas bien ta réponse, à moins que tu n'ai pas bien compris ce que j'ai essayé d'exprimer, dans ce cas je m'en excuse de ne pas avoir été clair.
    En fait j'aimerais que le script s'occupe de tout ça. Selon une liste de dossiers et fichiers qui y seraient inscrit, il en ferait une archive.
    L'option cadeau serait que le script me demande lesquels, de la liste à sauvegarder et / ou lesquels des .tar à restaurer.

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour,

    Le rêve serait qu'en plus d'avoir la formation en archives des fichiers et dossiers spécifiques avec cases à cocher, et avoir l'option de restauration avec aussi des cases à cocher.
    Car moi je n'y connais rien en script,
    Soit tu apprends, soit tu paies. C'est la dure loi de la vie.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour,



    Soit tu apprends, soit tu paies. C'est la dure loi de la vie.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par enebre Voir le message
    Mais j'aimerais transformer cela par une liste spécifique de fichiers et dossiers
    j'ai reçu comme suggestion de faire une boucle... (ok mais comment boucler et comment l'intégrer au script?)

    ...

    ...Selon une liste de dossiers et fichiers qui y seraient inscrit, il en ferait une archive.
    Bonjour

    Exemple de boucle sur une liste de dossiers
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
     
    liste="/etc /var /home"
    for x in $liste; do
    	echo "$x"
    done

    Citation Envoyé par enebre Voir le message
    Car moi je n'y connais rien en script,
    L'ignorance est de courte durée et la connaissance reste à vie. On ne pourra pas apprendre à scripter à ta place. Donc soit tu fais comme tous les autres, tu télécharges un tuto sur le net et tu t'y mets, soit tu fais pas. Mais personne ne le fera pour toi.

    Citation Envoyé par enebre Voir le message
    Le rêve serait qu'en plus d'avoir la formation en archives des fichiers et dossiers spécifiques avec cases à cocher, et avoir l'option de restauration avec aussi des cases à cocher.
    Non là c'est déjà trop demander. La programmation script reste en mode texte. Tu peux afficher des trucs à l'écran, poser des questions et récupérer les réponses mais rien de plus (ce qui est déjà pas mal). Mais si tu veux commencer sur le concept de "case à cocher" il faut alors t'orienter vers les bibliothèques de programmation graphique. Ceci dit il y a des trucs qui peuvent encapsuler du script dans du graphique (tcl/tk par exemple) mais avant de voler il faut d'abord apprendre à marcher...

    Citation Envoyé par enebre Voir le message
    L'option cadeau serait que le script me demande lesquels, de la liste à sauvegarder et / ou lesquels des .tar à restaurer.
    C'est possible bien sûr mais l'expérience démontre que plus le script est simple, mieux c'est. Par exemple écrire un script qui archive un dossier et ensuite l'appeler en lui passant le dossier à archiver en paramètre sera bien plus pratique qu'un script qui commence à poser des questions qu'il faut ensuite analyser...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Mais si tu veux commencer sur le concept de "case à cocher" il faut alors t'orienter vers les bibliothèques de programmation graphique
    Mais c'est déjà fait puisque le script sur lequel il se base utilise zenity. Je t'invite à faire et à chercher l'option --checkbox. Ce n'est pas infaisable avec un script tout bête.

    C'est juste qu'il faut qu'il prenne son courage à deux mains et son clavier de l'autre.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Mais c'est déjà fait puisque le script sur lequel il se base utilise zenity. Je t'invite à faire et à chercher l'option --checkbox. Ce n'est pas infaisable avec un script tout bête.
    Pas mal. Je ne connaissais pas zenity mais j'aime bien
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Script pour sauvegarde OVH
    Par d10g3n dans le forum Linux
    Réponses: 6
    Dernier message: 18/12/2006, 16h09
  2. Shell script de sauvegarde
    Par marza dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 22/11/2006, 22h32
  3. Script de sauvegarde FTP
    Par goldorax113 dans le forum Développement
    Réponses: 5
    Dernier message: 09/11/2006, 11h08
  4. Script de sauvegarde sous REDHAT 7.3
    Par florfilla18 dans le forum Linux
    Réponses: 12
    Dernier message: 22/08/2006, 17h03
  5. erreur sur script de sauvegarde
    Par zouetchou dans le forum Langage
    Réponses: 5
    Dernier message: 08/12/2005, 08h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo