[{"data":1,"prerenderedAt":8683},["ShallowReactive",2],{"posts-count":3,"posts-page-5":4},50,[5,201,313,1415,1447,1563,1773,2865,5881,6563],{"id":6,"title":7,"author":8,"body":9,"category":170,"categorySlug":171,"date":172,"description":173,"excerpt":174,"extension":189,"location":190,"meta":191,"navigation":192,"path":193,"published":192,"seo":194,"slug":195,"stem":196,"tags":197,"timeToRead":199,"__hash__":200},"posts\u002Fposts\u002FLogiciels\u002F2008-10-19-nouvelles-fonctionnalites-de-qt-designer-45.md","Nouvelles fonctionnalités de Qt Designer 4.5","Ulrich Vandenhekke",{"type":10,"value":11,"toc":166},"minimark",[12,38,41,48,54,57,63,66,111,117,120,126,129,135],[13,14,15,16,24,25,37],"p",{},"Sur ",[17,18,19,23],"em",{},[20,21,22],"strike",{},"Trolltech","Nokia Labs Blogs",", Friedelann Kleint nous\nprésente aujourd'hui les nouvelles fonctionnalités de Qt Designer 4.5",[26,27,28],"sup",{},[29,30,36],"a",{"href":31,"ariaDescribedBy":32,"dataFootnoteRef":34,"id":35},"#user-content-fn-1",[33],"footnote-label","","user-content-fnref-1","1",".",[13,39,40],{},"Au menu, on peut trouver l'ajout de filtre sur l'éditeur de propriétés\nainsi que sur l'inspecteur d'objet (Ce qui peut permettre de\nsélectionner un composant et d'en modifier les propriétés plus\nrapidement).",[13,42,43],{},[44,45],"img",{"alt":46,"src":47},"objectinspector","\u002FLogiciels\u002Fnouvelles-fonctionnalites-de-qt-designer-45\u002Fobjectinspector.png",[13,49,50],{},[44,51],{"alt":52,"src":53},"propertyeditorfilter","\u002FLogiciels\u002Fnouvelles-fonctionnalites-de-qt-designer-45\u002Fpropertyeditorfilter.png",[13,55,56],{},"L'arrangement de la boite à outil est également différent :",[13,58,59],{},[44,60],{"alt":61,"src":62},"widgetbox_iconmode","\u002FLogiciels\u002Fnouvelles-fonctionnalites-de-qt-designer-45\u002Fwidgetbox_iconmode.png",[13,64,65],{},"De plus il est maintenant possible de :",[67,68,69,81,91,98,105,108],"ul",{},[70,71,72,73,76,77,80],"li",{},"Sélectionner l'objet ancêtre d'un ",[17,74,75],{},"widget"," en sélectionnant ",[17,78,79],{},"Select\nancestors"," du menu contextuel.",[70,82,83,84,87,88,90],{},"Changer le ",[17,85,86],{},"Layout"," sans casser et reconstruire le ",[17,89,86],{}," de la\nfeuille",[70,92,93,94,97],{},"Ajouter facilement une nouvelle ligne au layout (L'action ",[17,95,96],{},"Add form\nlayout row"," ouvrant la boite de dialogue ci-dessous)",[70,99,100,101,104],{},"Créer des Assistants (",[17,102,103],{},"Wizard",") linéaires",[70,106,107],{},"Désactiver la traduction de certaine chaîne.",[70,109,110],{},"...",[13,112,113],{},[44,114],{"alt":115,"src":116},"formlayout","\u002FLogiciels\u002Fnouvelles-fonctionnalites-de-qt-designer-45\u002Fformlayout.png",[13,118,119],{},"Enfin, pour terminer, comme le dit Friedemann",[121,122,123],"blockquote",{},[13,124,125],{},"The general focus of the 4.5 release is on stability and performance.",[13,127,128],{},"Soit : Le but principal de la version 4.5 est la stabilité et les\nperformances.",[13,130,131,132,37],{},"Pour plus de précision, je vous conseille d'aller voir la page d'origine\net\u002Fou de télécharger la ",[17,133,134],{},"snapshot",[136,137,140,146],"section",{"className":138,"dataFootnotes":34},[139],"footnotes",[141,142,145],"h2",{"className":143,"id":33},[144],"sr-only","Footnotes",[147,148,149],"ol",{},[70,150,152,153,158,159],{"id":151},"user-content-fn-1","Référence : ",[29,154,155],{"href":155,"rel":156},"http:\u002F\u002Flabs.trolltech.com\u002Fblogs\u002F2008\u002F10\u002F16\u002Fnew-features-of-qt-designer-45\u002F",[157],"nofollow"," ",[29,160,165],{"href":161,"ariaLabel":162,"className":163,"dataFootnoteBackref":34},"#user-content-fnref-1","Back to reference 1",[164],"data-footnote-backref","↩",{"title":34,"searchDepth":167,"depth":167,"links":168},2,[169],{"id":33,"depth":167,"text":145},"Logiciels","logiciels","2008-10-19","Sur TrolltechNokia Labs Blogs, Friedelann Kleint nous\nprésente aujourd'hui les nouvelles fonctionnalités de Qt Designer 4.51.",{"type":10,"value":175},[176,187],[13,177,15,178,24,182,37],{},[17,179,180,23],{},[20,181,22],{},[26,183,184],{},[29,185,36],{"href":31,"ariaDescribedBy":186,"dataFootnoteRef":34,"id":35},[33],[13,188,40],{},"md","Lille, France",{},true,"\u002Fpost\u002Fnouvelles-fonctionnalites-de-qt-designer-45",{"title":7,"description":173},"nouvelles-fonctionnalites-de-qt-designer-45","posts\u002FLogiciels\u002F2008-10-19-nouvelles-fonctionnalites-de-qt-designer-45",[198],"qt",1,"nm-5nCtyIY7ytRcB2NS0B1KwbYlYkEMuv_OrrHl_gZI",{"id":202,"title":203,"author":8,"body":204,"category":170,"categorySlug":171,"date":303,"description":304,"excerpt":305,"extension":189,"location":190,"meta":306,"navigation":192,"path":307,"published":192,"seo":308,"slug":309,"stem":310,"tags":311,"timeToRead":199,"__hash__":312},"posts\u002Fposts\u002FLogiciels\u002F2008-10-06-qt-442-puis-qt-443-sont-sorties.md","QT 4.4.2 puis QT 4.4.3 sont sorties",{"type":10,"value":205,"toc":300},[206,212,229,253,256,274],[13,207,208,209,37],{},"En une semaine sont sortie les versions 4.4.2 et 4.4.3 de ",[17,210,211],{},"Qt",[13,213,214,215,218,219,223,224,226,227,37],{},"La version 4.4.2 corrige de nombreux bugs (dont des fuites mémoires sur\nla partie ",[17,216,217],{},"XmlPatterns","). Vous pouvez trouver la listes des changements\n",[29,220,222],{"href":221},"\u002FLogiciels\u002Fqt-442-puis-qt-443-sont-sorties\u002Fchanges-4.4.2","à cette adresse",", ou dans l'archive ",[17,225,211],{}," se trouvant sur le site\n",[17,228,22],{},[13,230,231,232,237,238,240,241,244,245,247,248,252],{},"La version 4.4.3",[26,233,234],{},[29,235,36],{"href":31,"ariaDescribedBy":236,"dataFootnoteRef":34,"id":35},[33]," modifie chaque entête de fichiers, les icônes,\n... pour refléter l'achat de ",[17,239,22],{}," par ",[17,242,243],{},"Nokia",". Par la même\noccasion le site de ",[17,246,22],{}," a été complètement refait\n(",[29,249,250],{"href":250,"rel":251},"http:\u002F\u002Ftrolltech.com",[157],").",[13,254,255],{},"Donc si vous avez la version 4.4.2, il n'est pas nécessaire de récupérer\nla 4.4.3 (sauf si vous souhaiter absolument la dernière version au nom\nde Nokia), par contre si vous êtes encore à la version 4.4.0 ou 4.4.1,\nil peut être intéressant d'installer la dernière version (suivant les\nfonctionnalités que vous utilisez).",[13,257,258,259,261,262,264,265,273],{},"Enfin, la question, sans réponse, est, est-ce que le site de ",[17,260,22],{},"\net de ",[17,263,243],{}," vont fusionner ou vont-il rester séparer",[26,266,267],{},[29,268,272],{"href":269,"ariaDescribedBy":270,"dataFootnoteRef":34,"id":271},"#user-content-fn-2",[33],"user-content-fnref-2","2"," ?",[136,275,277,280],{"className":276,"dataFootnotes":34},[139],[141,278,145],{"className":279,"id":33},[144],[147,281,282,291],{},[70,283,284,158,288],{"id":151},[29,285,286],{"href":286,"rel":287},"http:\u002F\u002Ftrolltech.com\u002Fabout\u002Fnews\u002Fqt-4.4.3-released",[157],[29,289,165],{"href":161,"ariaLabel":162,"className":290,"dataFootnoteBackref":34},[164],[70,292,294,295],{"id":293},"user-content-fn-2","ce dernier est tout de même plus pratique, je trouve ",[29,296,165],{"href":297,"ariaLabel":298,"className":299,"dataFootnoteBackref":34},"#user-content-fnref-2","Back to reference 2",[164],{"title":34,"searchDepth":167,"depth":167,"links":301},[302],{"id":33,"depth":167,"text":145},"2008-10-06","En une semaine sont sortie les versions 4.4.2 et 4.4.3 de Qt.",null,{},"\u002Fpost\u002Fqt-442-puis-qt-443-sont-sorties",{"title":203,"description":304},"qt-442-puis-qt-443-sont-sorties","posts\u002FLogiciels\u002F2008-10-06-qt-442-puis-qt-443-sont-sorties",[198],"TNEywWz-ZtPa5b6pfMVBEL9D98bBfXfM5LASdSKmk7E",{"id":314,"title":315,"author":8,"body":316,"category":1392,"categorySlug":1393,"date":1394,"description":1395,"excerpt":1396,"extension":189,"location":190,"meta":1408,"navigation":192,"path":1409,"published":192,"seo":1410,"slug":1411,"stem":1412,"tags":1413,"timeToRead":446,"__hash__":1414},"posts\u002Fposts\u002FProgrammation\u002F2008-09-08-paquet-debian-et-qt.md","Paquet Debian et Qt",{"type":10,"value":317,"toc":1386},[318,328,334,339,350,382,386,391,401,407,410,532,539,552,556,566,607,610,647,650,684,689,692,699,707,717,728,827,842,846,859,865,871,885,1167,1170,1174,1178,1183,1196,1201,1213,1216,1229,1232,1236,1239,1245,1249,1252,1258,1280,1284,1291,1297,1301,1307,1311,1314,1351,1382],[13,319,320,321,324,325,252],{},"A titre personnel je fabrique quelques programmes en Qt. Comme j'utilise\nun système ",[17,322,323],{},"Gnu\u002FDebian",", j'ai cherché à fabriquer des paquets pour mon\nsystème (plus pour le plaisir qu'autre chose, car la plus grande partie\nde mes utilisateurs sont sous ",[17,326,327],{},"MS\u002FWindows",[13,329,330,331,333],{},"Ce billet explique la création de paquet ",[17,332,323],{}," pour des\napplications Qt 4 utilisant QMake",[335,336,338],"h3",{"id":337},"installation-des-paquets","Installation des paquets",[13,340,341,342,346,347,37],{},"Pour la création des paquets pour des programmes utilisant ",[343,344,345],"code",{},"qmake",", il\nfaut ",[343,348,349],{},"cdbs, dh_make, dpkg-buildpackage",[351,352,356],"pre",{"className":353,"code":354,"language":355,"meta":34,"style":34},"language-bash shiki shiki-themes one-dark-pro","aptitude install cdbs dh-make fakeroot devscripts\n","bash",[343,357,358],{"__ignoreMap":34},[359,360,362,366,370,373,376,379],"span",{"class":361,"line":199},"line",[359,363,365],{"class":364},"sVbv2","aptitude",[359,367,369],{"class":368},"subq3"," install",[359,371,372],{"class":368}," cdbs",[359,374,375],{"class":368}," dh-make",[359,377,378],{"class":368}," fakeroot",[359,380,381],{"class":368}," devscripts\n",[335,383,385],{"id":384},"création-du-paquet","Création du paquet",[387,388,390],"h4",{"id":389},"préparation","Préparation",[13,392,393,394,397,398,37],{},"Vous pouvez donc choisir un de vos programmes que vous voulez\nempaqueter. Pour cela vous allez commencer par nettoyer l'arborescence\nde votre projet pour retirer les fichiers de sauvegarde ainsi que les\nfichiers de construction (",[343,395,396],{},"*~ *.o",", ...). Ce petit nettoyage va\npermettre d'avoir un paquet source ",[17,399,400],{},"propre",[13,402,403,404,37],{},"Il faut que vous placiez les sources dans un dossier du nom de\n",[343,405,406],{},"\u003Cprogramme>-\u003Cversion>",[13,408,409],{},"Voici un exemple de fichier projet :",[351,411,414],{"className":412,"code":413,"language":345,"meta":34,"style":34},"language-qmake shiki shiki-themes one-dark-pro","TARGET = qgenconfig\nTEMPLATE = app\n\nCONFIG += exceptions warn_on qt\nQT += xml\n\nHEADERS += src\u002Floadconfigimpl.h \\\\\n    src\u002Fsetupfile.h \\\\\n    src\u002Fconfigfile.h \\\\\n    src\u002Fp_configfile.h\nSOURCES += src\u002Floadconfigimpl.cpp \\\\\n    src\u002Fsetupfile.cpp \\\\\n    src\u002Fmain.cpp \\\\\n    src\u002Fconfigfile.cpp\nFORMS = ui\u002Floadconfig.ui\n\nDESTDIR = bin\nMOC_DIR = build\nOBJECTS_DIR = build\nUI_DIR = build\n",[343,415,416,421,426,432,438,444,449,455,461,467,473,479,485,491,497,503,508,514,520,526],{"__ignoreMap":34},[359,417,418],{"class":361,"line":199},[359,419,420],{},"TARGET = qgenconfig\n",[359,422,423],{"class":361,"line":167},[359,424,425],{},"TEMPLATE = app\n",[359,427,429],{"class":361,"line":428},3,[359,430,431],{"emptyLinePlaceholder":192},"\n",[359,433,435],{"class":361,"line":434},4,[359,436,437],{},"CONFIG += exceptions warn_on qt\n",[359,439,441],{"class":361,"line":440},5,[359,442,443],{},"QT += xml\n",[359,445,447],{"class":361,"line":446},6,[359,448,431],{"emptyLinePlaceholder":192},[359,450,452],{"class":361,"line":451},7,[359,453,454],{},"HEADERS += src\u002Floadconfigimpl.h \\\\\n",[359,456,458],{"class":361,"line":457},8,[359,459,460],{},"    src\u002Fsetupfile.h \\\\\n",[359,462,464],{"class":361,"line":463},9,[359,465,466],{},"    src\u002Fconfigfile.h \\\\\n",[359,468,470],{"class":361,"line":469},10,[359,471,472],{},"    src\u002Fp_configfile.h\n",[359,474,476],{"class":361,"line":475},11,[359,477,478],{},"SOURCES += src\u002Floadconfigimpl.cpp \\\\\n",[359,480,482],{"class":361,"line":481},12,[359,483,484],{},"    src\u002Fsetupfile.cpp \\\\\n",[359,486,488],{"class":361,"line":487},13,[359,489,490],{},"    src\u002Fmain.cpp \\\\\n",[359,492,494],{"class":361,"line":493},14,[359,495,496],{},"    src\u002Fconfigfile.cpp\n",[359,498,500],{"class":361,"line":499},15,[359,501,502],{},"FORMS = ui\u002Floadconfig.ui\n",[359,504,506],{"class":361,"line":505},16,[359,507,431],{"emptyLinePlaceholder":192},[359,509,511],{"class":361,"line":510},17,[359,512,513],{},"DESTDIR = bin\n",[359,515,517],{"class":361,"line":516},18,[359,518,519],{},"MOC_DIR = build\n",[359,521,523],{"class":361,"line":522},19,[359,524,525],{},"OBJECTS_DIR = build\n",[359,527,529],{"class":361,"line":528},20,[359,530,531],{},"UI_DIR = build\n",[13,533,534,535,538],{},"Pour générer le ",[343,536,537],{},"Makefile",", vous pouvez faire comme d'habitude :",[351,540,542],{"className":353,"code":541,"language":355,"meta":34,"style":34},"qmake-qt4 qgenconfig.pro\n",[343,543,544],{"__ignoreMap":34},[359,545,546,549],{"class":361,"line":199},[359,547,548],{"class":364},"qmake-qt4",[359,550,551],{"class":368}," qgenconfig.pro\n",[387,553,555],{"id":554},"création-des-scripts","Création des scripts",[13,557,558,559,562,563,37],{},"Pour créer les paquets, il faut un ensemble de script dans le dossier\n",[343,560,561],{},"debian",". Pour se faciliter la vie, il est possible de créer les scripts\navec ",[343,564,565],{},"dh_make",[351,567,569],{"className":353,"code":568,"language":355,"meta":34,"style":34},"DEBFULLNAME=\"Ulrich Van Den Hekke\"\ndh_make -e ulrich.vdh@shadoware.org -n -s -c gpl\n",[343,570,571,584],{"__ignoreMap":34},[359,572,573,577,581],{"class":361,"line":199},[359,574,576],{"class":575},"sVyAn","DEBFULLNAME",[359,578,580],{"class":579},"sjrmR","=",[359,582,583],{"class":368},"\"Ulrich Van Den Hekke\"\n",[359,585,586,588,592,595,598,601,604],{"class":361,"line":167},[359,587,565],{"class":364},[359,589,591],{"class":590},"sVC51"," -e",[359,593,594],{"class":368}," ulrich.vdh@shadoware.org",[359,596,597],{"class":590}," -n",[359,599,600],{"class":590}," -s",[359,602,603],{"class":590}," -c",[359,605,606],{"class":368}," gpl\n",[13,608,609],{},"Voici la description de la liste des paramètres :",[67,611,612,617,623,632,638],{},[70,613,614,616],{},[343,615,576],{}," indique le nom du mainteneur.",[70,618,619,622],{},[343,620,621],{},"-e"," Permet de préciser l'email (suivis de l'email).",[70,624,625,628,629,631],{},[343,626,627],{},"-n"," Produit un paquet natif pour ",[17,630,323],{}," (quand l'auteur fait\nses paquets lui-même).",[70,633,634,637],{},[343,635,636],{},"-s"," Indique que le paquet ne va contenir qu'un simple exécutable\n(si vous voulez faire plusieurs paquets, il suffit de ne pas mettre\ncette option).",[70,639,640,643,644,252],{},[343,641,642],{},"-c"," Indique la licence d'utilisation (ici ",[343,645,646],{},"gpl",[13,648,649],{},"Vous pouvez ensuite supprimer les fichiers exemples (mais pas\nnécessairement si vous voulez les étudier).",[351,651,653],{"className":353,"code":652,"language":355,"meta":34,"style":34},"rm debian\u002F*.ex  debian\u002F*.EX  debian\u002Fdocs  debian\u002Fdirs\n",[343,654,655],{"__ignoreMap":34},[359,656,657,660,663,667,670,673,675,678,681],{"class":361,"line":199},[359,658,659],{"class":364},"rm",[359,661,662],{"class":368}," debian\u002F",[359,664,666],{"class":665},"sU0A5","*",[359,668,669],{"class":368},".ex",[359,671,672],{"class":368},"  debian\u002F",[359,674,666],{"class":665},[359,676,677],{"class":368},".EX",[359,679,680],{"class":368},"  debian\u002Fdocs",[359,682,683],{"class":368},"  debian\u002Fdirs\n",[685,686,688],"h5",{"id":687},"paquet-simple","Paquet simple",[13,690,691],{},"Nous allons commencer par créer un paquet simple. Cela signifie qu'il\nn'y aura qu'un seul exécutable dans le paquet (pas de librairie, ...).",[13,693,694,695,698],{},"Dans le fichier ",[343,696,697],{},"control",", il faut que vous renseignez les informations\ndu paquet que vous allez créer.",[351,700,705],{"className":701,"code":703,"language":704},[702],"language-text","Source: qgenconfig\nSection: devel\nPriority: extra\nMaintainer: Ulrich Van Den Hekke \u003Culrich.vdh@shadoware.org>\nBuild-Depends: debhelper (>= 7)\nStandards-Version: 3.7.3\nHomepage: http:\u002F\u002Fprojects.shadoware.org\u002Fqgenconfig\n\nPackage: qgenconfig\nArchitecture: any\nDepends: ${shlibs:Depends}, ${misc:Depends}\nDescription: Create a config class in Qt after loading a XML file.\n    Load an XML description file of a settings object and create a class\n    that can be used to load and save information in a QSettings class. To\n    load information structure are used.\n","text",[343,706,703],{"__ignoreMap":34},[13,708,709,710,713,714,716],{},"Dans le paquet ci-dessus, on créait un paquet binaire et un paquet\nsource. Les variables de dépendance (dans ",[343,711,712],{},"Depends",") sont remplacées\nautomatiquement à la génération du paquet. La description est celle\nécrite dans ",[343,715,365],{},". La première ligne est la description courte, les\nsuivantes (précédées d'un espace) sont la description longue.",[13,718,719,720,723,724,727],{},"Ensuite on va remplacer le fichier ",[343,721,722],{},"debian\u002Frules"," en utilisant ",[343,725,726],{},"cdbs"," :",[351,729,731],{"className":353,"code":730,"language":355,"meta":34,"style":34},"#!\u002Fusr\u002Fbin\u002Fmake -f\ninclude \u002Fusr\u002Fshare\u002Fcdbs\u002F1\u002Frules\u002Fdebhelper.mk\ninclude \u002Fusr\u002Fshare\u002Fcdbs\u002F1\u002Fclass\u002Fqmake.mk\nQMAKE=qmake-qt4\n\ninstall\u002Fqgenconfig::\n    mkdir $(DEB_DESTDIR)\u002Fusr\u002F\n    mkdir $(DEB_DESTDIR)\u002Fusr\u002Fbin\u002F\n    cp $(CURDIR)\u002Fbin\u002Fqgenconfig $(DEB_DESTDIR)\u002Fusr\u002Fbin\u002F\n",[343,732,733,739,747,754,764,768,773,791,804],{"__ignoreMap":34},[359,734,735],{"class":361,"line":199},[359,736,738],{"class":737},"sV9Aq","#!\u002Fusr\u002Fbin\u002Fmake -f\n",[359,740,741,744],{"class":361,"line":167},[359,742,743],{"class":364},"include",[359,745,746],{"class":368}," \u002Fusr\u002Fshare\u002Fcdbs\u002F1\u002Frules\u002Fdebhelper.mk\n",[359,748,749,751],{"class":361,"line":428},[359,750,743],{"class":364},[359,752,753],{"class":368}," \u002Fusr\u002Fshare\u002Fcdbs\u002F1\u002Fclass\u002Fqmake.mk\n",[359,755,756,759,761],{"class":361,"line":434},[359,757,758],{"class":575},"QMAKE",[359,760,580],{"class":579},[359,762,763],{"class":368},"qmake-qt4\n",[359,765,766],{"class":361,"line":440},[359,767,431],{"emptyLinePlaceholder":192},[359,769,770],{"class":361,"line":446},[359,771,772],{"class":364},"install\u002Fqgenconfig::\n",[359,774,775,778,782,785,788],{"class":361,"line":451},[359,776,777],{"class":364},"    mkdir",[359,779,781],{"class":780},"sn6KH"," $(",[359,783,784],{"class":364},"DEB_DESTDIR",[359,786,787],{"class":780},")",[359,789,790],{"class":368},"\u002Fusr\u002F\n",[359,792,793,795,797,799,801],{"class":361,"line":457},[359,794,777],{"class":364},[359,796,781],{"class":780},[359,798,784],{"class":364},[359,800,787],{"class":780},[359,802,803],{"class":368},"\u002Fusr\u002Fbin\u002F\n",[359,805,806,809,811,814,816,819,821,823,825],{"class":361,"line":463},[359,807,808],{"class":364},"    cp",[359,810,781],{"class":780},[359,812,813],{"class":364},"CURDIR",[359,815,787],{"class":780},[359,817,818],{"class":368},"\u002Fbin\u002Fqgenconfig",[359,820,781],{"class":780},[359,822,784],{"class":364},[359,824,787],{"class":780},[359,826,803],{"class":368},[13,828,829,830,833,838,839,252],{},"En premier lieu on définit les variables pour la compilation, puis\nensuite on définit les opérations d'installations dans la cible\n",[343,831,832],{},"install\u002Fqgenconfig",[26,834,835],{},[29,836,36],{"href":31,"ariaDescribedBy":837,"dataFootnoteRef":34,"id":35},[33],".Dans les opérations, vous allez copier\nvotre exécutable dans le dossier de génération de debian (dossier\n",[343,840,841],{},"debian\u002F\u003Ccible>",[685,843,845],{"id":844},"paquet-multiple","Paquet multiple",[13,847,848,849,851,852,854,855,858],{},"Créer plusieurs paquets à partir d'une même source avec ",[343,850,726],{}," est assez\nsimple. Il suffit de rajouter des cibles, correspondantes au fichier\n",[343,853,697],{},", dans le fichier ",[343,856,857],{},"rules"," .",[13,860,861,862,864],{},"Dans le fichier de ",[343,863,697],{}," on va avoir plusieurs paquets binaires pour\nun seul paquet source.",[351,866,869],{"className":867,"code":868,"language":704},[702],"Source: xinx\nSection: devel\nPriority: extra\nMaintainer: Ulrich Van Den Hekke \u003Cxinx@shadoware.org>\nBuild-Depends: debhelper (>= 7)\nStandards-Version: 3.7.3\nHomepage: http:\u002F\u002Fxinx.shadoware.org\u002F\n\nPackage: xinx\nSection: devel\nArchitecture: any\nDepends: ${shlibs:Depends}, ${misc:Depends}, xinx-scripts (>= 0.7.2.0)\nRecommends: xinx-plugins-services, xinx-plugins-cvs, xinx-plugins-svn\nSuggests: xinx-doc\nDescription: XSL\u002FJS\u002FHTML editor for Generix\n    XINX is an editor of XSL stylesheet, JavaScript, Cascading Style Sheet.\n    This editor is used with egx.\n\nPackage: xinx-doc\nSection: doc\nArchitecture: all\nDepends: xinx (>= 0.7.2.0)\nDescription: Documentation for xinx\n    Technical Documentation of XINX\n",[343,870,868],{"__ignoreMap":34},[13,872,873,874,876,877,879,884],{},"Nous allons définir dans le fichier ",[343,875,857],{}," les différentes cibles que\nnous avons dans le fichier ",[343,878,697],{},[26,880,881],{},[29,882,272],{"href":269,"ariaDescribedBy":883,"dataFootnoteRef":34,"id":271},[33],"^.",[351,886,888],{"className":353,"code":887,"language":355,"meta":34,"style":34},"#!\u002Fusr\u002Fbin\u002Fmake -f\ninclude \u002Fusr\u002Fshare\u002Fcdbs\u002F1\u002Frules\u002Fdebhelper.mk\ninclude \u002Fusr\u002Fshare\u002Fcdbs\u002F1\u002Fclass\u002Fqmake.mk\nQMAKE=qmake-qt4 project.pro\n\ninstall\u002Fxinx::\n    mkdir $(CURDIR)\u002Fdebian\u002Fxinx\u002Fusr\u002F\n    mkdir $(CURDIR)\u002Fdebian\u002Fxinx\u002Fusr\u002Fbin\u002F\n    cp $(CURDIR)\u002Fxinx\u002Fxinx $(CURDIR)\u002Fdebian\u002Fxinx\u002Fusr\u002Fbin\u002F\n    cp $(CURDIR)\u002Fxinxprojectwizard\u002Fxinxprojectwizard $(CURDIR)\u002Fdebian\u002Fxinx\u002Fusr\u002Fbin\u002F\n\n    mkdir $(CURDIR)\u002Fdebian\u002Fxinx\u002Fusr\u002Flib\u002F\n    cp -a $(CURDIR)\u002Flibxinx\u002Flibsharedxinx* $(CURDIR)\u002Fdebian\u002Fxinx\u002Fusr\u002Flib\u002F\n    cp -a $(CURDIR)\u002Fcomponents\u002Flibxinxcmp* $(CURDIR)\u002Fdebian\u002Fxinx\u002Fusr\u002Flib\u002F\n\ninstall\u002Fxinx-doc::\n    mkdir $(CURDIR)\u002Fdebian\u002Fxinx-doc\u002Fusr\u002F\n    mkdir $(CURDIR)\u002Fdebian\u002Fxinx-doc\u002Fusr\u002Fshare\u002F\n    mkdir $(CURDIR)\u002Fdebian\u002Fxinx-doc\u002Fusr\u002Fshare\u002Fdoc\u002F\n    mkdir $(CURDIR)\u002Fdebian\u002Fxinx-doc\u002Fusr\u002Fshare\u002Fdoc\u002Fxinx-doc\u002F\n    cp -a $(CURDIR)\u002Fdoc\u002F* $(CURDIR)\u002Fdebian\u002Fxinx-doc\u002Fusr\u002Fshare\u002Fdoc\u002Fxinx-doc\u002F\n    rm -rf $(CURDIR)\u002Fdebian\u002Fxinx-doc\u002Fusr\u002Fshare\u002Fdoc\u002Fxinx-doc\u002Fhtml\u002F.svn\n",[343,889,890,894,900,906,917,921,926,939,952,973,994,998,1011,1037,1062,1066,1071,1084,1097,1110,1123,1149],{"__ignoreMap":34},[359,891,892],{"class":361,"line":199},[359,893,738],{"class":737},[359,895,896,898],{"class":361,"line":167},[359,897,743],{"class":364},[359,899,746],{"class":368},[359,901,902,904],{"class":361,"line":428},[359,903,743],{"class":364},[359,905,753],{"class":368},[359,907,908,910,912,914],{"class":361,"line":434},[359,909,758],{"class":575},[359,911,580],{"class":579},[359,913,548],{"class":368},[359,915,916],{"class":364}," project.pro\n",[359,918,919],{"class":361,"line":440},[359,920,431],{"emptyLinePlaceholder":192},[359,922,923],{"class":361,"line":446},[359,924,925],{"class":364},"install\u002Fxinx::\n",[359,927,928,930,932,934,936],{"class":361,"line":451},[359,929,777],{"class":364},[359,931,781],{"class":780},[359,933,813],{"class":364},[359,935,787],{"class":780},[359,937,938],{"class":368},"\u002Fdebian\u002Fxinx\u002Fusr\u002F\n",[359,940,941,943,945,947,949],{"class":361,"line":457},[359,942,777],{"class":364},[359,944,781],{"class":780},[359,946,813],{"class":364},[359,948,787],{"class":780},[359,950,951],{"class":368},"\u002Fdebian\u002Fxinx\u002Fusr\u002Fbin\u002F\n",[359,953,954,956,958,960,962,965,967,969,971],{"class":361,"line":463},[359,955,808],{"class":364},[359,957,781],{"class":780},[359,959,813],{"class":364},[359,961,787],{"class":780},[359,963,964],{"class":368},"\u002Fxinx\u002Fxinx",[359,966,781],{"class":780},[359,968,813],{"class":364},[359,970,787],{"class":780},[359,972,951],{"class":368},[359,974,975,977,979,981,983,986,988,990,992],{"class":361,"line":469},[359,976,808],{"class":364},[359,978,781],{"class":780},[359,980,813],{"class":364},[359,982,787],{"class":780},[359,984,985],{"class":368},"\u002Fxinxprojectwizard\u002Fxinxprojectwizard",[359,987,781],{"class":780},[359,989,813],{"class":364},[359,991,787],{"class":780},[359,993,951],{"class":368},[359,995,996],{"class":361,"line":475},[359,997,431],{"emptyLinePlaceholder":192},[359,999,1000,1002,1004,1006,1008],{"class":361,"line":481},[359,1001,777],{"class":364},[359,1003,781],{"class":780},[359,1005,813],{"class":364},[359,1007,787],{"class":780},[359,1009,1010],{"class":368},"\u002Fdebian\u002Fxinx\u002Fusr\u002Flib\u002F\n",[359,1012,1013,1015,1018,1020,1022,1024,1027,1029,1031,1033,1035],{"class":361,"line":487},[359,1014,808],{"class":364},[359,1016,1017],{"class":590}," -a",[359,1019,781],{"class":780},[359,1021,813],{"class":364},[359,1023,787],{"class":780},[359,1025,1026],{"class":368},"\u002Flibxinx\u002Flibsharedxinx",[359,1028,666],{"class":665},[359,1030,781],{"class":780},[359,1032,813],{"class":364},[359,1034,787],{"class":780},[359,1036,1010],{"class":368},[359,1038,1039,1041,1043,1045,1047,1049,1052,1054,1056,1058,1060],{"class":361,"line":493},[359,1040,808],{"class":364},[359,1042,1017],{"class":590},[359,1044,781],{"class":780},[359,1046,813],{"class":364},[359,1048,787],{"class":780},[359,1050,1051],{"class":368},"\u002Fcomponents\u002Flibxinxcmp",[359,1053,666],{"class":665},[359,1055,781],{"class":780},[359,1057,813],{"class":364},[359,1059,787],{"class":780},[359,1061,1010],{"class":368},[359,1063,1064],{"class":361,"line":499},[359,1065,431],{"emptyLinePlaceholder":192},[359,1067,1068],{"class":361,"line":505},[359,1069,1070],{"class":364},"install\u002Fxinx-doc::\n",[359,1072,1073,1075,1077,1079,1081],{"class":361,"line":510},[359,1074,777],{"class":364},[359,1076,781],{"class":780},[359,1078,813],{"class":364},[359,1080,787],{"class":780},[359,1082,1083],{"class":368},"\u002Fdebian\u002Fxinx-doc\u002Fusr\u002F\n",[359,1085,1086,1088,1090,1092,1094],{"class":361,"line":516},[359,1087,777],{"class":364},[359,1089,781],{"class":780},[359,1091,813],{"class":364},[359,1093,787],{"class":780},[359,1095,1096],{"class":368},"\u002Fdebian\u002Fxinx-doc\u002Fusr\u002Fshare\u002F\n",[359,1098,1099,1101,1103,1105,1107],{"class":361,"line":522},[359,1100,777],{"class":364},[359,1102,781],{"class":780},[359,1104,813],{"class":364},[359,1106,787],{"class":780},[359,1108,1109],{"class":368},"\u002Fdebian\u002Fxinx-doc\u002Fusr\u002Fshare\u002Fdoc\u002F\n",[359,1111,1112,1114,1116,1118,1120],{"class":361,"line":528},[359,1113,777],{"class":364},[359,1115,781],{"class":780},[359,1117,813],{"class":364},[359,1119,787],{"class":780},[359,1121,1122],{"class":368},"\u002Fdebian\u002Fxinx-doc\u002Fusr\u002Fshare\u002Fdoc\u002Fxinx-doc\u002F\n",[359,1124,1126,1128,1130,1132,1134,1136,1139,1141,1143,1145,1147],{"class":361,"line":1125},21,[359,1127,808],{"class":364},[359,1129,1017],{"class":590},[359,1131,781],{"class":780},[359,1133,813],{"class":364},[359,1135,787],{"class":780},[359,1137,1138],{"class":368},"\u002Fdoc\u002F",[359,1140,666],{"class":665},[359,1142,781],{"class":780},[359,1144,813],{"class":364},[359,1146,787],{"class":780},[359,1148,1122],{"class":368},[359,1150,1152,1155,1158,1160,1162,1164],{"class":361,"line":1151},22,[359,1153,1154],{"class":364},"    rm",[359,1156,1157],{"class":590}," -rf",[359,1159,781],{"class":780},[359,1161,813],{"class":364},[359,1163,787],{"class":780},[359,1165,1166],{"class":368},"\u002Fdebian\u002Fxinx-doc\u002Fusr\u002Fshare\u002Fdoc\u002Fxinx-doc\u002Fhtml\u002F.svn\n",[13,1168,1169],{},"Ici on génère deux paquets, le paquet binaire et la documentation.",[387,1171,1173],{"id":1172},"génération-du-paquet","Génération du paquet",[685,1175,1177],{"id":1176},"mise-à-jour-des-informations-du-paquets","Mise à jour des informations du paquets",[67,1179,1180],{},[70,1181,1182],{},"Pour modifier le changelog sur la version courante",[351,1184,1186],{"className":353,"code":1185,"language":355,"meta":34,"style":34},"dch -a\n",[343,1187,1188],{"__ignoreMap":34},[359,1189,1190,1193],{"class":361,"line":199},[359,1191,1192],{"class":364},"dch",[359,1194,1195],{"class":590}," -a\n",[67,1197,1198],{},[70,1199,1200],{},"Pour créer une nouvelle version",[351,1202,1204],{"className":353,"code":1203,"language":355,"meta":34,"style":34},"dch -i\n",[343,1205,1206],{"__ignoreMap":34},[359,1207,1208,1210],{"class":361,"line":199},[359,1209,1192],{"class":364},[359,1211,1212],{"class":590}," -i\n",[685,1214,385],{"id":1215},"création-du-paquet-1",[351,1217,1219],{"className":353,"code":1218,"language":355,"meta":34,"style":34},"dpkg-buildpackage -rfakeroot\n",[343,1220,1221],{"__ignoreMap":34},[359,1222,1223,1226],{"class":361,"line":199},[359,1224,1225],{"class":364},"dpkg-buildpackage",[359,1227,1228],{"class":590}," -rfakeroot\n",[13,1230,1231],{},"L'application va signer le paquet s'il trouve la clé assignée à\nl'utilisateur.",[335,1233,1235],{"id":1234},"création-dun-dépôt","Création d'un dépôt",[13,1237,1238],{},"Après avoir créé des paquets, il peut-être intéressant de créer un dépôt\npour installer ces paquets. voici la marche à suivre pour créer le\ndépôt.",[13,1240,1241,1242,252],{},"Sur votre serveur internet (nous ne parlerons pas ici de la mise à\ndisposition sur Internet), vous allez devoir créer un dossier contenant\nvotre référentiel (exemple : ",[343,1243,1244],{},"\u002Fwww\u002Fsites\u002Fapt",[387,1246,1248],{"id":1247},"création-de-larborescence","Création de l'arborescence",[13,1250,1251],{},"Vous allez devoir créer une arborescence comme suite :",[351,1253,1256],{"className":1254,"code":1255,"language":704},[702],"dists\n    +- main\n        |- binary-i386\n        |- binary-amd64\n        +- source\n",[343,1257,1255],{"__ignoreMap":34},[13,1259,1260,1261,1264,1265,1268,1269,1272,1273,1276,1277,37],{},"Parmi les fichiers générés vous allez devoir mettre le fichier ",[343,1262,1263],{},".deb","\ndans le dossier binaire, et les fichiers ",[343,1266,1267],{},".changes",", ",[343,1270,1271],{},".dsc",", et\n",[343,1274,1275],{},".tar.gz"," dans le dossier ",[343,1278,1279],{},"source",[387,1281,1283],{"id":1282},"création-dun-fichier-apt-ftparchiveconf","Création d'un fichier apt-ftparchive.conf",[13,1285,1286,1287,1290],{},"Nous allons commencer par créer un fichier ",[343,1288,1289],{},"apt-ftparchive.conf"," dans\nlequel nous allons définir les fichiers à créer.",[351,1292,1295],{"className":1293,"code":1294,"language":704},[702],"Dir {\n    ArchiveDir \".\";\n    CacheDir \".\";\n};\n\nTree \"dists\u002Funstable\" {\n    Sections \"main\";\n    Architectures \"amd64 source\";\n};\n\nBinDirectory \"dists\u002Funstable\u002Fmain\u002Fbinary-amd64\" {\n    Packages \"dists\u002Funstable\u002Fmain\u002Fbinary-amd64\u002FPackages\";\n    Contents \"dists\u002Funstable\u002FContents-amd64\";\n    SrcPackages \"dists\u002Funstable\u002Fmain\u002Fsource\u002FSources\";\n};\n",[343,1296,1294],{"__ignoreMap":34},[387,1298,1300],{"id":1299},"création-du-fichier-apt-unstable-releaseconf","Création du fichier apt-unstable-release.conf",[351,1302,1305],{"className":1303,"code":1304,"language":704},[702],"APT::FTPArchive::Release::Origin    \"shadoware.org\";\nAPT::FTPArchive::Release::Label     \"shadoware.org\";\nAPT::FTPArchive::Release::Suite     \"unstable\";\nAPT::FTPArchive::Release::Codename   \"unstable\";\nAPT::FTPArchive::Release::Architectures  \"amd64 source\";\nAPT::FTPArchive::Release::Components \"main\";\nAPT::FTPArchive::Release::Description    \"Paquets du site Shadoware.Org\";\n",[343,1306,1304],{"__ignoreMap":34},[387,1308,1310],{"id":1309},"création-du-fichier-update-archivesh","Création du fichier update-archive.sh",[13,1312,1313],{},"Ce fichier est celui que l'on doit exécuter pour la génération du\ncontenu de l'arborescence :",[351,1315,1317],{"className":353,"code":1316,"language":355,"meta":34,"style":34},"apt-ftparchive generate apt-ftparchive.conf\napt-ftparchive -c apt-unstable-release.conf release dists\u002Funstable > dists\u002Funstable\u002FRelease\n",[343,1318,1319,1330],{"__ignoreMap":34},[359,1320,1321,1324,1327],{"class":361,"line":199},[359,1322,1323],{"class":364},"apt-ftparchive",[359,1325,1326],{"class":368}," generate",[359,1328,1329],{"class":368}," apt-ftparchive.conf\n",[359,1331,1332,1334,1336,1339,1342,1345,1348],{"class":361,"line":167},[359,1333,1323],{"class":364},[359,1335,603],{"class":590},[359,1337,1338],{"class":368}," apt-unstable-release.conf",[359,1340,1341],{"class":368}," release",[359,1343,1344],{"class":368}," dists\u002Funstable",[359,1346,1347],{"class":780}," > ",[359,1349,1350],{"class":368},"dists\u002Funstable\u002FRelease\n",[136,1352,1354,1357],{"className":1353,"dataFootnotes":34},[139],[141,1355,145],{"className":1356,"id":33},[144],[147,1358,1359,1368],{},[70,1360,1361,1362,1364,1365],{"id":151},"D'autres cibles sont disponibles (cf la doc de ",[343,1363,726],{},"). ",[29,1366,165],{"href":161,"ariaLabel":162,"className":1367,"dataFootnoteBackref":34},[164],[70,1369,1370,1371,1374,1375,1378,1379],{"id":293},"A cause d'un bogue, ou d'une mauvaise utilisation, la variable ",[343,1372,1373],{},"$(DEB_DESTDIR)"," ne me ramenait pas la bonne valeur, je l'ai donc remplacée par ",[343,1376,1377],{},"$(CURDIR)\u002Fdebian",". ",[29,1380,165],{"href":297,"ariaLabel":298,"className":1381,"dataFootnoteBackref":34},[164],[1383,1384,1385],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sVbv2, html code.shiki .sVbv2{--shiki-default:#61AFEF}html pre.shiki code .subq3, html code.shiki .subq3{--shiki-default:#98C379}html pre.shiki code .sVyAn, html code.shiki .sVyAn{--shiki-default:#E06C75}html pre.shiki code .sjrmR, html code.shiki .sjrmR{--shiki-default:#56B6C2}html pre.shiki code .sVC51, html code.shiki .sVC51{--shiki-default:#D19A66}html pre.shiki code .sU0A5, html code.shiki .sU0A5{--shiki-default:#E5C07B}html pre.shiki code .sV9Aq, html code.shiki .sV9Aq{--shiki-default:#7F848E;--shiki-default-font-style:italic}html pre.shiki code .sn6KH, html code.shiki .sn6KH{--shiki-default:#ABB2BF}",{"title":34,"searchDepth":167,"depth":167,"links":1387},[1388,1389,1390,1391],{"id":337,"depth":428,"text":338},{"id":384,"depth":428,"text":385},{"id":1234,"depth":428,"text":1235},{"id":33,"depth":167,"text":145},"Programmation","programmation","2008-09-08","A titre personnel je fabrique quelques programmes en Qt. Comme j'utilise\nun système Gnu\u002FDebian, j'ai cherché à fabriquer des paquets pour mon\nsystème (plus pour le plaisir qu'autre chose, car la plus grande partie\nde mes utilisateurs sont sous MS\u002FWindows).",{"type":10,"value":1397},[1398,1404],[13,1399,320,1400,324,1402,252],{},[17,1401,323],{},[17,1403,327],{},[13,1405,330,1406,333],{},[17,1407,323],{},{},"\u002Fpost\u002Fpaquet-debian-et-qt",{"title":315,"description":1395},"paquet-debian-et-qt","posts\u002FProgrammation\u002F2008-09-08-paquet-debian-et-qt",[561,198],"UfskBB2vEveCnHyHdgHEScfMRoTQzydi1tuF-O_x8Ik",{"id":1416,"title":1417,"author":8,"body":1418,"category":170,"categorySlug":171,"date":1439,"description":1422,"excerpt":305,"extension":189,"location":190,"meta":1440,"navigation":192,"path":1441,"published":192,"seo":1442,"slug":1443,"stem":1444,"tags":1445,"timeToRead":199,"__hash__":1446},"posts\u002Fposts\u002FLogiciels\u002F2008-02-18-mises-a-jour-gnu-debian-recentes.md","Mises à jour Gnu\u002FDebian récentes",{"type":10,"value":1419,"toc":1437},[1420,1423,1426,1434],[13,1421,1422],{},"Bonjour,",[13,1424,1425],{},"La distribution GNU\u002FDebian propose une nouvelle mise à jour pour sa\nversion etch. Les points importants que je remarque, sont",[67,1427,1428,1431],{},[70,1429,1430],{},"la correction de la faille sur le noyau Linux pour toutes les\nmachines serveurs : Veillez à bien mettre à jour votre noyau car\nmême si vous ne proposez pas de compte aux utilisateurs, l'escalade\nde privilèges peut intervenir dans une faille de sécurité de votre\nsite Internet (cf de l'injection de code).",[70,1432,1433],{},"la mise à jour de KDE, qui désormais permet à Konqueror de charger\nle plugin flash non libre.",[13,1435,1436],{},"Bien sûr, cette mise à jour propose également d'autres corrections de\nBug et mise à jour de sécurité, ainsi que la suppression de certains\npaquets (soit trop miné\u002Fbuggé, soit propriétaire). On peut par ailleurs\nretrouver le plugin flash dans les backports",{"title":34,"searchDepth":167,"depth":167,"links":1438},[],"2008-02-18",{},"\u002Fpost\u002Fmises-a-jour-gnu-debian-recentes",{"title":1417,"description":1422},"mises-a-jour-gnu-debian-recentes","posts\u002FLogiciels\u002F2008-02-18-mises-a-jour-gnu-debian-recentes",[561],"GM6W6GPMbuROhvLrd5-UfzUhAflxM9pIgnr1TX720ek",{"id":1448,"title":1449,"author":8,"body":1450,"category":1392,"categorySlug":1393,"date":1533,"description":1534,"excerpt":1535,"extension":189,"location":190,"meta":1556,"navigation":192,"path":1557,"published":192,"seo":1558,"slug":1559,"stem":1560,"tags":1561,"timeToRead":199,"__hash__":1562},"posts\u002Fposts\u002FProgrammation\u002F2008-01-21-memo-qt.md","Mémo Qt",{"type":10,"value":1451,"toc":1529},[1452,1460,1464,1483,1487,1491,1497,1501,1504,1510,1513,1519,1523],[13,1453,1454,1455,37],{},"Ceci est un petit mémo pour me permettre de ne pas oublier quelques\nastuces lors de la programmation avec Qt. En parlant de cela, je me suis\ncommandé le livre suivant : ",[29,1456,1459],{"href":1457,"rel":1458},"http:\u002F\u002Fwww.amazon.fr\u002FGUI-Programming-Qt4-Jasmin-Blanchette\u002Fdp\u002F0132354160\u002Fref=sr_11_1?ie=UTF8&qid=1199972515&sr=11-1",[157],"C++ GUI Programming with Qt4",[335,1461,1463],{"id":1462},"qabstractitemmodel","QAbstractItemModel",[67,1465,1466,1469],{},[70,1467,1468],{},"Lors de l'insertion (avec beginInsertRows()), les éléments insérés\nne doivent pas contenir de sous éléments (rowCount() == 0) sous\npeine de causer des plantages.",[70,1470,1471,1472,1477,1478],{},"Un model de donnée interne, pouvant être utilisé avec\nQAbstractItemModel pour afficher une arborescence et étant capable\nde se rafraîchir à la lecture d'un fichier, se trouve dans les\nfichiers ",[29,1473,1476],{"href":1474,"rel":1475},"http:\u002F\u002Fhg.shadoware.org\u002FSoftware\u002FXINX\u002Fxinx\u002Ffiles\u002F53bd629daf731398437a8c2f328e7b4015a013ca\u002Flibxinx\u002Ffilecontentstructure.cpp",[157],"filecontentstructure.cpp"," et ",[29,1479,1482],{"href":1480,"rel":1481},"http:\u002F\u002Fhg.shadoware.org\u002FSoftware\u002FXINX\u002Fxinx\u002Ffiles\u002F53bd629daf731398437a8c2f328e7b4015a013ca\u002Flibxinx\u002Ffilecontentstructure.h",[157],"filecontentstructure.h",[335,1484,1486],{"id":1485},"cmake-et-qt","CMake et Qt",[387,1488,1490],{"id":1489},"compilation-dune-librairie-static","Compilation d'une librairie static",[351,1492,1495],{"className":1493,"code":1494,"language":704},[702],"add_definitions(-DQT_SHARED)\nadd_library(xinxplugins STATIC ${xinxplugins_SRCS} ${xinxplugins_MOC_SRCS})\n",[343,1496,1494],{"__ignoreMap":34},[387,1498,1500],{"id":1499},"compilation-dun-plugin","Compilation d'un plugin",[685,1502,1503],{"id":1503},"dynamique",[351,1505,1508],{"className":1506,"code":1507,"language":704},[702],"add_definitions(${QT_DEFINITIONS})\nadd_definitions(-DQT_PLUGIN)\nadd_definitions(-DQT_NO_DEBUG)\nadd_definitions(-DQT_SHARED)\nadd_library(webplugin SHARED ${webplugin_SRCS} ${webplugin_MOC_SRCS})\n",[343,1509,1507],{"__ignoreMap":34},[685,1511,1512],{"id":1512},"static",[351,1514,1517],{"className":1515,"code":1516,"language":704},[702],"?\n",[343,1518,1516],{"__ignoreMap":34},[387,1520,1522],{"id":1521},"compilation-de-fichier-rc-pour-windows","Compilation de fichier RC pour Windows",[351,1524,1527],{"className":1525,"code":1526,"language":704},[702],"if(WIN32)\n    add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}\u002Fxinx_ico.obj\n           COMMAND windres.exe -I${CMAKE_CURRENT_SOURCE_DIR} -o ${CMAKE_CURRENT_BINARY_DIR}\u002Fxinx_ico.obj -i${CMAKE_CURRENT_SOURCE_DIR}\u002F${xinx_RCS}\n    )\n    set(xinx_RESS ${CMAKE_CURRENT_BINARY_DIR}\u002Fxinx_ico.obj)\nendif(WIN32)\n",[343,1528,1526],{"__ignoreMap":34},{"title":34,"searchDepth":167,"depth":167,"links":1530},[1531,1532],{"id":1462,"depth":428,"text":1463},{"id":1485,"depth":428,"text":1486},"2008-01-21","Ceci est un petit mémo pour me permettre de ne pas oublier quelques\nastuces lors de la programmation avec Qt. En parlant de cela, je me suis\ncommandé le livre suivant : C++ GUI Programming with Qt4.",{"type":10,"value":1536},[1537,1542,1544],[13,1538,1454,1539,37],{},[29,1540,1459],{"href":1457,"rel":1541},[157],[335,1543,1463],{"id":1462},[67,1545,1546,1548],{},[70,1547,1468],{},[70,1549,1471,1550,1477,1553],{},[29,1551,1476],{"href":1474,"rel":1552},[157],[29,1554,1482],{"href":1480,"rel":1555},[157],{},"\u002Fpost\u002Fmemo-qt",{"title":1449,"description":1534},"memo-qt","posts\u002FProgrammation\u002F2008-01-21-memo-qt",[198],"LurBRat5GKyW_n9EoVty1Vi5WkYd8uVKKIfb9AwdIE4",{"id":1564,"title":1565,"author":8,"body":1566,"category":1637,"categorySlug":1736,"date":1737,"description":34,"excerpt":1738,"extension":189,"location":190,"meta":1764,"navigation":192,"path":1765,"published":192,"seo":1766,"slug":1767,"stem":1768,"tags":1769,"timeToRead":428,"__hash__":1772},"posts\u002Fposts\u002FKMDAlert\u002F2007-08-17-kmdalert-logiciel-de-surveillance-raid.md","KMDAlert - Logiciel de surveillance de périphériques RAID",{"type":10,"value":1567,"toc":1728},[1568,1572,1579,1585,1593,1604,1607,1610,1613,1617,1639,1642,1645,1648,1652,1655,1681,1684,1688,1696,1700,1718,1722,1725],[141,1569,1571],{"id":1570},"présentation","Présentation",[13,1573,1574,1575,1578],{},"Possédant chez moi des disques durs en RAID logiciel ",[17,1576,1577],{},"Gnu\u002FLinux",", j'ai\ntoujours ressenti le besoin d'avoir une application graphique minimale\npour m'avertir des changements d'états du RAID. (Par exemple un disque\ndur est défectueux, le RAID est dégradé, le RAID est en reconstruction).\nEt, par exemple, dans le cas de la reconstruction être averti à la fin\nde la reconstruction.",[13,1580,1581,1582,1584],{},"KMDAlert est un petit logiciel ",[17,1583,1577],{}," que j'ai écrit, et permettant\nd'afficher des informations sur les volumes RAID (gérés à l'aide du\nmodule noyau md-mod) dans la boîte à miniature (SystemTray).",[13,1586,1587,1588,1592],{},"L'icône change suivant l'état du RAID (",[1589,1590,1591],"ins",{},"ATTENTION : Les icônes\nchoisies sont moches, si un graphiste veut me proposer d'autres icônes,\nje reste ouvert aux propositions",") :",[67,1594,1595,1598,1601],{},[70,1596,1597],{},"dégradé",[70,1599,1600],{},"en cours de synchronisation",[70,1602,1603],{},"ou tout simplement Ok.",[13,1605,1606],{},"Des messages de notifications informent aussi l'utilisateur du\nchangement d'état d'un disque sur le RAID (par exemple le disque est en\néchec, supprimé, ajouté, la synchronisation démarre ou est terminée).",[13,1608,1609],{},"Le logiciel est actuellement uniquement disponible pour KDE 3. Je\nn'ai pas encore pris le temps de la ré-écrire.",[13,1611,1612],{},"Bien que cette application a été écrite dans mon cas particulier (un\nRAID 1) je me suis dit qu'elle devrait fonctionner pour les autres types\nde RAID et intéresser d'autres personnes.",[141,1614,1616],{"id":1615},"requis","Requis",[13,1618,1619,1620,1623,1624,1627,1628,1268,1631,1634,1635,1638],{},"Pour fonctionner KMDAlert nécessite que le dossier ",[343,1621,1622],{},"\u002Fsys"," soit monté et\nque ",[343,1625,1626],{},"\u002Fsys\u002Fblock\u002F"," soit renseigné pour chaque volume RAID (exemple\n",[343,1629,1630],{},"\u002Fsys\u002Fblock\u002Fmd0",[343,1632,1633],{},"\u002Fsys\u002Fblock\u002Fmd1",", ...). ",[343,1636,1637],{},"KMDAlert"," observe ensuite les\nmodifications faites sur les fichiers pour informer l'utilisateur des\nmodifications faites sur le volume RAID ou sur les disques le composant.",[13,1640,1641],{},"L'application a été développée sur Gnu\u002FDebian Etch donc sur un KDE 3.5\navec un noyau 2.6.18.",[13,1643,1644],{},"KMDAlert ne nécessite pas de Inotify. KMDAlert lit le contenu de\nplusieurs fichiers dans le dossier \u002Fsys toutes les 6 secondes pour être\ninformé de la modification de l'état du périphérique. En effet sur le\nnoyau 2.6.18 que je possède, Inotify n'est pas averti des modifications\nfaites sur le système de fichier \u002Fsys. Les dates de ces fichiers ne sont\npas non plus modifiées. Si quelqu'un a une autre méthode à me proposer,\nje reste ouvert à toutes propositions.",[13,1646,1647],{},"KMDAlert est une application écrite en utilisant les librairies de KDE,\nmais devrait tout de même fonctionner sous Gnome. Les messages de\nnotification utilisent donc le système de notification de KDE (bien que\nje n'utilise pas toutes ses possibilités).",[141,1649,1651],{"id":1650},"compilation-installation","Compilation \u002F Installation",[13,1653,1654],{},"La compilation et l'installation de KMDAlert se fait à l'aide du trio\nhabituel :",[351,1656,1658],{"className":353,"code":1657,"language":355,"meta":34,"style":34},".\u002Fconfigure --prefix=\u002Fusr\u002Flocal\u002F\nmake\nmake install\n",[343,1659,1660,1668,1673],{"__ignoreMap":34},[359,1661,1662,1665],{"class":361,"line":199},[359,1663,1664],{"class":364},".\u002Fconfigure",[359,1666,1667],{"class":590}," --prefix=\u002Fusr\u002Flocal\u002F\n",[359,1669,1670],{"class":361,"line":167},[359,1671,1672],{"class":364},"make\n",[359,1674,1675,1678],{"class":361,"line":428},[359,1676,1677],{"class":364},"make",[359,1679,1680],{"class":368}," install\n",[13,1682,1683],{},"La compilation nécessite les librairies de développement KDE et Qt3,\nainsi que le compilateur GCC.",[141,1685,1687],{"id":1686},"licence","Licence",[13,1689,1690,1691],{},"La licence choisie est la ",[29,1692,1695],{"href":1693,"rel":1694},"http:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.txt",[157],"GNU GENERAL PUBLIC LICENSE",[141,1697,1699],{"id":1698},"téléchargement","Téléchargement",[67,1701,1702,1710],{},[70,1703,1704,1705,37],{},"Vous pouvez télécharger une archive déjà construite de l'application\nsur ",[29,1706,1709],{"href":1707,"rel":1708},"http:\u002F\u002Fkde-apps.org\u002Fcontent\u002Fshow.php\u002FKMDAlert?content=73373",[157],"KDE-Apps.org",[70,1711,1712,1713,37],{},"Le dépot officiel pour télécharger les sources et participer :\n",[29,1714,1717],{"href":1715,"rel":1716},"https:\u002F\u002Fgogs.shadoware.org\u002Fphoenix\u002Fkmdalert?pk_campaign=shadoware",[157],"https:\u002F\u002Fgogs.shadoware.org\u002Fphoenix\u002Fkmdalert",[141,1719,1721],{"id":1720},"système-de-suivi","Système de suivi",[13,1723,1724],{},"Il n'y a actuellement plus de système de suivi pour ce logiciel. En cas\nde problème, vous pouvez laisser un message dans les commentaires ou\nm'envoyer un mail.",[1383,1726,1727],{},"html pre.shiki code .sVbv2, html code.shiki .sVbv2{--shiki-default:#61AFEF}html pre.shiki code .sVC51, html code.shiki .sVC51{--shiki-default:#D19A66}html pre.shiki code .subq3, html code.shiki .subq3{--shiki-default:#98C379}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":34,"searchDepth":167,"depth":167,"links":1729},[1730,1731,1732,1733,1734,1735],{"id":1570,"depth":167,"text":1571},{"id":1615,"depth":167,"text":1616},{"id":1650,"depth":167,"text":1651},{"id":1686,"depth":167,"text":1687},{"id":1698,"depth":167,"text":1699},{"id":1720,"depth":167,"text":1721},"kmdalert","2007-08-17",{"type":10,"value":1739},[1740,1742,1746,1750,1754,1762],[141,1741,1571],{"id":1570},[13,1743,1574,1744,1578],{},[17,1745,1577],{},[13,1747,1581,1748,1584],{},[17,1749,1577],{},[13,1751,1587,1752,1592],{},[1589,1753,1591],{},[67,1755,1756,1758,1760],{},[70,1757,1597],{},[70,1759,1600],{},[70,1761,1603],{},[13,1763,1606],{},{},"\u002Fpost\u002Fkmdalert-logiciel-de-surveillance-raid",{"title":1565,"description":34},"kmdalert-logiciel-de-surveillance-raid","posts\u002FKMDAlert\u002F2007-08-17-kmdalert-logiciel-de-surveillance-raid",[1770,198,1736,1771],"kde","raid","PNNDW_nxCgCKf7lh8X7JuMHGPhrQnNwu5riYqVB4k-U",{"id":1774,"title":1775,"author":8,"body":1776,"category":2808,"categorySlug":2809,"date":2810,"description":2811,"excerpt":2812,"extension":189,"location":190,"meta":2858,"navigation":192,"path":2859,"published":192,"seo":2860,"slug":2861,"stem":2862,"tags":2863,"timeToRead":475,"__hash__":2864},"posts\u002Fposts\u002FSysAdmin\u002F2007-08-04-debian-etch-cle-usb.md","Debian etch - Clé USB",{"type":10,"value":1777,"toc":2800},[1778,1785,1794,1797,1824,1833,1847,1851,1855,1861,1895,1897,1910,1916,1930,1934,1938,1941,1957,1978,1991,1997,2000,2084,2088,2096,2300,2304,2311,2326,2330,2333,2337,2344,2350,2369,2380,2385,2403,2407,2422,2428,2434,2438,2444,2450,2456,2460,2473,2512,2529,2533,2577,2591,2597,2601,2604,2655,2659,2674,2692,2702,2708,2714,2720,2724,2740,2746,2750,2753,2759,2797],[13,1779,1780,1781,1784],{},"Il peut être parfois utile de se déplacer ici et là avec une\ndistribution Linux ",[17,1782,1783],{},"clé en main"," sans se trimbaler toujours avec un\nordinateur portable ou un CD.",[13,1786,1787,1788,1793],{},"La clé USB devient alors très utile atteignant aujourd'hui des tailles\nde l'ordre de 2G pour pas trop cher",[26,1789,1790],{},[29,1791,36],{"href":31,"ariaDescribedBy":1792,"dataFootnoteRef":34,"id":35},[33],". De petite taille, elle\npeut être utilisée dans des endroits ayant des ordinateurs avec un\nsystème d'exploitation propriétaire (ou un autre système libre, ou même\npas sans système) mais permettant de démarrer sur un périphérique\nexterne (une clé USB par exemple).",[13,1795,1796],{},"L'utilité peut-être variable :",[67,1798,1799,1802,1815,1818,1821],{},[70,1800,1801],{},"Surfer avec une plus grande tranquillité",[70,1803,1804,1805,1268,1808,1268,1811,1814],{},"Utiliser ses logiciels favoris ( ",[343,1806,1807],{},"Amarok",[343,1809,1810],{},"KMyMoney",[343,1812,1813],{},"KDevelop",",\n... )",[70,1816,1817],{},"Utiliser une interface graphique, bien sûr, meilleure.",[70,1819,1820],{},"Utiliser dans un système embarqué.",[70,1822,1823],{},"Tester les ordinateurs portables dans les magasins",[13,1825,1826,1827,1832],{},"J'ai trouvé différents sites, tel que ",[29,1828,1831],{"href":1829,"rel":1830},"http:\u002F\u002Fwww.breizh-ardente.fr\u002Fdotclear\u002Findex.php?2006\u002F12\u002F03\u002F57-usbuntu-ou-comment-installer-ubuntu-sur-un-disque-clef-usb-en-mode-persistant",[157],"Ubuntu en mode persistant","\npermettant d'installer une distribution Ubuntu sur une clé USB ou un\ndisque dur USB.L'inconvénient de cette méthode est qu'il n'est pas\npossible d'installer uniquement ce que l'on souhaite partant\nobligatoirement d'une base LiveCD.",[13,1834,1835,1836,1477,1841,1846],{},"Ensuite j'ai trouvé d'autres sites, tels que ",[29,1837,1840],{"href":1838,"rel":1839},"http:\u002F\u002Fferaga.com\u002Fnode\u002F25",[157],"Howto Install a Debian\nGNU\u002FLinux system onto a USB flash thumb drive",[29,1842,1845],{"href":1843,"rel":1844},"http:\u002F\u002Fwww.debian-administration.org\u002Farticles\u002F179",[157],"Installing Debian\nonto USB flash media with everything encrypted."," dont je me suis\ninspiré pour écrire ce tutoriel.",[335,1848,1850],{"id":1849},"préparation-de-la-clé","Préparation de la clé",[387,1852,1854],{"id":1853},"modules","Modules",[13,1856,1857,1858,1860],{},"Afin de pouvoir accéder à la clé USB, il faut bien évidemment avoir\nchargé sur sa machine ",[17,1859,1577],{}," les modules adéquates :",[351,1862,1864],{"className":353,"code":1863,"language":355,"meta":34,"style":34},"modprobe ehci_hcd\nmodprobe ohci_hcd\nmodprobe usbhid\nmodprobe usb_storage\n",[343,1865,1866,1874,1881,1888],{"__ignoreMap":34},[359,1867,1868,1871],{"class":361,"line":199},[359,1869,1870],{"class":364},"modprobe",[359,1872,1873],{"class":368}," ehci_hcd\n",[359,1875,1876,1878],{"class":361,"line":167},[359,1877,1870],{"class":364},[359,1879,1880],{"class":368}," ohci_hcd\n",[359,1882,1883,1885],{"class":361,"line":428},[359,1884,1870],{"class":364},[359,1886,1887],{"class":368}," usbhid\n",[359,1889,1890,1892],{"class":361,"line":434},[359,1891,1870],{"class":364},[359,1893,1894],{"class":368}," usb_storage\n",[387,1896,170],{"id":171},[13,1898,1899,1900,1902,1903,1906,1907],{},"Nous allons considérer que nous sommes sur un système à base de\n",[17,1901,323],{}," (",[17,1904,1905],{},"Ubuntu"," devrait pouvoir faire l'affaire). Si vous avez un\nautre système, il vous faut trouver un moyen d'installer le programme\n",[343,1908,1909],{},"debootstrap",[13,1911,1912,1913,1915],{},"Sur un système ",[17,1914,323],{},", il vous suffit de taper la commande, si le\nprogramme n'est pas déjà installé :",[351,1917,1919],{"className":353,"code":1918,"language":355,"meta":34,"style":34},"aptitude install debootstrap\n",[343,1920,1921],{"__ignoreMap":34},[359,1922,1923,1925,1927],{"class":361,"line":199},[359,1924,365],{"class":364},[359,1926,369],{"class":368},[359,1928,1929],{"class":368}," debootstrap\n",[335,1931,1933],{"id":1932},"installation-du-système-de-base","Installation du système de base",[387,1935,1937],{"id":1936},"partitionnement-de-la-clé-usb","Partitionnement de la clé USB",[13,1939,1940],{},"En premier lieu il faut effectuer le partitionnement de la clé USB.\nSelon sa taille et aussi de la quantité de logiciel que vous voulez\ninstaller il faudra prévoir plus ou moins de place.",[13,1942,1943,1944,1268,1947,1268,1950,1268,1953,1956],{},"Pour le partitionnement vous pouvez utiliser votre utilitaire favori\n(",[343,1945,1946],{},"parted",[343,1948,1949],{},"qtparted",[343,1951,1952],{},"fdisk",[343,1954,1955],{},"cfdisk",", ...). Le partitionnement que\nj'ai effectué pour ma propre clé est le suivant :",[147,1958,1959,1966,1972],{},[70,1960,1961,1962],{},"50Mo pour la partition ",[1963,1964,1965],"strong",{},"\u002Fboot",[70,1967,1968,1969],{},"1,5Go pour la partition ",[1963,1970,1971],{},"\u002F",[70,1973,1974,1975],{},"le reste pour la partition ",[1963,1976,1977],{},"\u002Fhome",[13,1979,1980,1981,1983,1984,1986,1987,1990],{},"La partition ",[1963,1982,1977],{}," a été séparée afin de pouvoir mettre la partie\n",[1963,1985,1971],{}," de la clé USB en ",[17,1988,1989],{},"lecture seule"," (étape que je n'ai pas encore\neffectuée).",[351,1992,1995],{"className":1993,"code":1994,"language":704},[702],"Disk \u002Fdev\u002Fusb\u002Fk2g: 2024 MB, 2024275968 bytes\n63 heads, 62 sectors\u002Ftrack, 1012 cylinders\nUnits = cylinders of 3906 * 512 = 1999872 bytes\n\n        Device Boot      Start         End      Blocks   Id  System\n\u002Fdev\u002Fsda1                   1          26       50747   83  Linux\n\u002Fdev\u002Fsda2                  27         827     1564353   83  Linux\n\u002Fdev\u002Fsda3                 828        1012      361305   83  Linux\n",[343,1996,1994],{"__ignoreMap":34},[13,1998,1999],{},"Une fois les partitions créées vous pouvez les formater pour les\nutiliser.",[351,2001,2003],{"className":353,"code":2002,"language":355,"meta":34,"style":34},"mke2fs \u002Fdev\u002Fsda1 -L live-boot\nmke2fs \u002Fdev\u002Fsda2 -L live-root\nmke2fs \u002Fdev\u002Fsda3 -L live-home\nmount \u002Fdev\u002Fsda2 \u002Fmnt\nmkdir \u002Fmnt\u002Fboot\nmkdir \u002Fmnt\u002Fhome\nmount \u002Fdev\u002Fsda1 \u002Fmnt\u002Fboot\nmount \u002Fdev\u002Fsda3 \u002Fmnt\u002Fhome\n",[343,2004,2005,2019,2031,2043,2053,2061,2068,2076],{"__ignoreMap":34},[359,2006,2007,2010,2013,2016],{"class":361,"line":199},[359,2008,2009],{"class":364},"mke2fs",[359,2011,2012],{"class":368}," \u002Fdev\u002Fsda1",[359,2014,2015],{"class":590}," -L",[359,2017,2018],{"class":368}," live-boot\n",[359,2020,2021,2023,2026,2028],{"class":361,"line":167},[359,2022,2009],{"class":364},[359,2024,2025],{"class":368}," \u002Fdev\u002Fsda2",[359,2027,2015],{"class":590},[359,2029,2030],{"class":368}," live-root\n",[359,2032,2033,2035,2038,2040],{"class":361,"line":428},[359,2034,2009],{"class":364},[359,2036,2037],{"class":368}," \u002Fdev\u002Fsda3",[359,2039,2015],{"class":590},[359,2041,2042],{"class":368}," live-home\n",[359,2044,2045,2048,2050],{"class":361,"line":434},[359,2046,2047],{"class":364},"mount",[359,2049,2025],{"class":368},[359,2051,2052],{"class":368}," \u002Fmnt\n",[359,2054,2055,2058],{"class":361,"line":440},[359,2056,2057],{"class":364},"mkdir",[359,2059,2060],{"class":368}," \u002Fmnt\u002Fboot\n",[359,2062,2063,2065],{"class":361,"line":446},[359,2064,2057],{"class":364},[359,2066,2067],{"class":368}," \u002Fmnt\u002Fhome\n",[359,2069,2070,2072,2074],{"class":361,"line":451},[359,2071,2047],{"class":364},[359,2073,2012],{"class":368},[359,2075,2060],{"class":368},[359,2077,2078,2080,2082],{"class":361,"line":457},[359,2079,2047],{"class":364},[359,2081,2037],{"class":368},[359,2083,2067],{"class":368},[387,2085,2087],{"id":2086},"installation-à-laide-de-debootstrap","Installation à l'aide de debootstrap",[13,2089,2090,2091,2093,2094,727],{},"Une fois les partitions montées on peut installer le système\n",[17,2092,323],{}," sur la clé USB en utilisant l'utilitaire ",[343,2095,1909],{},[351,2097,2099],{"className":353,"code":2098,"language":355,"meta":34,"style":34},"> debootstrap --arch i386 etch \u002Fmnt\u002F ftp:\u002F\u002Fftp2.fr.debian.org\u002Fdebian\u002F\nI: Retrieving Release\nI: Retrieving Packages\nI: Validating Packages\nI:  Resolving dependencies of required packages...\nI: Resolving dependencies of base packages...\nI: Found additional base dependencies: libdb4.2 libgnutls12 libreadline5\n    libsigc++-2.0-0c2a openbsd-inetd readline-common\nI: Checking component main on http:\u002F\u002Fftp.debian.org\u002Fdebian...\nI: Retrieving adduser\n...\nI: Configuring gnupg...\nI: Configuring sysklogd...\nI: Configuring klogd...\nI: Configuring netbase...\nI: Configuring openbsd-inetd...\nI: Base system installed successfully.\n",[343,2100,2101,2106,2117,2126,2135,2154,2170,2194,2205,2224,2233,2238,2248,2257,2266,2275,2284],{"__ignoreMap":34},[359,2102,2103],{"class":361,"line":199},[359,2104,2105],{"class":780},"> debootstrap --arch i386 etch \u002Fmnt\u002F ftp:\u002F\u002Fftp2.fr.debian.org\u002Fdebian\u002F\n",[359,2107,2108,2111,2114],{"class":361,"line":167},[359,2109,2110],{"class":364},"I:",[359,2112,2113],{"class":368}," Retrieving",[359,2115,2116],{"class":368}," Release\n",[359,2118,2119,2121,2123],{"class":361,"line":428},[359,2120,2110],{"class":364},[359,2122,2113],{"class":368},[359,2124,2125],{"class":368}," Packages\n",[359,2127,2128,2130,2133],{"class":361,"line":434},[359,2129,2110],{"class":364},[359,2131,2132],{"class":368}," Validating",[359,2134,2125],{"class":368},[359,2136,2137,2139,2142,2145,2148,2151],{"class":361,"line":440},[359,2138,2110],{"class":364},[359,2140,2141],{"class":368},"  Resolving",[359,2143,2144],{"class":368}," dependencies",[359,2146,2147],{"class":368}," of",[359,2149,2150],{"class":368}," required",[359,2152,2153],{"class":368}," packages...\n",[359,2155,2156,2158,2161,2163,2165,2168],{"class":361,"line":446},[359,2157,2110],{"class":364},[359,2159,2160],{"class":368}," Resolving",[359,2162,2144],{"class":368},[359,2164,2147],{"class":368},[359,2166,2167],{"class":368}," base",[359,2169,2153],{"class":368},[359,2171,2172,2174,2177,2180,2182,2185,2188,2191],{"class":361,"line":451},[359,2173,2110],{"class":364},[359,2175,2176],{"class":368}," Found",[359,2178,2179],{"class":368}," additional",[359,2181,2167],{"class":368},[359,2183,2184],{"class":368}," dependencies:",[359,2186,2187],{"class":368}," libdb4.2",[359,2189,2190],{"class":368}," libgnutls12",[359,2192,2193],{"class":368}," libreadline5\n",[359,2195,2196,2199,2202],{"class":361,"line":457},[359,2197,2198],{"class":364},"    libsigc++-2.0-0c2a",[359,2200,2201],{"class":368}," openbsd-inetd",[359,2203,2204],{"class":368}," readline-common\n",[359,2206,2207,2209,2212,2215,2218,2221],{"class":361,"line":463},[359,2208,2110],{"class":364},[359,2210,2211],{"class":368}," Checking",[359,2213,2214],{"class":368}," component",[359,2216,2217],{"class":368}," main",[359,2219,2220],{"class":368}," on",[359,2222,2223],{"class":368}," http:\u002F\u002Fftp.debian.org\u002Fdebian...\n",[359,2225,2226,2228,2230],{"class":361,"line":469},[359,2227,2110],{"class":364},[359,2229,2113],{"class":368},[359,2231,2232],{"class":368}," adduser\n",[359,2234,2235],{"class":361,"line":475},[359,2236,2237],{"class":579},"...\n",[359,2239,2240,2242,2245],{"class":361,"line":481},[359,2241,2110],{"class":364},[359,2243,2244],{"class":368}," Configuring",[359,2246,2247],{"class":368}," gnupg...\n",[359,2249,2250,2252,2254],{"class":361,"line":487},[359,2251,2110],{"class":364},[359,2253,2244],{"class":368},[359,2255,2256],{"class":368}," sysklogd...\n",[359,2258,2259,2261,2263],{"class":361,"line":493},[359,2260,2110],{"class":364},[359,2262,2244],{"class":368},[359,2264,2265],{"class":368}," klogd...\n",[359,2267,2268,2270,2272],{"class":361,"line":499},[359,2269,2110],{"class":364},[359,2271,2244],{"class":368},[359,2273,2274],{"class":368}," netbase...\n",[359,2276,2277,2279,2281],{"class":361,"line":505},[359,2278,2110],{"class":364},[359,2280,2244],{"class":368},[359,2282,2283],{"class":368}," openbsd-inetd...\n",[359,2285,2286,2288,2291,2294,2297],{"class":361,"line":510},[359,2287,2110],{"class":364},[359,2289,2290],{"class":368}," Base",[359,2292,2293],{"class":368}," system",[359,2295,2296],{"class":368}," installed",[359,2298,2299],{"class":368}," successfully.\n",[387,2301,2303],{"id":2302},"dans-un-chroot","Dans un Chroot",[13,2305,2306,2307,2310],{},"Les opérations suivantes sont à faire sur l'environnement de\ndestination, il faut donc utiliser la commande ",[343,2308,2309],{},"chroot"," pour s'y placer.",[351,2312,2314],{"className":353,"code":2313,"language":355,"meta":34,"style":34},"chroot \u002Fmnt '\u002Fbin\u002Fbash -i'\n",[343,2315,2316],{"__ignoreMap":34},[359,2317,2318,2320,2323],{"class":361,"line":199},[359,2319,2309],{"class":364},[359,2321,2322],{"class":368}," \u002Fmnt",[359,2324,2325],{"class":368}," '\u002Fbin\u002Fbash -i'\n",[387,2327,2329],{"id":2328},"noyaux","Noyaux",[13,2331,2332],{},"Une fois le système de base installé, il faut le configurer et y ajouter\nde quoi démarrer la clé USB.",[685,2334,2336],{"id":2335},"ajustement-et-systèmes-de-fichiers-etcfstab","Ajustement et systèmes de fichiers : \u002Fetc\u002Ffstab",[13,2338,2339,2340,2343],{},"Cela dépend de votre configuration, et du partitionnement que vous avez\nfait. Si vous avez fait le même partitionnement que moi vous devriez\navoir un ",[1963,2341,2342],{},"fstab"," ressemblant à celui là :",[351,2345,2348],{"className":2346,"code":2347,"language":704},[702],"#\u002Fetc\u002Ffstab: static file system informations.\n#\nLABEL=live-root    \u002F           ext2    defaults,errors=remount-ro,noatime  0   1\nLABEL=live-boot    \u002Fboot           ext2    defaults,noatime,ro         0   2\nLABEL=live-home    \u002Fhome           ext2    defaults,noatime            0   2\nproc       \u002Fproc           proc    defaults                0   0\n#tmpfs     \u002Fetc\u002Fnetwork\u002Frun    tmpfs   defaults,noatime            0   0\ntmpfs      \u002Ftmp            tmpfs   defaults,noatime            0   0\ntmpfs      \u002Fvar\u002Flock       tmpfs   defaults,noatime            0   0\ntmpfs      \u002Fvar\u002Flog        tmpfs   defaults,noatime            0   0\ntmpfs      \u002Fvar\u002Frun        tmpfs   defaults,noatime            0   0\ntmpfs      \u002Fvar\u002Ftmp        tmpfs   defaults,noatime            0   0\n",[343,2349,2347],{"__ignoreMap":34},[13,2351,2352,2353,2356,2357,2359,2360,2365,2366,37],{},"J'utilise le label de la partition au lieu d'utiliser le ",[17,2354,2355],{},"block device",".\nL'utilisation du ",[17,2358,2355],{}," peut gêner si la clé USB n'est pas\ntoujours détectée dans le même ordre",[26,2361,2362],{},[29,2363,272],{"href":269,"ariaDescribedBy":2364,"dataFootnoteRef":34,"id":271},[33],".Les dossiers temporaires\nsont tous reportés dans un système de fichier virtuel (en mémoire) à\nl'aide de ",[343,2367,2368],{},"tmpfs",[13,2370,2371,2372,2375,2376,2379],{},"Une fois le fichier ",[1963,2373,2374],{},"\u002Fetc\u002Ffstab"," configuré, il ne reste plus qu'à\nmonter les partitions. Pour monter les partitions un simple ",[343,2377,2378],{},"mount -a","\nle fait. Il est aussi possible de monter les partitions une à une.",[13,2381,2382,727],{},[1589,2383,2384],{},"Il est possible que la commande suivante faite hors du chroot\npuisse résoudre certain problème si l'application utilise udev,\n...",[351,2386,2388],{"className":353,"code":2387,"language":355,"meta":34,"style":34},"mount --bind \u002Fdev\u002F \u002Fmnt\u002Fdev\u002F\n",[343,2389,2390],{"__ignoreMap":34},[359,2391,2392,2394,2397,2400],{"class":361,"line":199},[359,2393,2047],{"class":364},[359,2395,2396],{"class":590}," --bind",[359,2398,2399],{"class":368}," \u002Fdev\u002F",[359,2401,2402],{"class":368}," \u002Fmnt\u002Fdev\u002F\n",[685,2404,2406],{"id":2405},"le-réseau-etchostname-etchosts","Le réseau : \u002Fetc\u002Fhostname \u002Fetc\u002Fhosts",[13,2408,2409,2410,2413,2414,2417,2418,2421],{},"Le fichier ",[1963,2411,2412],{},"\u002Fetc\u002Fhosts"," doit contenir une ligne indiquant l'adresse du\n",[17,2415,2416],{},"loopback"," et le nom de la machine. Ceci afin que ",[17,2419,2420],{},"KDE"," par exemple\npuisse démarrer :",[351,2423,2426],{"className":2424,"code":2425,"language":704},[702],"127.0.0.1       localhost.localdomain   localhost  liveding\n",[343,2427,2425],{"__ignoreMap":34},[13,2429,694,2430,2433],{},[1963,2431,2432],{},"\u002Fetc\u002Fhostname"," il faut également mettre le nom de la\nmachine.",[685,2435,2437],{"id":2436},"apt-etcaptsourceslist","Apt : \u002Fetc\u002Fapt\u002Fsources.list",[13,2439,2409,2440,2443],{},[1963,2441,2442],{},"sources.list"," contient les lignes par défaut suivantes :",[351,2445,2448],{"className":2446,"code":2447,"language":704},[702],"# etch\ndeb ftp:\u002F\u002Fftp2.fr.debian.org\u002Fdebian\u002F etch main contrib non-free\ndeb-src ftp:\u002F\u002Fftp2.fr.debian.org\u002Fdebian\u002F etch main contrib\ndeb http:\u002F\u002Fsecurity.debian.org\u002F etch\u002Fupdates main\ndeb-src http:\u002F\u002Fsecurity.debian.org\u002F etch\u002Fupdates main\n\n# etch unofficial\ndeb http:\u002F\u002Fftp.debian-unofficial.org\u002Fdebian etch main contrib non-free restricted\n",[343,2449,2447],{"__ignoreMap":34},[13,2451,2452,2453,2455],{},"Ces lignes permettent de télécharger les paquets par défaut de\n",[17,2454,323],{}," ainsi que les paquets de sécurité, et les paquets non\nofficiels permettant d'activer certaine fonctionnalité.",[685,2457,2459],{"id":2458},"initrd-etckernel-imgconf","Initrd : \u002Fetc\u002Fkernel-img.conf",[13,2461,694,2462,2465,2466,2468,2469,2472],{},[1963,2463,2464],{},"\u002Fetc\u002Fkernel-img.conf"," on enregistre les informations\nsuivantes (afin que ",[17,2467,323],{}," crée un fichier ",[343,2470,2471],{},"initrd"," lors de\nl'installation du noyau) :",[351,2474,2478],{"className":2475,"code":2476,"language":2477,"meta":34,"style":34},"language-ini shiki shiki-themes one-dark-pro","# Kernel Image management overrides\n# See kernel-img.conf(5) for details\ndo_symlinks = Yes\ndo_initrd = yes\n","ini",[343,2479,2480,2485,2490,2502],{"__ignoreMap":34},[359,2481,2482],{"class":361,"line":199},[359,2483,2484],{"class":737},"# Kernel Image management overrides\n",[359,2486,2487],{"class":361,"line":167},[359,2488,2489],{"class":737},"# See kernel-img.conf(5) for details\n",[359,2491,2492,2496,2499],{"class":361,"line":428},[359,2493,2495],{"class":2494},"seHd6","do_symlinks",[359,2497,2498],{"class":780}," =",[359,2500,2501],{"class":368}," Yes\n",[359,2503,2504,2507,2509],{"class":361,"line":434},[359,2505,2506],{"class":2494},"do_initrd",[359,2508,2498],{"class":780},[359,2510,2511],{"class":368}," yes\n",[13,2513,2409,2514,2516,2517,2525,2526,2528],{},[343,2515,2471],{}," permet de charger les modules nécessaires",[26,2518,2519],{},[29,2520,2524],{"href":2521,"ariaDescribedBy":2522,"dataFootnoteRef":34,"id":2523},"#user-content-fn-3",[33],"user-content-fnref-3","3","\nau démarrage de ",[17,2527,1577],{}," sur une clé USB.",[685,2530,2532],{"id":2531},"installation-de-paquet","Installation de paquet",[351,2534,2536],{"className":353,"code":2535,"language":355,"meta":34,"style":34},"aptitude install initrd-tools linux-image-2.6.16-1-686\naptitude install grub\naptitude install localepurge\naptitude clean# localepurge\n",[343,2537,2538,2550,2559,2568],{"__ignoreMap":34},[359,2539,2540,2542,2544,2547],{"class":361,"line":199},[359,2541,365],{"class":364},[359,2543,369],{"class":368},[359,2545,2546],{"class":368}," initrd-tools",[359,2548,2549],{"class":368}," linux-image-2.6.16-1-686\n",[359,2551,2552,2554,2556],{"class":361,"line":167},[359,2553,365],{"class":364},[359,2555,369],{"class":368},[359,2557,2558],{"class":368}," grub\n",[359,2560,2561,2563,2565],{"class":361,"line":428},[359,2562,365],{"class":364},[359,2564,369],{"class":368},[359,2566,2567],{"class":368}," localepurge\n",[359,2569,2570,2572,2575],{"class":361,"line":434},[359,2571,365],{"class":364},[359,2573,2574],{"class":368}," clean#",[359,2576,2567],{"class":368},[13,2578,2579,2580,2582,2583,2586,2587,2590],{},"On installe une image du noyau, ainsi que les outils pour générer\nl'image ",[343,2581,2471],{},". On installe également ",[343,2584,2585],{},"grub"," qui servira à démarrer\nsur la clé USB. Le paquet ",[343,2588,2589],{},"localepurge"," permet quant à lui de nettoyer\nles locales qui prennent un peu trop de place sur la clé USB.\nGénéralement je ne conserve que les locales françaises et anglaises.",[13,2592,2593,2594,2596],{},"Il est aussi possible d'installer quelques paquets comme un serveur\ngraphique, même voir ",[17,2595,2420],{},", ou encore des outils d'administration. On\npeut aussi installer des outils qui pourront permettre de réparer une\nmachine.",[685,2598,2600],{"id":2599},"quelques-ajustements","Quelques ajustements",[13,2602,2603],{},"Afin de ne pas écrire trop souvent sur la clé USB, on remplace quelques\nfichiers.",[351,2605,2607],{"className":353,"code":2606,"language":355,"meta":34,"style":34},"rm -f \u002Fetc\u002Fblkid.tab*\nln -s \u002Fdev\u002Fnull \u002Fetc\u002Fblkid.tab\nrm -f \u002Fetc\u002Fmtab\nln -s \u002Fproc\u002Fmounts \u002Fetc\u002Fmtab\n",[343,2608,2609,2622,2635,2644],{"__ignoreMap":34},[359,2610,2611,2613,2616,2619],{"class":361,"line":199},[359,2612,659],{"class":364},[359,2614,2615],{"class":590}," -f",[359,2617,2618],{"class":368}," \u002Fetc\u002Fblkid.tab",[359,2620,2621],{"class":665},"*\n",[359,2623,2624,2627,2629,2632],{"class":361,"line":167},[359,2625,2626],{"class":364},"ln",[359,2628,600],{"class":590},[359,2630,2631],{"class":368}," \u002Fdev\u002Fnull",[359,2633,2634],{"class":368}," \u002Fetc\u002Fblkid.tab\n",[359,2636,2637,2639,2641],{"class":361,"line":428},[359,2638,659],{"class":364},[359,2640,2615],{"class":590},[359,2642,2643],{"class":368}," \u002Fetc\u002Fmtab\n",[359,2645,2646,2648,2650,2653],{"class":361,"line":434},[359,2647,2626],{"class":364},[359,2649,600],{"class":590},[359,2651,2652],{"class":368}," \u002Fproc\u002Fmounts",[359,2654,2643],{"class":368},[335,2656,2658],{"id":2657},"configuration-de-grub","Configuration de grub",[13,2660,2661,2662,2664,2665,2667,2668,2670,2671,727],{},"Afin que la machine puisse démarrer il faut installer ",[343,2663,2585],{}," sur le\nsecteur de démarrage de la clé USB.Pour cela, on peut quitter le\n",[343,2666,2309],{},". Pour installer ",[343,2669,2585],{}," on peut utiliser ",[343,2672,2673],{},"grub-install",[351,2675,2677],{"className":353,"code":2676,"language":355,"meta":34,"style":34},"grub-install recheck root-directory=\u002Fmnt\u002F \u002Fdev\u002Fsda\n",[343,2678,2679],{"__ignoreMap":34},[359,2680,2681,2683,2686,2689],{"class":361,"line":199},[359,2682,2673],{"class":364},[359,2684,2685],{"class":368}," recheck",[359,2687,2688],{"class":368}," root-directory=\u002Fmnt\u002F",[359,2690,2691],{"class":368}," \u002Fdev\u002Fsda\n",[13,2693,2694,2695,2697,2698,2701],{},"Normalement cela devrait fonctionner ;) mais il est possible, si cela ne\nmarche pas d'essayer de l'installer à l'aide de la commande ",[343,2696,2585],{},"\ndirectement (attention le ",[17,2699,2700],{},"hd1"," est à adapter selon votre\nconfiguration) :",[351,2703,2706],{"className":2704,"code":2705,"language":704},[702],"# grub\ngrub> root (hd1,0)\ngrub> setup (hd1)\n",[343,2707,2705],{"__ignoreMap":34},[13,2709,2710,2711],{},"Il faut également renseigner le fichier ",[1963,2712,2713],{},"\u002Fmnt\u002Fboot\u002Fgrub\u002Fmenu.lst",[351,2715,2718],{"className":2716,"code":2717,"language":704},[702],"# menu.lst - See: grub(8), info grub, update-grub(8)\n#            grub-install(8), grub-floppy(8),\n#            grub-md5-crypt, \u002Fusr\u002Fshare\u002Fdoc\u002Fgrub\n#            and \u002Fusr\u002Fshare\u002Fdoc\u002Fgrub-doc\u002F.\n\n## default num\n# Set the default entry to the entry number NUM. Numbering starts from 0, and\n# the entry number 0 is the default if the command is not used.\n#\n# You can specify 'saved' instead of a number. In this case, the default entry\n# is the entry saved with the command 'savedefault'.\n# WARNING: If you are using dmraid do not change this entry to 'saved' or your\n# array will desync and will not let you boot your system.\ndefault        0\n\n## timeout sec\n# Set a timeout, in SEC seconds, before automatically booting the default entry\n# (normally the first entry defined).\ntimeout        5\n\n# Pretty colours\ncolor cyan\u002Fblue white\u002Fblue\n\n## password '--md5' passwd\n# If used in the first section of a menu file, disable all interactive editing\n# control (menu entry editor and command-line)  and entries protected by the\n# command 'lock'\n# e.g. password topsecret\n#      password --md5 $1$gLhU0\u002F$aW78kHK1QfV3P2b2znUoe\u002F\n# password topsecret\n\n#\n# examples\n#\n# title        Windows 95\u002F98\u002FNT\u002F2000\n# root     (hd0,0)\n# makeactive\n# chainloader  +1\n#\n# title        Linux\n# root     (hd0,1)\n# kernel   \u002Fvmlinuz root=\u002Fdev\u002Fhda2 ro\n#\n\n#\n# Put static boot stanzas before and\u002For after AUTOMAGIC KERNEL LIST\n\n### BEGIN AUTOMAGIC KERNELS LIST\n## lines between the AUTOMAGIC KERNELS LIST markers will be modified\n## by the debian update-grub script except for the default options below\n\n## DO NOT UNCOMMENT THEM, Just edit them to your needs\n\n## ## Start Default Options ##\n## default kernel options\n## default kernel options for automagic boot options\n## If you want special options for specific kernels use kopt_x_y_z\n## where x.y.z is kernel version. Minor versions can be omitted.\n## e.g. kopt=root=\u002Fdev\u002Fhda1 ro\n##      kopt_2_6_8=root=\u002Fdev\u002Fhdc1 ro\n##      kopt_2_6_8_2_686=root=\u002Fdev\u002Fhdc2 ro\n# kopt=root=LABEL=live-root rootdelay=5 ro quiet\n\n## default grub root device\n## e.g. groot=(hd0,0)\n# groot=(hd0,0)\n\n## should update-grub create alternative automagic boot options\n## e.g. alternative=true\n##      alternative=false\n# alternative=true\n\n## should update-grub lock alternative automagic boot options\n## e.g. lockalternative=true\n##      lockalternative=false\n# lockalternative=false\n\n## additional options to use with the default boot option, but not with the\n## alternatives\n## e.g. defoptions=vga=791 resume=\u002Fdev\u002Fhda5\n# defoptions=vga=791\n\n## should update-grub lock old automagic boot options\n## e.g. lockold=false\n##      lockold=true\n# lockold=false\n\n## Xen hypervisor options to use with the default Xen boot option\n# xenhopt=\n\n## Xen Linux kernel options to use with the default Xen boot option\n# xenkopt=console=tty0\n\n## altoption boot targets option\n## multiple altoptions lines are allowed\n## e.g. altoptions=(extra menu suffix) extra boot options\n##      altoptions=(single-user) single\n# altoptions=(single-user mode) single\n\n## controls how many kernels should be put into the menu.lst\n## only counts the first occurence of a kernel, not the\n## alternative kernel options\n## e.g. howmany=all\n##      howmany=7\n# howmany=all\n\n## should update-grub create memtest86 boot option\n## e.g. memtest86=true\n##      memtest86=false\n# memtest86=true\n\n## should update-grub adjust the value of the default booted system\n## can be true or false\n# updatedefaultentry=false\n\n## ## End Default Options ##\n\ntitle      Debian GNU\u002FLinux, kernel 2.6.18-4-686\nroot       (hd0,0)\nkernel     \u002Fvmlinuz-2.6.18-4-686 root=LABEL=live-root rootdelay=5 ro quiet vga=791\ninitrd     \u002Finitrd.img-2.6.18-4-686\nsavedefault\n\ntitle      Debian GNU\u002FLinux, kernel 2.6.18-4-686 (single-user mode)\nroot       (hd0,0)\nkernel     \u002Fvmlinuz-2.6.18-4-686 root=LABEL=live-root rootdelay=5 ro quiet single\ninitrd     \u002Finitrd.img-2.6.18-4-686\nsavedefault\n\n### END DEBIAN AUTOMAGIC KERNELS LIST\n",[343,2719,2717],{"__ignoreMap":34},[335,2721,2723],{"id":2722},"ajout-dun-utilisateur","Ajout d'un utilisateur",[13,2725,2726,2727,2735,2736,2739],{},"Enfin il ne faut pas oublier d'installer un compte\nutilisateur",[26,2728,2729],{},[29,2730,2734],{"href":2731,"ariaDescribedBy":2732,"dataFootnoteRef":34,"id":2733},"#user-content-fn-4",[33],"user-content-fnref-4","4",", ainsi que changer le mot de passe ",[17,2737,2738],{},"root"," à l'aide\ndes commandes :",[351,2741,2744],{"className":2742,"code":2743,"language":704},[702],"chroot \u002Fmnt\npasswd\nadduser toto\n",[343,2745,2743],{"__ignoreMap":34},[335,2747,2749],{"id":2748},"redémarrage-et-test","Redémarrage et test",[13,2751,2752],{},"Il ne reste plus qu'à démonter toutes les partitions et redémarrer la\nmachine.",[351,2754,2757],{"className":2755,"code":2756,"language":704},[702],"umount -a\nexit\nreboot\n",[343,2758,2756],{"__ignoreMap":34},[136,2760,2762,2765],{"className":2761,"dataFootnotes":34},[139],[141,2763,145],{"className":2764,"id":33},[144],[147,2766,2767,2773,2779,2788],{},[70,2768,2769,2770],{"id":151},"J'ai par ailleurs acheté récemment une clé USB de 2Go à cet effet pour à peine 15 euros ",[29,2771,165],{"href":161,"ariaLabel":162,"className":2772,"dataFootnoteBackref":34},[164],[70,2774,2775,2776],{"id":293},"Ce qui peut arriver quand on change de machine par exemple. ",[29,2777,165],{"href":297,"ariaLabel":298,"className":2778,"dataFootnoteBackref":34},[164],[70,2780,2782,2783],{"id":2781},"user-content-fn-3","i.e les modules USB, ... ",[29,2784,165],{"href":2785,"ariaLabel":2786,"className":2787,"dataFootnoteBackref":34},"#user-content-fnref-3","Back to reference 3",[164],[70,2789,2791,2792],{"id":2790},"user-content-fn-4","Il ne faudrait pas travailler en administrateur, hein ! ",[29,2793,165],{"href":2794,"ariaLabel":2795,"className":2796,"dataFootnoteBackref":34},"#user-content-fnref-4","Back to reference 4",[164],[1383,2798,2799],{},"html pre.shiki code .sVbv2, html code.shiki .sVbv2{--shiki-default:#61AFEF}html pre.shiki code .subq3, html code.shiki .subq3{--shiki-default:#98C379}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sVC51, html code.shiki .sVC51{--shiki-default:#D19A66}html pre.shiki code .sn6KH, html code.shiki .sn6KH{--shiki-default:#ABB2BF}html pre.shiki code .sjrmR, html code.shiki .sjrmR{--shiki-default:#56B6C2}html pre.shiki code .sV9Aq, html code.shiki .sV9Aq{--shiki-default:#7F848E;--shiki-default-font-style:italic}html pre.shiki code .seHd6, html code.shiki .seHd6{--shiki-default:#C678DD}html pre.shiki code .sU0A5, html code.shiki .sU0A5{--shiki-default:#E5C07B}",{"title":34,"searchDepth":167,"depth":167,"links":2801},[2802,2803,2804,2805,2806,2807],{"id":1849,"depth":428,"text":1850},{"id":1932,"depth":428,"text":1933},{"id":2657,"depth":428,"text":2658},{"id":2722,"depth":428,"text":2723},{"id":2748,"depth":428,"text":2749},{"id":33,"depth":167,"text":145},"SysAdmin","sysadmin","2007-08-04","Il peut être parfois utile de se déplacer ici et là avec une\ndistribution Linux clé en main sans se trimbaler toujours avec un\nordinateur portable ou un CD.",{"type":10,"value":2813},[2814,2818,2825,2827,2845,2850],[13,2815,1780,2816,1784],{},[17,2817,1783],{},[13,2819,1787,2820,1793],{},[26,2821,2822],{},[29,2823,36],{"href":31,"ariaDescribedBy":2824,"dataFootnoteRef":34,"id":35},[33],[13,2826,1796],{},[67,2828,2829,2831,2839,2841,2843],{},[70,2830,1801],{},[70,2832,1804,2833,1268,2835,1268,2837,1814],{},[343,2834,1807],{},[343,2836,1810],{},[343,2838,1813],{},[70,2840,1817],{},[70,2842,1820],{},[70,2844,1823],{},[13,2846,1826,2847,1832],{},[29,2848,1831],{"href":1829,"rel":2849},[157],[13,2851,1835,2852,1477,2855,1846],{},[29,2853,1840],{"href":1838,"rel":2854},[157],[29,2856,1845],{"href":1843,"rel":2857},[157],{},"\u002Fpost\u002Fdebian-etch-cle-usb",{"title":1775,"description":2811},"debian-etch-cle-usb","posts\u002FSysAdmin\u002F2007-08-04-debian-etch-cle-usb",[561],"P1wXAJpGAtElk0Xu1quXBbbh85GWI8n-HVkQxXWB6m0",{"id":2866,"title":2867,"author":8,"body":2868,"category":2808,"categorySlug":2809,"date":5852,"description":5853,"excerpt":5854,"extension":189,"location":190,"meta":5874,"navigation":192,"path":5875,"published":192,"seo":5876,"slug":3185,"stem":5877,"tags":5878,"timeToRead":451,"__hash__":5880},"posts\u002Fposts\u002FSysAdmin\u002F2006-10-16-sauvegarde-automatique.md","Sauvegarde automatique 0.9",{"type":10,"value":2869,"toc":5847},[2870,2875,2882,2893,2896,2899,2903,3183,3187,4286,4290,5844],[13,2871,2872,2873,37],{},"Ce billet concerne une application, de mon cru, écrite en ",[343,2874,355],{},[13,2876,2877,2878,2881],{},"Elle utilise l'application ",[343,2879,2880],{},"dar"," pour effectuer des sauvegardes et les\ncopier sur un périphérique USB ou\u002Fet sur le réseau.Tous les patchs,\ncorrections, améliorations sont les bienvenues sur cette application\nmaison.",[13,2883,2884,2885,2888,2889,2892],{},"Pour fonctionner l'application se configure à l'aide d'un fichier du\ndossier ",[343,2886,2887],{},"\u002Fetc"," qui permet de déterminer une liste de dossier à\nsauvegarder (",[343,2890,2891],{},"\u002Fetc\u002Fautobackup","). Dans ce fichier, on y défini le dossier\nà sauvegarde, le dossier de destination, le nombre de sauvegarde\nincrémentale (ou dit d'une autre facon, au bout de combien fois faut-il\ncréer une nouvelle sauvegarde compléte?).",[13,2894,2895],{},"Il permet aussi de définir des points de copie où l'on place les\ndifférentes sauvegardes. (Ex: un périphérique USB, un dossier SSH).Ces\npoints sont, bien sûr, utilisés seulement s'ils existent. Le fichier est\ncopié sur le périphérique USB, s'il est branché, sur la machine distante\nsi elle est allumée, ....",[13,2897,2898],{},"Il ne reste plus qu'à configurer ces petits scripts et les mettre dans\nun cron",[335,2900,2902],{"id":2901},"contenu-exemple-du-fichier-de-configuration","Contenu exemple du fichier de configuration",[351,2904,2906],{"className":353,"code":2905,"language":355,"meta":34,"style":34},"# This config file make relation for backup\n\n# Options\nBACKUP_OPT=\"-v -s 4613734400 -D -z9 -m 150\"\nBACKUP_EXCLUDE_EXT=\"-Z *.avi -Z *.bz2 -Z *.gif -Z *.gz -Z *.jpg -Z *.mov -Z *.mpg -Z *.pbm -Z *.pdf -Z *.png -Z *.pnm -Z *.Z -Z *.zip\"\nBACKUP_EXCLUDE_PATH=\"-P phoenix\u002F.bogofilter -P phoenix\u002F.fonts -P phoenix\u002F.kde\u002Fcache-maxiding -P phoenix\u002F.kde\u002Fsocket-maxiding -P phoenix\u002F.kde\u002Ftmp-maxiding -P phoenix\u002F.spamassassin -P phoenix\u002F.thumbnails -P phoenix\u002F.turboprint -P phoenix\u002F.unison -P phoenix\u002F.wesnoth -P phoenix\u002F.widelands -P phoenix\u002F.wine* -P phoenix\u002Fusr -P phoenix\u002Fvirtuel -P .Trash-* -P phoenix\u002Ftmp\"\n\n# Copy Backup\nCOPYTO=\"usbdrive network\"\n\n# Copy to usb drive\nusbdrive_type=\"usb\"\nusbdrive_dev=\"\u002Fdev\u002Fusb\u002Fdisk1\"\nusbdrive_mountpoint=\"\u002Fmedia\u002Fdisque\u002F\"\nusbdrive_pathname=\"backup\u002F\"\n\n# Copy to network\nnetwork_type=\"net\"\nnetwork_host=\"miniding\"\nnetwork_user=\"phoenix\"\n# no network_pass : use ssh key for backup\nnetwork_dir=\"\u002Fhome\u002Fphoenix\u002Fbackup\"\n\n# Home\nhome_name=maxiding_home\nhome_source=\u002Fhome\u002F\nhome_destination=\u002Fgravure\u002Fdar\u002Fhome\u002F\nhome_inc_max=10\n\n# Etc\netc_name=maxiding_etc\netc_source=\u002Fetc\u002F\netc_destination=\u002Fgravure\u002Fdar\u002Fetc\u002F\netc_inc_max=10\n",[343,2907,2908,2913,2917,2922,2932,2942,2952,2956,2961,2971,2975,2980,2990,3000,3010,3020,3024,3029,3039,3049,3059,3064,3074,3079,3085,3096,3107,3118,3129,3134,3140,3151,3162,3173],{"__ignoreMap":34},[359,2909,2910],{"class":361,"line":199},[359,2911,2912],{"class":737},"# This config file make relation for backup\n",[359,2914,2915],{"class":361,"line":167},[359,2916,431],{"emptyLinePlaceholder":192},[359,2918,2919],{"class":361,"line":428},[359,2920,2921],{"class":737},"# Options\n",[359,2923,2924,2927,2929],{"class":361,"line":434},[359,2925,2926],{"class":575},"BACKUP_OPT",[359,2928,580],{"class":579},[359,2930,2931],{"class":368},"\"-v -s 4613734400 -D -z9 -m 150\"\n",[359,2933,2934,2937,2939],{"class":361,"line":440},[359,2935,2936],{"class":575},"BACKUP_EXCLUDE_EXT",[359,2938,580],{"class":579},[359,2940,2941],{"class":368},"\"-Z *.avi -Z *.bz2 -Z *.gif -Z *.gz -Z *.jpg -Z *.mov -Z *.mpg -Z *.pbm -Z *.pdf -Z *.png -Z *.pnm -Z *.Z -Z *.zip\"\n",[359,2943,2944,2947,2949],{"class":361,"line":446},[359,2945,2946],{"class":575},"BACKUP_EXCLUDE_PATH",[359,2948,580],{"class":579},[359,2950,2951],{"class":368},"\"-P phoenix\u002F.bogofilter -P phoenix\u002F.fonts -P phoenix\u002F.kde\u002Fcache-maxiding -P phoenix\u002F.kde\u002Fsocket-maxiding -P phoenix\u002F.kde\u002Ftmp-maxiding -P phoenix\u002F.spamassassin -P phoenix\u002F.thumbnails -P phoenix\u002F.turboprint -P phoenix\u002F.unison -P phoenix\u002F.wesnoth -P phoenix\u002F.widelands -P phoenix\u002F.wine* -P phoenix\u002Fusr -P phoenix\u002Fvirtuel -P .Trash-* -P phoenix\u002Ftmp\"\n",[359,2953,2954],{"class":361,"line":451},[359,2955,431],{"emptyLinePlaceholder":192},[359,2957,2958],{"class":361,"line":457},[359,2959,2960],{"class":737},"# Copy Backup\n",[359,2962,2963,2966,2968],{"class":361,"line":463},[359,2964,2965],{"class":575},"COPYTO",[359,2967,580],{"class":579},[359,2969,2970],{"class":368},"\"usbdrive network\"\n",[359,2972,2973],{"class":361,"line":469},[359,2974,431],{"emptyLinePlaceholder":192},[359,2976,2977],{"class":361,"line":475},[359,2978,2979],{"class":737},"# Copy to usb drive\n",[359,2981,2982,2985,2987],{"class":361,"line":481},[359,2983,2984],{"class":575},"usbdrive_type",[359,2986,580],{"class":579},[359,2988,2989],{"class":368},"\"usb\"\n",[359,2991,2992,2995,2997],{"class":361,"line":487},[359,2993,2994],{"class":575},"usbdrive_dev",[359,2996,580],{"class":579},[359,2998,2999],{"class":368},"\"\u002Fdev\u002Fusb\u002Fdisk1\"\n",[359,3001,3002,3005,3007],{"class":361,"line":493},[359,3003,3004],{"class":575},"usbdrive_mountpoint",[359,3006,580],{"class":579},[359,3008,3009],{"class":368},"\"\u002Fmedia\u002Fdisque\u002F\"\n",[359,3011,3012,3015,3017],{"class":361,"line":499},[359,3013,3014],{"class":575},"usbdrive_pathname",[359,3016,580],{"class":579},[359,3018,3019],{"class":368},"\"backup\u002F\"\n",[359,3021,3022],{"class":361,"line":505},[359,3023,431],{"emptyLinePlaceholder":192},[359,3025,3026],{"class":361,"line":510},[359,3027,3028],{"class":737},"# Copy to network\n",[359,3030,3031,3034,3036],{"class":361,"line":516},[359,3032,3033],{"class":575},"network_type",[359,3035,580],{"class":579},[359,3037,3038],{"class":368},"\"net\"\n",[359,3040,3041,3044,3046],{"class":361,"line":522},[359,3042,3043],{"class":575},"network_host",[359,3045,580],{"class":579},[359,3047,3048],{"class":368},"\"miniding\"\n",[359,3050,3051,3054,3056],{"class":361,"line":528},[359,3052,3053],{"class":575},"network_user",[359,3055,580],{"class":579},[359,3057,3058],{"class":368},"\"phoenix\"\n",[359,3060,3061],{"class":361,"line":1125},[359,3062,3063],{"class":737},"# no network_pass : use ssh key for backup\n",[359,3065,3066,3069,3071],{"class":361,"line":1151},[359,3067,3068],{"class":575},"network_dir",[359,3070,580],{"class":579},[359,3072,3073],{"class":368},"\"\u002Fhome\u002Fphoenix\u002Fbackup\"\n",[359,3075,3077],{"class":361,"line":3076},23,[359,3078,431],{"emptyLinePlaceholder":192},[359,3080,3082],{"class":361,"line":3081},24,[359,3083,3084],{"class":737},"# Home\n",[359,3086,3088,3091,3093],{"class":361,"line":3087},25,[359,3089,3090],{"class":575},"home_name",[359,3092,580],{"class":579},[359,3094,3095],{"class":368},"maxiding_home\n",[359,3097,3099,3102,3104],{"class":361,"line":3098},26,[359,3100,3101],{"class":575},"home_source",[359,3103,580],{"class":579},[359,3105,3106],{"class":368},"\u002Fhome\u002F\n",[359,3108,3110,3113,3115],{"class":361,"line":3109},27,[359,3111,3112],{"class":575},"home_destination",[359,3114,580],{"class":579},[359,3116,3117],{"class":368},"\u002Fgravure\u002Fdar\u002Fhome\u002F\n",[359,3119,3121,3124,3126],{"class":361,"line":3120},28,[359,3122,3123],{"class":575},"home_inc_max",[359,3125,580],{"class":579},[359,3127,3128],{"class":368},"10\n",[359,3130,3132],{"class":361,"line":3131},29,[359,3133,431],{"emptyLinePlaceholder":192},[359,3135,3137],{"class":361,"line":3136},30,[359,3138,3139],{"class":737},"# Etc\n",[359,3141,3143,3146,3148],{"class":361,"line":3142},31,[359,3144,3145],{"class":575},"etc_name",[359,3147,580],{"class":579},[359,3149,3150],{"class":368},"maxiding_etc\n",[359,3152,3154,3157,3159],{"class":361,"line":3153},32,[359,3155,3156],{"class":575},"etc_source",[359,3158,580],{"class":579},[359,3160,3161],{"class":368},"\u002Fetc\u002F\n",[359,3163,3165,3168,3170],{"class":361,"line":3164},33,[359,3166,3167],{"class":575},"etc_destination",[359,3169,580],{"class":579},[359,3171,3172],{"class":368},"\u002Fgravure\u002Fdar\u002Fetc\u002F\n",[359,3174,3176,3179,3181],{"class":361,"line":3175},34,[359,3177,3178],{"class":575},"etc_inc_max",[359,3180,580],{"class":579},[359,3182,3128],{"class":368},[335,3184,3186],{"id":3185},"sauvegarde-automatique","Sauvegarde automatique",[351,3188,3190],{"className":353,"code":3189,"language":355,"meta":34,"style":34},"#!\u002Fbin\u002Fsh\n\n#############################################################################\n##   Copyright (C) 2006 by Ulrich Van Den Hekke                            ##\n##   ulrich.vdh@free.fr                                                    ##\n##                                                                         ##\n##   This program is free software; you can redistribute it and\u002For modify  ##\n##   it under the terms of the GNU General Public License as published by  ##\n##   the Free Software Foundation; either version 2 of the License, or     ##\n##   (at your option) any later version.                                   ##\n##                                                                         ##\n# \u002Fvar\n##   This program is distributed in the hope that it will be useful,       ##\n##   but WITHOUT ANY WARRANTY; without even the implied warranty of        ##\n##   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         ##\n##   GNU General Public License for more details.                          ##\n##                                                                         ##\n##   You should have received a copy of the GNU General Public License     ##\n##   along with this program; if not, write to the                         ##\n##   Free Software Foundation, Inc.,                                       ##\n##   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             ##\n#############################################################################\n\nif [ -e \u002Fetc\u002Fautobackup ] ; then\n        . \u002Fetc\u002Fautobackup\nelse\necho \"Please configure the autobackup config file\"\nexit 1\nfi\n\nif [ $# -ne 1 ] ; then\necho \"Please specify a project to backup\"\nexit 2\nfi\n\n# Define name of variable to use\nvar_name=\"\\$$1_name\"\nvar_source=\"\\$$1_source\"\nvar_destination=\"\\$$1_destination\"\nvar_inc_max=\"\\$$1_inc_max\"\n\n# Define content of variable for the project\nBACKUP_SRC=`eval echo $var_source`\nBACKUP_DST=`eval echo $var_destination`\nBACKUP_NAME=`eval echo $var_name`\nBACKUP_INCREMENTAL_MAX=`eval echo $var_inc_max`\n\nif [ -z \"$BACKUP_NAME\" ] ; then\necho \"Project undefined\"\nexit 3\nfi\n\nBACKUP_BIN=dar\nDATE_BACKUP=`date +%Y%m%d`\nBACKUP_ARCHIVE=\"${BACKUP_NAME}_${DATE_BACKUP}\"\n\n# From config file\n# COUNT_INCREMENTAL_BACKUP\n# LAST_BACKUP\n# LAST_COMPLETE_BACKUP\n\n# Some options\n# -v verbose\n# -c archive name\n# -R root place\n# -s slice size\n# -p slice pause\n# -D backup empty dir\n# -z9 compression gzip level 9\n# -m for minimal size\n# -Z exclude from compression\n# -P exclude file\n\nfunction start_backup() {\n        echo \"Backup of $BACKUP_SRC in progress ...\"\n\n        $BACKUP_BIN -c ${BACKUP_DST}${BACKUP_ARCHIVE} -R $BACKUP_SRC $BACKUP_OPT $BACKUP_EXCLUDE_EXT $BACKUP_EXCLUDE_PATH > ${BACKUP_DST}${BACKUP_NAME}.log\n}\n\nfunction load_backup_config() {\n        echo -n \"Load config file ... \"\n\n        if [ -e ${BACKUP_DST}${BACKUP_NAME}.config ] ; then\n                . ${BACKUP_DST}${BACKUP_NAME}.config\n                echo \"loaded.\"\n        else\n                COUNT_INCREMENTAL_BACKUP=$BACKUP_INCREMENTAL_MAX\n                echo \"not found\"\n        fi\n}\n\nfunction save_backup_config() {\n        echo \"Save backup config file ...\"\n\n        echo \"COUNT_INCREMENTAL_BACKUP=$COUNT_INCREMENTAL_BACKUP\" > ${BACKUP_DST}${BACKUP_NAME}.config\n        echo \"LAST_BACKUP=$DATE_BACKUP\"                          >> ${BACKUP_DST}${BACKUP_NAME}.config\n        echo \"LAST_COMPLETE_BACKUP=$LAST_COMPLETE_BACKUP\"        >> ${BACKUP_DST}${BACKUP_NAME}.config\n}\n\nfunction define_incremental() {\n        echo \"There is $COUNT_INCREMENTAL_BACKUP on $BACKUP_INCREMENTAL_MAX\"\n        if [ $COUNT_INCREMENTAL_BACKUP -lt $BACKUP_INCREMENTAL_MAX  ] ; then\n                echo \"Backup is incremental from $LAST_COMPLETE_BACKUP\"\n                COUNT_INCREMENTAL_BACKUP=`expr $COUNT_INCREMENTAL_BACKUP + 1`\n                BACKUP_OPT=\"-A ${BACKUP_DST}${BACKUP_NAME}_${LAST_COMPLETE_BACKUP} ${BACKUP_OPT}\"\n        else\n                echo \"Backup is complete\"\n                COUNT_INCREMENTAL_BACKUP=1\n                LAST_COMPLETE_BACKUP=$DATE_BACKUP\n        fi\n}\n\nload_backup_config;\ndefine_incremental;\nstart_backup;\nsave_backup_config;\n",[343,3191,3192,3197,3201,3206,3211,3216,3221,3226,3231,3236,3241,3245,3250,3255,3260,3265,3270,3274,3279,3284,3289,3294,3298,3302,3318,3326,3331,3339,3347,3352,3356,3376,3383,3390,3394,3399,3405,3425,3442,3459,3476,3481,3487,3510,3529,3548,3567,3572,3594,3602,3609,3614,3619,3630,3646,3667,3672,3678,3684,3690,3696,3701,3707,3713,3719,3725,3731,3737,3743,3749,3755,3761,3767,3772,3784,3799,3804,3855,3861,3866,3876,3886,3891,3914,3933,3942,3948,3959,3967,3973,3978,3983,3993,4001,4006,4031,4057,4083,4088,4093,4103,4121,4141,4153,4175,4204,4209,4217,4227,4238,4243,4248,4253,4262,4270,4278],{"__ignoreMap":34},[359,3193,3194],{"class":361,"line":199},[359,3195,3196],{"class":737},"#!\u002Fbin\u002Fsh\n",[359,3198,3199],{"class":361,"line":167},[359,3200,431],{"emptyLinePlaceholder":192},[359,3202,3203],{"class":361,"line":428},[359,3204,3205],{"class":737},"#############################################################################\n",[359,3207,3208],{"class":361,"line":434},[359,3209,3210],{"class":737},"##   Copyright (C) 2006 by Ulrich Van Den Hekke                            ##\n",[359,3212,3213],{"class":361,"line":440},[359,3214,3215],{"class":737},"##   ulrich.vdh@free.fr                                                    ##\n",[359,3217,3218],{"class":361,"line":446},[359,3219,3220],{"class":737},"##                                                                         ##\n",[359,3222,3223],{"class":361,"line":451},[359,3224,3225],{"class":737},"##   This program is free software; you can redistribute it and\u002For modify  ##\n",[359,3227,3228],{"class":361,"line":457},[359,3229,3230],{"class":737},"##   it under the terms of the GNU General Public License as published by  ##\n",[359,3232,3233],{"class":361,"line":463},[359,3234,3235],{"class":737},"##   the Free Software Foundation; either version 2 of the License, or     ##\n",[359,3237,3238],{"class":361,"line":469},[359,3239,3240],{"class":737},"##   (at your option) any later version.                                   ##\n",[359,3242,3243],{"class":361,"line":475},[359,3244,3220],{"class":737},[359,3246,3247],{"class":361,"line":481},[359,3248,3249],{"class":737},"# \u002Fvar\n",[359,3251,3252],{"class":361,"line":487},[359,3253,3254],{"class":737},"##   This program is distributed in the hope that it will be useful,       ##\n",[359,3256,3257],{"class":361,"line":493},[359,3258,3259],{"class":737},"##   but WITHOUT ANY WARRANTY; without even the implied warranty of        ##\n",[359,3261,3262],{"class":361,"line":499},[359,3263,3264],{"class":737},"##   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         ##\n",[359,3266,3267],{"class":361,"line":505},[359,3268,3269],{"class":737},"##   GNU General Public License for more details.                          ##\n",[359,3271,3272],{"class":361,"line":510},[359,3273,3220],{"class":737},[359,3275,3276],{"class":361,"line":516},[359,3277,3278],{"class":737},"##   You should have received a copy of the GNU General Public License     ##\n",[359,3280,3281],{"class":361,"line":522},[359,3282,3283],{"class":737},"##   along with this program; if not, write to the                         ##\n",[359,3285,3286],{"class":361,"line":528},[359,3287,3288],{"class":737},"##   Free Software Foundation, Inc.,                                       ##\n",[359,3290,3291],{"class":361,"line":1125},[359,3292,3293],{"class":737},"##   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             ##\n",[359,3295,3296],{"class":361,"line":1151},[359,3297,3205],{"class":737},[359,3299,3300],{"class":361,"line":3076},[359,3301,431],{"emptyLinePlaceholder":192},[359,3303,3304,3307,3310,3312,3315],{"class":361,"line":3081},[359,3305,3306],{"class":2494},"if",[359,3308,3309],{"class":780}," [ ",[359,3311,621],{"class":579},[359,3313,3314],{"class":780}," \u002Fetc\u002Fautobackup ] ; ",[359,3316,3317],{"class":2494},"then\n",[359,3319,3320,3323],{"class":361,"line":3087},[359,3321,3322],{"class":579},"        .",[359,3324,3325],{"class":368}," \u002Fetc\u002Fautobackup\n",[359,3327,3328],{"class":361,"line":3098},[359,3329,3330],{"class":2494},"else\n",[359,3332,3333,3336],{"class":361,"line":3109},[359,3334,3335],{"class":579},"echo",[359,3337,3338],{"class":368}," \"Please configure the autobackup config file\"\n",[359,3340,3341,3344],{"class":361,"line":3120},[359,3342,3343],{"class":579},"exit",[359,3345,3346],{"class":590}," 1\n",[359,3348,3349],{"class":361,"line":3131},[359,3350,3351],{"class":2494},"fi\n",[359,3353,3354],{"class":361,"line":3136},[359,3355,431],{"emptyLinePlaceholder":192},[359,3357,3358,3360,3362,3365,3368,3371,3374],{"class":361,"line":3142},[359,3359,3306],{"class":2494},[359,3361,3309],{"class":780},[359,3363,3364],{"class":665},"$#",[359,3366,3367],{"class":579}," -ne",[359,3369,3370],{"class":590}," 1",[359,3372,3373],{"class":780}," ] ; ",[359,3375,3317],{"class":2494},[359,3377,3378,3380],{"class":361,"line":3153},[359,3379,3335],{"class":579},[359,3381,3382],{"class":368}," \"Please specify a project to backup\"\n",[359,3384,3385,3387],{"class":361,"line":3164},[359,3386,3343],{"class":579},[359,3388,3389],{"class":590}," 2\n",[359,3391,3392],{"class":361,"line":3175},[359,3393,3351],{"class":2494},[359,3395,3397],{"class":361,"line":3396},35,[359,3398,431],{"emptyLinePlaceholder":192},[359,3400,3402],{"class":361,"line":3401},36,[359,3403,3404],{"class":737},"# Define name of variable to use\n",[359,3406,3408,3411,3413,3416,3419,3422],{"class":361,"line":3407},37,[359,3409,3410],{"class":575},"var_name",[359,3412,580],{"class":579},[359,3414,3415],{"class":368},"\"",[359,3417,3418],{"class":579},"\\$",[359,3420,3421],{"class":575},"$1_name",[359,3423,3424],{"class":368},"\"\n",[359,3426,3428,3431,3433,3435,3437,3440],{"class":361,"line":3427},38,[359,3429,3430],{"class":575},"var_source",[359,3432,580],{"class":579},[359,3434,3415],{"class":368},[359,3436,3418],{"class":579},[359,3438,3439],{"class":575},"$1_source",[359,3441,3424],{"class":368},[359,3443,3445,3448,3450,3452,3454,3457],{"class":361,"line":3444},39,[359,3446,3447],{"class":575},"var_destination",[359,3449,580],{"class":579},[359,3451,3415],{"class":368},[359,3453,3418],{"class":579},[359,3455,3456],{"class":575},"$1_destination",[359,3458,3424],{"class":368},[359,3460,3462,3465,3467,3469,3471,3474],{"class":361,"line":3461},40,[359,3463,3464],{"class":575},"var_inc_max",[359,3466,580],{"class":579},[359,3468,3415],{"class":368},[359,3470,3418],{"class":579},[359,3472,3473],{"class":575},"$1_inc_max",[359,3475,3424],{"class":368},[359,3477,3479],{"class":361,"line":3478},41,[359,3480,431],{"emptyLinePlaceholder":192},[359,3482,3484],{"class":361,"line":3483},42,[359,3485,3486],{"class":737},"# Define content of variable for the project\n",[359,3488,3490,3493,3495,3498,3501,3504,3507],{"class":361,"line":3489},43,[359,3491,3492],{"class":575},"BACKUP_SRC",[359,3494,580],{"class":579},[359,3496,3497],{"class":368},"`",[359,3499,3500],{"class":579},"eval",[359,3502,3503],{"class":368}," echo ",[359,3505,3506],{"class":575},"$var_source",[359,3508,3509],{"class":368},"`\n",[359,3511,3513,3516,3518,3520,3522,3524,3527],{"class":361,"line":3512},44,[359,3514,3515],{"class":575},"BACKUP_DST",[359,3517,580],{"class":579},[359,3519,3497],{"class":368},[359,3521,3500],{"class":579},[359,3523,3503],{"class":368},[359,3525,3526],{"class":575},"$var_destination",[359,3528,3509],{"class":368},[359,3530,3532,3535,3537,3539,3541,3543,3546],{"class":361,"line":3531},45,[359,3533,3534],{"class":575},"BACKUP_NAME",[359,3536,580],{"class":579},[359,3538,3497],{"class":368},[359,3540,3500],{"class":579},[359,3542,3503],{"class":368},[359,3544,3545],{"class":575},"$var_name",[359,3547,3509],{"class":368},[359,3549,3551,3554,3556,3558,3560,3562,3565],{"class":361,"line":3550},46,[359,3552,3553],{"class":575},"BACKUP_INCREMENTAL_MAX",[359,3555,580],{"class":579},[359,3557,3497],{"class":368},[359,3559,3500],{"class":579},[359,3561,3503],{"class":368},[359,3563,3564],{"class":575},"$var_inc_max",[359,3566,3509],{"class":368},[359,3568,3570],{"class":361,"line":3569},47,[359,3571,431],{"emptyLinePlaceholder":192},[359,3573,3575,3577,3579,3582,3585,3588,3590,3592],{"class":361,"line":3574},48,[359,3576,3306],{"class":2494},[359,3578,3309],{"class":780},[359,3580,3581],{"class":579},"-z",[359,3583,3584],{"class":368}," \"",[359,3586,3587],{"class":575},"$BACKUP_NAME",[359,3589,3415],{"class":368},[359,3591,3373],{"class":780},[359,3593,3317],{"class":2494},[359,3595,3597,3599],{"class":361,"line":3596},49,[359,3598,3335],{"class":579},[359,3600,3601],{"class":368}," \"Project undefined\"\n",[359,3603,3604,3606],{"class":361,"line":3},[359,3605,3343],{"class":579},[359,3607,3608],{"class":590}," 3\n",[359,3610,3612],{"class":361,"line":3611},51,[359,3613,3351],{"class":2494},[359,3615,3617],{"class":361,"line":3616},52,[359,3618,431],{"emptyLinePlaceholder":192},[359,3620,3622,3625,3627],{"class":361,"line":3621},53,[359,3623,3624],{"class":575},"BACKUP_BIN",[359,3626,580],{"class":579},[359,3628,3629],{"class":368},"dar\n",[359,3631,3633,3636,3638,3640,3643],{"class":361,"line":3632},54,[359,3634,3635],{"class":575},"DATE_BACKUP",[359,3637,580],{"class":579},[359,3639,3497],{"class":368},[359,3641,3642],{"class":364},"date",[359,3644,3645],{"class":368}," +%Y%m%d`\n",[359,3647,3649,3652,3654,3657,3659,3662,3664],{"class":361,"line":3648},55,[359,3650,3651],{"class":575},"BACKUP_ARCHIVE",[359,3653,580],{"class":579},[359,3655,3656],{"class":368},"\"${",[359,3658,3534],{"class":575},[359,3660,3661],{"class":368},"}_${",[359,3663,3635],{"class":575},[359,3665,3666],{"class":368},"}\"\n",[359,3668,3670],{"class":361,"line":3669},56,[359,3671,431],{"emptyLinePlaceholder":192},[359,3673,3675],{"class":361,"line":3674},57,[359,3676,3677],{"class":737},"# From config file\n",[359,3679,3681],{"class":361,"line":3680},58,[359,3682,3683],{"class":737},"# COUNT_INCREMENTAL_BACKUP\n",[359,3685,3687],{"class":361,"line":3686},59,[359,3688,3689],{"class":737},"# LAST_BACKUP\n",[359,3691,3693],{"class":361,"line":3692},60,[359,3694,3695],{"class":737},"# LAST_COMPLETE_BACKUP\n",[359,3697,3699],{"class":361,"line":3698},61,[359,3700,431],{"emptyLinePlaceholder":192},[359,3702,3704],{"class":361,"line":3703},62,[359,3705,3706],{"class":737},"# Some options\n",[359,3708,3710],{"class":361,"line":3709},63,[359,3711,3712],{"class":737},"# -v verbose\n",[359,3714,3716],{"class":361,"line":3715},64,[359,3717,3718],{"class":737},"# -c archive name\n",[359,3720,3722],{"class":361,"line":3721},65,[359,3723,3724],{"class":737},"# -R root place\n",[359,3726,3728],{"class":361,"line":3727},66,[359,3729,3730],{"class":737},"# -s slice size\n",[359,3732,3734],{"class":361,"line":3733},67,[359,3735,3736],{"class":737},"# -p slice pause\n",[359,3738,3740],{"class":361,"line":3739},68,[359,3741,3742],{"class":737},"# -D backup empty dir\n",[359,3744,3746],{"class":361,"line":3745},69,[359,3747,3748],{"class":737},"# -z9 compression gzip level 9\n",[359,3750,3752],{"class":361,"line":3751},70,[359,3753,3754],{"class":737},"# -m for minimal size\n",[359,3756,3758],{"class":361,"line":3757},71,[359,3759,3760],{"class":737},"# -Z exclude from compression\n",[359,3762,3764],{"class":361,"line":3763},72,[359,3765,3766],{"class":737},"# -P exclude file\n",[359,3768,3770],{"class":361,"line":3769},73,[359,3771,431],{"emptyLinePlaceholder":192},[359,3773,3775,3778,3781],{"class":361,"line":3774},74,[359,3776,3777],{"class":2494},"function",[359,3779,3780],{"class":364}," start_backup",[359,3782,3783],{"class":780},"() {\n",[359,3785,3787,3790,3793,3796],{"class":361,"line":3786},75,[359,3788,3789],{"class":579},"        echo",[359,3791,3792],{"class":368}," \"Backup of ",[359,3794,3795],{"class":575},"$BACKUP_SRC",[359,3797,3798],{"class":368}," in progress ...\"\n",[359,3800,3802],{"class":361,"line":3801},76,[359,3803,431],{"emptyLinePlaceholder":192},[359,3805,3807,3810,3812,3815,3817,3820,3822,3825,3828,3831,3834,3837,3840,3843,3845,3847,3849,3852],{"class":361,"line":3806},77,[359,3808,3809],{"class":575},"        $BACKUP_BIN",[359,3811,603],{"class":590},[359,3813,3814],{"class":780}," ${",[359,3816,3515],{"class":575},[359,3818,3819],{"class":780},"}${",[359,3821,3651],{"class":575},[359,3823,3824],{"class":780},"} ",[359,3826,3827],{"class":590},"-R",[359,3829,3830],{"class":575}," $BACKUP_SRC",[359,3832,3833],{"class":575}," $BACKUP_OPT",[359,3835,3836],{"class":575}," $BACKUP_EXCLUDE_EXT",[359,3838,3839],{"class":575}," $BACKUP_EXCLUDE_PATH",[359,3841,3842],{"class":780}," > ${",[359,3844,3515],{"class":575},[359,3846,3819],{"class":780},[359,3848,3534],{"class":575},[359,3850,3851],{"class":780},"}",[359,3853,3854],{"class":368},".log\n",[359,3856,3858],{"class":361,"line":3857},78,[359,3859,3860],{"class":780},"}\n",[359,3862,3864],{"class":361,"line":3863},79,[359,3865,431],{"emptyLinePlaceholder":192},[359,3867,3869,3871,3874],{"class":361,"line":3868},80,[359,3870,3777],{"class":2494},[359,3872,3873],{"class":364}," load_backup_config",[359,3875,3783],{"class":780},[359,3877,3879,3881,3883],{"class":361,"line":3878},81,[359,3880,3789],{"class":579},[359,3882,597],{"class":590},[359,3884,3885],{"class":368}," \"Load config file ... \"\n",[359,3887,3889],{"class":361,"line":3888},82,[359,3890,431],{"emptyLinePlaceholder":192},[359,3892,3894,3897,3899,3901,3903,3905,3907,3909,3912],{"class":361,"line":3893},83,[359,3895,3896],{"class":2494},"        if",[359,3898,3309],{"class":780},[359,3900,621],{"class":579},[359,3902,3814],{"class":780},[359,3904,3515],{"class":575},[359,3906,3819],{"class":780},[359,3908,3534],{"class":575},[359,3910,3911],{"class":780},"}.config ] ; ",[359,3913,3317],{"class":2494},[359,3915,3917,3920,3922,3924,3926,3928,3930],{"class":361,"line":3916},84,[359,3918,3919],{"class":579},"                .",[359,3921,3814],{"class":780},[359,3923,3515],{"class":575},[359,3925,3819],{"class":780},[359,3927,3534],{"class":575},[359,3929,3851],{"class":780},[359,3931,3932],{"class":368},".config\n",[359,3934,3936,3939],{"class":361,"line":3935},85,[359,3937,3938],{"class":579},"                echo",[359,3940,3941],{"class":368}," \"loaded.\"\n",[359,3943,3945],{"class":361,"line":3944},86,[359,3946,3947],{"class":2494},"        else\n",[359,3949,3951,3954,3956],{"class":361,"line":3950},87,[359,3952,3953],{"class":575},"                COUNT_INCREMENTAL_BACKUP",[359,3955,580],{"class":579},[359,3957,3958],{"class":575},"$BACKUP_INCREMENTAL_MAX\n",[359,3960,3962,3964],{"class":361,"line":3961},88,[359,3963,3938],{"class":579},[359,3965,3966],{"class":368}," \"not found\"\n",[359,3968,3970],{"class":361,"line":3969},89,[359,3971,3972],{"class":2494},"        fi\n",[359,3974,3976],{"class":361,"line":3975},90,[359,3977,3860],{"class":780},[359,3979,3981],{"class":361,"line":3980},91,[359,3982,431],{"emptyLinePlaceholder":192},[359,3984,3986,3988,3991],{"class":361,"line":3985},92,[359,3987,3777],{"class":2494},[359,3989,3990],{"class":364}," save_backup_config",[359,3992,3783],{"class":780},[359,3994,3996,3998],{"class":361,"line":3995},93,[359,3997,3789],{"class":579},[359,3999,4000],{"class":368}," \"Save backup config file ...\"\n",[359,4002,4004],{"class":361,"line":4003},94,[359,4005,431],{"emptyLinePlaceholder":192},[359,4007,4009,4011,4014,4017,4019,4021,4023,4025,4027,4029],{"class":361,"line":4008},95,[359,4010,3789],{"class":579},[359,4012,4013],{"class":368}," \"COUNT_INCREMENTAL_BACKUP=",[359,4015,4016],{"class":575},"$COUNT_INCREMENTAL_BACKUP",[359,4018,3415],{"class":368},[359,4020,3842],{"class":780},[359,4022,3515],{"class":575},[359,4024,3819],{"class":780},[359,4026,3534],{"class":575},[359,4028,3851],{"class":780},[359,4030,3932],{"class":368},[359,4032,4034,4036,4039,4042,4044,4047,4049,4051,4053,4055],{"class":361,"line":4033},96,[359,4035,3789],{"class":579},[359,4037,4038],{"class":368}," \"LAST_BACKUP=",[359,4040,4041],{"class":575},"$DATE_BACKUP",[359,4043,3415],{"class":368},[359,4045,4046],{"class":780},"                          >> ${",[359,4048,3515],{"class":575},[359,4050,3819],{"class":780},[359,4052,3534],{"class":575},[359,4054,3851],{"class":780},[359,4056,3932],{"class":368},[359,4058,4060,4062,4065,4068,4070,4073,4075,4077,4079,4081],{"class":361,"line":4059},97,[359,4061,3789],{"class":579},[359,4063,4064],{"class":368}," \"LAST_COMPLETE_BACKUP=",[359,4066,4067],{"class":575},"$LAST_COMPLETE_BACKUP",[359,4069,3415],{"class":368},[359,4071,4072],{"class":780},"        >> ${",[359,4074,3515],{"class":575},[359,4076,3819],{"class":780},[359,4078,3534],{"class":575},[359,4080,3851],{"class":780},[359,4082,3932],{"class":368},[359,4084,4086],{"class":361,"line":4085},98,[359,4087,3860],{"class":780},[359,4089,4091],{"class":361,"line":4090},99,[359,4092,431],{"emptyLinePlaceholder":192},[359,4094,4096,4098,4101],{"class":361,"line":4095},100,[359,4097,3777],{"class":2494},[359,4099,4100],{"class":364}," define_incremental",[359,4102,3783],{"class":780},[359,4104,4106,4108,4111,4113,4116,4119],{"class":361,"line":4105},101,[359,4107,3789],{"class":579},[359,4109,4110],{"class":368}," \"There is ",[359,4112,4016],{"class":575},[359,4114,4115],{"class":368}," on ",[359,4117,4118],{"class":575},"$BACKUP_INCREMENTAL_MAX",[359,4120,3424],{"class":368},[359,4122,4124,4126,4128,4130,4133,4136,4139],{"class":361,"line":4123},102,[359,4125,3896],{"class":2494},[359,4127,3309],{"class":780},[359,4129,4016],{"class":575},[359,4131,4132],{"class":579}," -lt",[359,4134,4135],{"class":575}," $BACKUP_INCREMENTAL_MAX",[359,4137,4138],{"class":780},"  ] ; ",[359,4140,3317],{"class":2494},[359,4142,4144,4146,4149,4151],{"class":361,"line":4143},103,[359,4145,3938],{"class":579},[359,4147,4148],{"class":368}," \"Backup is incremental from ",[359,4150,4067],{"class":575},[359,4152,3424],{"class":368},[359,4154,4156,4158,4160,4162,4165,4168,4171,4173],{"class":361,"line":4155},104,[359,4157,3953],{"class":575},[359,4159,580],{"class":579},[359,4161,3497],{"class":368},[359,4163,4164],{"class":364},"expr",[359,4166,4167],{"class":575}," $COUNT_INCREMENTAL_BACKUP",[359,4169,4170],{"class":368}," + ",[359,4172,36],{"class":590},[359,4174,3509],{"class":368},[359,4176,4178,4181,4183,4186,4188,4190,4192,4194,4197,4200,4202],{"class":361,"line":4177},105,[359,4179,4180],{"class":575},"                BACKUP_OPT",[359,4182,580],{"class":579},[359,4184,4185],{"class":368},"\"-A ${",[359,4187,3515],{"class":575},[359,4189,3819],{"class":368},[359,4191,3534],{"class":575},[359,4193,3661],{"class":368},[359,4195,4196],{"class":575},"LAST_COMPLETE_BACKUP",[359,4198,4199],{"class":368},"} ${",[359,4201,2926],{"class":575},[359,4203,3666],{"class":368},[359,4205,4207],{"class":361,"line":4206},106,[359,4208,3947],{"class":2494},[359,4210,4212,4214],{"class":361,"line":4211},107,[359,4213,3938],{"class":579},[359,4215,4216],{"class":368}," \"Backup is complete\"\n",[359,4218,4220,4222,4224],{"class":361,"line":4219},108,[359,4221,3953],{"class":575},[359,4223,580],{"class":579},[359,4225,4226],{"class":368},"1\n",[359,4228,4230,4233,4235],{"class":361,"line":4229},109,[359,4231,4232],{"class":575},"                LAST_COMPLETE_BACKUP",[359,4234,580],{"class":579},[359,4236,4237],{"class":575},"$DATE_BACKUP\n",[359,4239,4241],{"class":361,"line":4240},110,[359,4242,3972],{"class":2494},[359,4244,4246],{"class":361,"line":4245},111,[359,4247,3860],{"class":780},[359,4249,4251],{"class":361,"line":4250},112,[359,4252,431],{"emptyLinePlaceholder":192},[359,4254,4256,4259],{"class":361,"line":4255},113,[359,4257,4258],{"class":364},"load_backup_config",[359,4260,4261],{"class":780},";\n",[359,4263,4265,4268],{"class":361,"line":4264},114,[359,4266,4267],{"class":364},"define_incremental",[359,4269,4261],{"class":780},[359,4271,4273,4276],{"class":361,"line":4272},115,[359,4274,4275],{"class":364},"start_backup",[359,4277,4261],{"class":780},[359,4279,4281,4284],{"class":361,"line":4280},116,[359,4282,4283],{"class":364},"save_backup_config",[359,4285,4261],{"class":780},[335,4287,4289],{"id":4288},"copie-automatique","Copie automatique",[351,4291,4293],{"className":353,"code":4292,"language":355,"meta":34,"style":34},"#!\u002Fbin\u002Fsh\n\n#############################################################################\n##   Copyright (C) 2006 by Ulrich Van Den Hekke                            ##\n##   ulrich.vdh@free.fr                                                    ##\n##                                                                         ##\n##   This program is free software; you can redistribute it and\u002For modify  ##\n##   it under the terms of the GNU General Public License as published by  ##\n##   the Free Software Foundation; either version 2 of the License, or     ##\n##   (at your option) any later version.                                   ##\n##                                                                         ##\n##   This program is distributed in the hope that it will be useful,       ##\n##   but WITHOUT ANY WARRANTY; without even the implied warranty of        ##\n##   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         ##\n##   GNU General Public License for more details.                          ##\n##                                                                         ##\n##   You should have received a copy of the GNU General Public License     ##\n##   along with this program; if not, write to the                         ##\n##   Free Software Foundation, Inc.,                                       ##\n##   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             ##\n#############################################################################\n\nif [ -e \u002Fetc\u002Fautobackup ] ; then\n        . \u002Fetc\u002Fautobackup\nelse\necho \"Please configure the autobackup config file\"\nexit 1\nfi\n\nif [ $# -ne 1 ] ; then\necho \"Please specify a project to backup\"\nexit 2\nfi\n\n# Define name of variable to use\nvar_name=\"\\$$1_name\"\nvar_source=\"\\$$1_source\"\nvar_destination=\"\\$$1_destination\"\nvar_inc_max=\"\\$$1_inc_max\"\n\n# Define content of variable for the project\nBACKUP_SRC=`eval echo $var_source`\nBACKUP_DST=`eval echo $var_destination`\nBACKUP_NAME=`eval echo $var_name`\nBACKUP_INCREMENTAL_MAX=`eval echo $var_inc_max`\n\nif [ -z \"$BACKUP_NAME\" ] ; then\necho \"Project undefined\"\nexit 3\nfi\n\n# From config file\n# COUNT_INCREMENTAL_BACKUP\n# LAST_BACKUP\n# LAST_COMPLETE_BACKUP\n\nfunction load_backup_config() {\n        echo -n \"Load config file ... \"\n\n        if [ -e ${BACKUP_DST}${BACKUP_NAME}.config ] ; then\n                . ${BACKUP_DST}${BACKUP_NAME}.config\n\n                BACKUP_ARCHIVE=\"${BACKUP_NAME}_${LAST_BACKUP}\"\n                echo \"loaded.\"\n        else\n                echo \"not found\"\n                exit 4\n        fi\n}\n\nfunction save_by_network() {\n        echo -n \"Save on computer $HOST as $USER on $DIR\"\n\n        ping -c 3 -W 10 $HOST > \u002Fdev\u002Fnull\n\n        if [ $? -ne 0 ] ; then\n                echo \"failed\"\n        else\n                DESTINATION=\"${HOST}:${DIR}\"\n                if [ -n $USER ] ; then\n                        DESTINATION=\"${USER}@${DESTINATION}\"\n                fi\n                scp ${BACKUP_DST}${BACKUP_ARCHIVE}* $DESTINATION\n\n                if [ $? -ne 0 ] ; then\n                        echo \"failed\"\n                else\n                        echo \"ok\"\n                fi\n        fi\n}\n\nfunction save_by_usb() {\n        echo -n \"Save on drive $DEV \"\n\n        if [ -e $DEV ] ; then\n                TOUMOUNT=1\n                LINECOUNT=`mount | grep $DEV | cut -f 1 -d\\  | wc -l `\n                if [ $LINECOUNT -gt 0 ] ; then\n                        MOUNTPOINT=`mount | grep $DEV | cut -f 3 -d\\ `\n                        TOUMOUNT=0\n                else\n                        mount $MOUNTPOINT\n\n                        if [ $? -ne 0 ] ; then\n                                echo \"mount failed \"\n                        fi\n                fi\n                if [ -d ${MOUNTPOINT}${PATHNAME} ] ; then\n                        for FILE in `ls -1 ${BACKUP_DST}${BACKUP_ARCHIVE}*` ; do\n                                FILENAME=`basename $FILE`\n                                if [ -e ${MOUNTPOINT}${PATHNAME}${FILENAME} ] ; then\n                                        echo \"exist \"\n                                else\n                                        cp ${FILE} ${MOUNTPOINT}${PATHNAME}\n                                fi\n                        done\n\n                        echo \"ok\"\n                else\n                        echo \"failed\"\n                fi\n                if [ $TOUMOUNT -eq 1 ] ; then\n                        umount $MOUNTPOINT\n                fi\n\n        else\n                echo \"device not found\"\n        fi\n}\n\nfunction copy_to() {\n        echo \"Start make copy of backup $BACKUP_NAME\"\n\n        for NAME in $COPYTO ; do\n                var_type=\"\\$${NAME}_type\"\n                TYPE=`eval echo $var_type`\n\n                echo \"--> $NAME as $TYPE\"\n                case $TYPE in\n                        \"usb\")\n                                var_dev=\"\\$${NAME}_dev\"\n                                DEV=`eval echo $var_dev`\n\n                                var_mountpoint=\"\\$${NAME}_mountpoint\"\n                                MOUNTPOINT=`eval echo $var_mountpoint`\n\n                                var_pathname=\"\\$${NAME}_pathname\"\n                                PATHNAME=`eval echo $var_pathname`\n\n                                save_by_usb;\n                        ;;\n\n                        \"net\")\n                                var_host=\"\\$${NAME}_host\"\n                                HOST=`eval echo $var_host`\n\n                                var_user=\"\\$${NAME}_user\"\n                                USER=`eval echo $var_user`\n\n                                var_dir=\"\\$${NAME}_dir\"\n                                DIR=`eval echo $var_dir`\n\n                                save_by_network;\n                        ;;\n                esac\n        done\n}\n\ncopy_to;\n",[343,4294,4295,4299,4303,4307,4311,4315,4319,4323,4327,4331,4335,4339,4343,4347,4351,4355,4359,4363,4367,4371,4375,4379,4383,4395,4401,4405,4411,4417,4421,4425,4441,4447,4453,4457,4461,4465,4479,4493,4507,4521,4525,4529,4545,4561,4577,4593,4597,4615,4621,4627,4631,4635,4639,4643,4647,4651,4655,4663,4671,4675,4695,4711,4715,4733,4739,4743,4749,4757,4761,4765,4769,4778,4803,4807,4831,4835,4853,4860,4864,4884,4900,4920,4925,4945,4949,4965,4972,4977,4984,4988,4992,4996,5000,5009,5024,5028,5043,5052,5097,5115,5146,5156,5160,5168,5172,5189,5197,5202,5206,5230,5270,5287,5313,5321,5326,5346,5351,5357,5362,5369,5374,5381,5386,5405,5413,5418,5423,5428,5436,5441,5446,5451,5461,5473,5478,5496,5517,5536,5541,5559,5571,5580,5599,5610,5615,5630,5641,5646,5661,5672,5677,5685,5691,5696,5704,5723,5734,5739,5754,5765,5770,5785,5796,5801,5809,5814,5820,5826,5831,5836],{"__ignoreMap":34},[359,4296,4297],{"class":361,"line":199},[359,4298,3196],{"class":737},[359,4300,4301],{"class":361,"line":167},[359,4302,431],{"emptyLinePlaceholder":192},[359,4304,4305],{"class":361,"line":428},[359,4306,3205],{"class":737},[359,4308,4309],{"class":361,"line":434},[359,4310,3210],{"class":737},[359,4312,4313],{"class":361,"line":440},[359,4314,3215],{"class":737},[359,4316,4317],{"class":361,"line":446},[359,4318,3220],{"class":737},[359,4320,4321],{"class":361,"line":451},[359,4322,3225],{"class":737},[359,4324,4325],{"class":361,"line":457},[359,4326,3230],{"class":737},[359,4328,4329],{"class":361,"line":463},[359,4330,3235],{"class":737},[359,4332,4333],{"class":361,"line":469},[359,4334,3240],{"class":737},[359,4336,4337],{"class":361,"line":475},[359,4338,3220],{"class":737},[359,4340,4341],{"class":361,"line":481},[359,4342,3254],{"class":737},[359,4344,4345],{"class":361,"line":487},[359,4346,3259],{"class":737},[359,4348,4349],{"class":361,"line":493},[359,4350,3264],{"class":737},[359,4352,4353],{"class":361,"line":499},[359,4354,3269],{"class":737},[359,4356,4357],{"class":361,"line":505},[359,4358,3220],{"class":737},[359,4360,4361],{"class":361,"line":510},[359,4362,3278],{"class":737},[359,4364,4365],{"class":361,"line":516},[359,4366,3283],{"class":737},[359,4368,4369],{"class":361,"line":522},[359,4370,3288],{"class":737},[359,4372,4373],{"class":361,"line":528},[359,4374,3293],{"class":737},[359,4376,4377],{"class":361,"line":1125},[359,4378,3205],{"class":737},[359,4380,4381],{"class":361,"line":1151},[359,4382,431],{"emptyLinePlaceholder":192},[359,4384,4385,4387,4389,4391,4393],{"class":361,"line":3076},[359,4386,3306],{"class":2494},[359,4388,3309],{"class":780},[359,4390,621],{"class":579},[359,4392,3314],{"class":780},[359,4394,3317],{"class":2494},[359,4396,4397,4399],{"class":361,"line":3081},[359,4398,3322],{"class":579},[359,4400,3325],{"class":368},[359,4402,4403],{"class":361,"line":3087},[359,4404,3330],{"class":2494},[359,4406,4407,4409],{"class":361,"line":3098},[359,4408,3335],{"class":579},[359,4410,3338],{"class":368},[359,4412,4413,4415],{"class":361,"line":3109},[359,4414,3343],{"class":579},[359,4416,3346],{"class":590},[359,4418,4419],{"class":361,"line":3120},[359,4420,3351],{"class":2494},[359,4422,4423],{"class":361,"line":3131},[359,4424,431],{"emptyLinePlaceholder":192},[359,4426,4427,4429,4431,4433,4435,4437,4439],{"class":361,"line":3136},[359,4428,3306],{"class":2494},[359,4430,3309],{"class":780},[359,4432,3364],{"class":665},[359,4434,3367],{"class":579},[359,4436,3370],{"class":590},[359,4438,3373],{"class":780},[359,4440,3317],{"class":2494},[359,4442,4443,4445],{"class":361,"line":3142},[359,4444,3335],{"class":579},[359,4446,3382],{"class":368},[359,4448,4449,4451],{"class":361,"line":3153},[359,4450,3343],{"class":579},[359,4452,3389],{"class":590},[359,4454,4455],{"class":361,"line":3164},[359,4456,3351],{"class":2494},[359,4458,4459],{"class":361,"line":3175},[359,4460,431],{"emptyLinePlaceholder":192},[359,4462,4463],{"class":361,"line":3396},[359,4464,3404],{"class":737},[359,4466,4467,4469,4471,4473,4475,4477],{"class":361,"line":3401},[359,4468,3410],{"class":575},[359,4470,580],{"class":579},[359,4472,3415],{"class":368},[359,4474,3418],{"class":579},[359,4476,3421],{"class":575},[359,4478,3424],{"class":368},[359,4480,4481,4483,4485,4487,4489,4491],{"class":361,"line":3407},[359,4482,3430],{"class":575},[359,4484,580],{"class":579},[359,4486,3415],{"class":368},[359,4488,3418],{"class":579},[359,4490,3439],{"class":575},[359,4492,3424],{"class":368},[359,4494,4495,4497,4499,4501,4503,4505],{"class":361,"line":3427},[359,4496,3447],{"class":575},[359,4498,580],{"class":579},[359,4500,3415],{"class":368},[359,4502,3418],{"class":579},[359,4504,3456],{"class":575},[359,4506,3424],{"class":368},[359,4508,4509,4511,4513,4515,4517,4519],{"class":361,"line":3444},[359,4510,3464],{"class":575},[359,4512,580],{"class":579},[359,4514,3415],{"class":368},[359,4516,3418],{"class":579},[359,4518,3473],{"class":575},[359,4520,3424],{"class":368},[359,4522,4523],{"class":361,"line":3461},[359,4524,431],{"emptyLinePlaceholder":192},[359,4526,4527],{"class":361,"line":3478},[359,4528,3486],{"class":737},[359,4530,4531,4533,4535,4537,4539,4541,4543],{"class":361,"line":3483},[359,4532,3492],{"class":575},[359,4534,580],{"class":579},[359,4536,3497],{"class":368},[359,4538,3500],{"class":579},[359,4540,3503],{"class":368},[359,4542,3506],{"class":575},[359,4544,3509],{"class":368},[359,4546,4547,4549,4551,4553,4555,4557,4559],{"class":361,"line":3489},[359,4548,3515],{"class":575},[359,4550,580],{"class":579},[359,4552,3497],{"class":368},[359,4554,3500],{"class":579},[359,4556,3503],{"class":368},[359,4558,3526],{"class":575},[359,4560,3509],{"class":368},[359,4562,4563,4565,4567,4569,4571,4573,4575],{"class":361,"line":3512},[359,4564,3534],{"class":575},[359,4566,580],{"class":579},[359,4568,3497],{"class":368},[359,4570,3500],{"class":579},[359,4572,3503],{"class":368},[359,4574,3545],{"class":575},[359,4576,3509],{"class":368},[359,4578,4579,4581,4583,4585,4587,4589,4591],{"class":361,"line":3531},[359,4580,3553],{"class":575},[359,4582,580],{"class":579},[359,4584,3497],{"class":368},[359,4586,3500],{"class":579},[359,4588,3503],{"class":368},[359,4590,3564],{"class":575},[359,4592,3509],{"class":368},[359,4594,4595],{"class":361,"line":3550},[359,4596,431],{"emptyLinePlaceholder":192},[359,4598,4599,4601,4603,4605,4607,4609,4611,4613],{"class":361,"line":3569},[359,4600,3306],{"class":2494},[359,4602,3309],{"class":780},[359,4604,3581],{"class":579},[359,4606,3584],{"class":368},[359,4608,3587],{"class":575},[359,4610,3415],{"class":368},[359,4612,3373],{"class":780},[359,4614,3317],{"class":2494},[359,4616,4617,4619],{"class":361,"line":3574},[359,4618,3335],{"class":579},[359,4620,3601],{"class":368},[359,4622,4623,4625],{"class":361,"line":3596},[359,4624,3343],{"class":579},[359,4626,3608],{"class":590},[359,4628,4629],{"class":361,"line":3},[359,4630,3351],{"class":2494},[359,4632,4633],{"class":361,"line":3611},[359,4634,431],{"emptyLinePlaceholder":192},[359,4636,4637],{"class":361,"line":3616},[359,4638,3677],{"class":737},[359,4640,4641],{"class":361,"line":3621},[359,4642,3683],{"class":737},[359,4644,4645],{"class":361,"line":3632},[359,4646,3689],{"class":737},[359,4648,4649],{"class":361,"line":3648},[359,4650,3695],{"class":737},[359,4652,4653],{"class":361,"line":3669},[359,4654,431],{"emptyLinePlaceholder":192},[359,4656,4657,4659,4661],{"class":361,"line":3674},[359,4658,3777],{"class":2494},[359,4660,3873],{"class":364},[359,4662,3783],{"class":780},[359,4664,4665,4667,4669],{"class":361,"line":3680},[359,4666,3789],{"class":579},[359,4668,597],{"class":590},[359,4670,3885],{"class":368},[359,4672,4673],{"class":361,"line":3686},[359,4674,431],{"emptyLinePlaceholder":192},[359,4676,4677,4679,4681,4683,4685,4687,4689,4691,4693],{"class":361,"line":3692},[359,4678,3896],{"class":2494},[359,4680,3309],{"class":780},[359,4682,621],{"class":579},[359,4684,3814],{"class":780},[359,4686,3515],{"class":575},[359,4688,3819],{"class":780},[359,4690,3534],{"class":575},[359,4692,3911],{"class":780},[359,4694,3317],{"class":2494},[359,4696,4697,4699,4701,4703,4705,4707,4709],{"class":361,"line":3698},[359,4698,3919],{"class":579},[359,4700,3814],{"class":780},[359,4702,3515],{"class":575},[359,4704,3819],{"class":780},[359,4706,3534],{"class":575},[359,4708,3851],{"class":780},[359,4710,3932],{"class":368},[359,4712,4713],{"class":361,"line":3703},[359,4714,431],{"emptyLinePlaceholder":192},[359,4716,4717,4720,4722,4724,4726,4728,4731],{"class":361,"line":3709},[359,4718,4719],{"class":575},"                BACKUP_ARCHIVE",[359,4721,580],{"class":579},[359,4723,3656],{"class":368},[359,4725,3534],{"class":575},[359,4727,3661],{"class":368},[359,4729,4730],{"class":575},"LAST_BACKUP",[359,4732,3666],{"class":368},[359,4734,4735,4737],{"class":361,"line":3715},[359,4736,3938],{"class":579},[359,4738,3941],{"class":368},[359,4740,4741],{"class":361,"line":3721},[359,4742,3947],{"class":2494},[359,4744,4745,4747],{"class":361,"line":3727},[359,4746,3938],{"class":579},[359,4748,3966],{"class":368},[359,4750,4751,4754],{"class":361,"line":3733},[359,4752,4753],{"class":579},"                exit",[359,4755,4756],{"class":590}," 4\n",[359,4758,4759],{"class":361,"line":3739},[359,4760,3972],{"class":2494},[359,4762,4763],{"class":361,"line":3745},[359,4764,3860],{"class":780},[359,4766,4767],{"class":361,"line":3751},[359,4768,431],{"emptyLinePlaceholder":192},[359,4770,4771,4773,4776],{"class":361,"line":3757},[359,4772,3777],{"class":2494},[359,4774,4775],{"class":364}," save_by_network",[359,4777,3783],{"class":780},[359,4779,4780,4782,4784,4787,4790,4793,4796,4798,4801],{"class":361,"line":3763},[359,4781,3789],{"class":579},[359,4783,597],{"class":590},[359,4785,4786],{"class":368}," \"Save on computer ",[359,4788,4789],{"class":575},"$HOST",[359,4791,4792],{"class":368}," as ",[359,4794,4795],{"class":575},"$USER",[359,4797,4115],{"class":368},[359,4799,4800],{"class":575},"$DIR",[359,4802,3424],{"class":368},[359,4804,4805],{"class":361,"line":3769},[359,4806,431],{"emptyLinePlaceholder":192},[359,4808,4809,4812,4814,4817,4820,4823,4826,4828],{"class":361,"line":3774},[359,4810,4811],{"class":364},"        ping",[359,4813,603],{"class":590},[359,4815,4816],{"class":590}," 3",[359,4818,4819],{"class":590}," -W",[359,4821,4822],{"class":590}," 10",[359,4824,4825],{"class":575}," $HOST",[359,4827,1347],{"class":780},[359,4829,4830],{"class":368},"\u002Fdev\u002Fnull\n",[359,4832,4833],{"class":361,"line":3786},[359,4834,431],{"emptyLinePlaceholder":192},[359,4836,4837,4839,4841,4844,4846,4849,4851],{"class":361,"line":3801},[359,4838,3896],{"class":2494},[359,4840,3309],{"class":780},[359,4842,4843],{"class":665},"$?",[359,4845,3367],{"class":579},[359,4847,4848],{"class":590}," 0",[359,4850,3373],{"class":780},[359,4852,3317],{"class":2494},[359,4854,4855,4857],{"class":361,"line":3806},[359,4856,3938],{"class":579},[359,4858,4859],{"class":368}," \"failed\"\n",[359,4861,4862],{"class":361,"line":3857},[359,4863,3947],{"class":2494},[359,4865,4866,4869,4871,4873,4876,4879,4882],{"class":361,"line":3863},[359,4867,4868],{"class":575},"                DESTINATION",[359,4870,580],{"class":579},[359,4872,3656],{"class":368},[359,4874,4875],{"class":575},"HOST",[359,4877,4878],{"class":368},"}:${",[359,4880,4881],{"class":575},"DIR",[359,4883,3666],{"class":368},[359,4885,4886,4889,4891,4893,4896,4898],{"class":361,"line":3868},[359,4887,4888],{"class":2494},"                if",[359,4890,3309],{"class":780},[359,4892,627],{"class":579},[359,4894,4895],{"class":575}," $USER",[359,4897,3373],{"class":780},[359,4899,3317],{"class":2494},[359,4901,4902,4905,4907,4909,4912,4915,4918],{"class":361,"line":3878},[359,4903,4904],{"class":575},"                        DESTINATION",[359,4906,580],{"class":579},[359,4908,3656],{"class":368},[359,4910,4911],{"class":575},"USER",[359,4913,4914],{"class":368},"}@${",[359,4916,4917],{"class":575},"DESTINATION",[359,4919,3666],{"class":368},[359,4921,4922],{"class":361,"line":3888},[359,4923,4924],{"class":2494},"                fi\n",[359,4926,4927,4930,4932,4934,4936,4938,4940,4942],{"class":361,"line":3893},[359,4928,4929],{"class":364},"                scp",[359,4931,3814],{"class":780},[359,4933,3515],{"class":575},[359,4935,3819],{"class":780},[359,4937,3651],{"class":575},[359,4939,3851],{"class":780},[359,4941,666],{"class":665},[359,4943,4944],{"class":575}," $DESTINATION\n",[359,4946,4947],{"class":361,"line":3916},[359,4948,431],{"emptyLinePlaceholder":192},[359,4950,4951,4953,4955,4957,4959,4961,4963],{"class":361,"line":3935},[359,4952,4888],{"class":2494},[359,4954,3309],{"class":780},[359,4956,4843],{"class":665},[359,4958,3367],{"class":579},[359,4960,4848],{"class":590},[359,4962,3373],{"class":780},[359,4964,3317],{"class":2494},[359,4966,4967,4970],{"class":361,"line":3944},[359,4968,4969],{"class":579},"                        echo",[359,4971,4859],{"class":368},[359,4973,4974],{"class":361,"line":3950},[359,4975,4976],{"class":2494},"                else\n",[359,4978,4979,4981],{"class":361,"line":3961},[359,4980,4969],{"class":579},[359,4982,4983],{"class":368}," \"ok\"\n",[359,4985,4986],{"class":361,"line":3969},[359,4987,4924],{"class":2494},[359,4989,4990],{"class":361,"line":3975},[359,4991,3972],{"class":2494},[359,4993,4994],{"class":361,"line":3980},[359,4995,3860],{"class":780},[359,4997,4998],{"class":361,"line":3985},[359,4999,431],{"emptyLinePlaceholder":192},[359,5001,5002,5004,5007],{"class":361,"line":3995},[359,5003,3777],{"class":2494},[359,5005,5006],{"class":364}," save_by_usb",[359,5008,3783],{"class":780},[359,5010,5011,5013,5015,5018,5021],{"class":361,"line":4003},[359,5012,3789],{"class":579},[359,5014,597],{"class":590},[359,5016,5017],{"class":368}," \"Save on drive ",[359,5019,5020],{"class":575},"$DEV",[359,5022,5023],{"class":368}," \"\n",[359,5025,5026],{"class":361,"line":4008},[359,5027,431],{"emptyLinePlaceholder":192},[359,5029,5030,5032,5034,5036,5039,5041],{"class":361,"line":4033},[359,5031,3896],{"class":2494},[359,5033,3309],{"class":780},[359,5035,621],{"class":579},[359,5037,5038],{"class":575}," $DEV",[359,5040,3373],{"class":780},[359,5042,3317],{"class":2494},[359,5044,5045,5048,5050],{"class":361,"line":4059},[359,5046,5047],{"class":575},"                TOUMOUNT",[359,5049,580],{"class":579},[359,5051,4226],{"class":368},[359,5053,5054,5057,5059,5061,5063,5066,5069,5071,5073,5076,5078,5080,5083,5086,5088,5091,5094],{"class":361,"line":4085},[359,5055,5056],{"class":575},"                LINECOUNT",[359,5058,580],{"class":579},[359,5060,3497],{"class":368},[359,5062,2047],{"class":364},[359,5064,5065],{"class":780}," |",[359,5067,5068],{"class":364}," grep",[359,5070,5038],{"class":575},[359,5072,5065],{"class":780},[359,5074,5075],{"class":364}," cut",[359,5077,2615],{"class":590},[359,5079,3370],{"class":590},[359,5081,5082],{"class":590}," -d",[359,5084,5085],{"class":579},"\\ ",[359,5087,5065],{"class":780},[359,5089,5090],{"class":364}," wc",[359,5092,5093],{"class":590}," -l",[359,5095,5096],{"class":368}," `\n",[359,5098,5099,5101,5103,5106,5109,5111,5113],{"class":361,"line":4090},[359,5100,4888],{"class":2494},[359,5102,3309],{"class":780},[359,5104,5105],{"class":575},"$LINECOUNT",[359,5107,5108],{"class":579}," -gt",[359,5110,4848],{"class":590},[359,5112,3373],{"class":780},[359,5114,3317],{"class":2494},[359,5116,5117,5120,5122,5124,5126,5128,5130,5132,5134,5136,5138,5140,5142,5144],{"class":361,"line":4095},[359,5118,5119],{"class":575},"                        MOUNTPOINT",[359,5121,580],{"class":579},[359,5123,3497],{"class":368},[359,5125,2047],{"class":364},[359,5127,5065],{"class":780},[359,5129,5068],{"class":364},[359,5131,5038],{"class":575},[359,5133,5065],{"class":780},[359,5135,5075],{"class":364},[359,5137,2615],{"class":590},[359,5139,4816],{"class":590},[359,5141,5082],{"class":590},[359,5143,5085],{"class":579},[359,5145,3509],{"class":368},[359,5147,5148,5151,5153],{"class":361,"line":4105},[359,5149,5150],{"class":575},"                        TOUMOUNT",[359,5152,580],{"class":579},[359,5154,5155],{"class":368},"0\n",[359,5157,5158],{"class":361,"line":4123},[359,5159,4976],{"class":2494},[359,5161,5162,5165],{"class":361,"line":4143},[359,5163,5164],{"class":364},"                        mount",[359,5166,5167],{"class":575}," $MOUNTPOINT\n",[359,5169,5170],{"class":361,"line":4155},[359,5171,431],{"emptyLinePlaceholder":192},[359,5173,5174,5177,5179,5181,5183,5185,5187],{"class":361,"line":4177},[359,5175,5176],{"class":2494},"                        if",[359,5178,3309],{"class":780},[359,5180,4843],{"class":665},[359,5182,3367],{"class":579},[359,5184,4848],{"class":590},[359,5186,3373],{"class":780},[359,5188,3317],{"class":2494},[359,5190,5191,5194],{"class":361,"line":4206},[359,5192,5193],{"class":579},"                                echo",[359,5195,5196],{"class":368}," \"mount failed \"\n",[359,5198,5199],{"class":361,"line":4211},[359,5200,5201],{"class":2494},"                        fi\n",[359,5203,5204],{"class":361,"line":4219},[359,5205,4924],{"class":2494},[359,5207,5208,5210,5212,5215,5217,5220,5222,5225,5228],{"class":361,"line":4229},[359,5209,4888],{"class":2494},[359,5211,3309],{"class":780},[359,5213,5214],{"class":579},"-d",[359,5216,3814],{"class":780},[359,5218,5219],{"class":575},"MOUNTPOINT",[359,5221,3819],{"class":780},[359,5223,5224],{"class":575},"PATHNAME",[359,5226,5227],{"class":780},"} ] ; ",[359,5229,3317],{"class":2494},[359,5231,5232,5235,5238,5241,5244,5247,5250,5252,5254,5256,5258,5260,5262,5264,5267],{"class":361,"line":4240},[359,5233,5234],{"class":2494},"                        for",[359,5236,5237],{"class":575}," FILE",[359,5239,5240],{"class":2494}," in",[359,5242,5243],{"class":368}," `",[359,5245,5246],{"class":364},"ls",[359,5248,5249],{"class":590}," -1",[359,5251,3814],{"class":368},[359,5253,3515],{"class":575},[359,5255,3819],{"class":368},[359,5257,3651],{"class":575},[359,5259,3851],{"class":368},[359,5261,666],{"class":665},[359,5263,3497],{"class":368},[359,5265,5266],{"class":780}," ; ",[359,5268,5269],{"class":2494},"do\n",[359,5271,5272,5275,5277,5279,5282,5285],{"class":361,"line":4245},[359,5273,5274],{"class":575},"                                FILENAME",[359,5276,580],{"class":579},[359,5278,3497],{"class":368},[359,5280,5281],{"class":364},"basename",[359,5283,5284],{"class":575}," $FILE",[359,5286,3509],{"class":368},[359,5288,5289,5292,5294,5296,5298,5300,5302,5304,5306,5309,5311],{"class":361,"line":4250},[359,5290,5291],{"class":2494},"                                if",[359,5293,3309],{"class":780},[359,5295,621],{"class":579},[359,5297,3814],{"class":780},[359,5299,5219],{"class":575},[359,5301,3819],{"class":780},[359,5303,5224],{"class":575},[359,5305,3819],{"class":780},[359,5307,5308],{"class":575},"FILENAME",[359,5310,5227],{"class":780},[359,5312,3317],{"class":2494},[359,5314,5315,5318],{"class":361,"line":4255},[359,5316,5317],{"class":579},"                                        echo",[359,5319,5320],{"class":368}," \"exist \"\n",[359,5322,5323],{"class":361,"line":4264},[359,5324,5325],{"class":2494},"                                else\n",[359,5327,5328,5331,5333,5336,5338,5340,5342,5344],{"class":361,"line":4272},[359,5329,5330],{"class":364},"                                        cp",[359,5332,3814],{"class":780},[359,5334,5335],{"class":575},"FILE",[359,5337,4199],{"class":780},[359,5339,5219],{"class":575},[359,5341,3819],{"class":780},[359,5343,5224],{"class":575},[359,5345,3860],{"class":780},[359,5347,5348],{"class":361,"line":4280},[359,5349,5350],{"class":2494},"                                fi\n",[359,5352,5354],{"class":361,"line":5353},117,[359,5355,5356],{"class":2494},"                        done\n",[359,5358,5360],{"class":361,"line":5359},118,[359,5361,431],{"emptyLinePlaceholder":192},[359,5363,5365,5367],{"class":361,"line":5364},119,[359,5366,4969],{"class":579},[359,5368,4983],{"class":368},[359,5370,5372],{"class":361,"line":5371},120,[359,5373,4976],{"class":2494},[359,5375,5377,5379],{"class":361,"line":5376},121,[359,5378,4969],{"class":579},[359,5380,4859],{"class":368},[359,5382,5384],{"class":361,"line":5383},122,[359,5385,4924],{"class":2494},[359,5387,5389,5391,5393,5396,5399,5401,5403],{"class":361,"line":5388},123,[359,5390,4888],{"class":2494},[359,5392,3309],{"class":780},[359,5394,5395],{"class":575},"$TOUMOUNT",[359,5397,5398],{"class":579}," -eq",[359,5400,3370],{"class":590},[359,5402,3373],{"class":780},[359,5404,3317],{"class":2494},[359,5406,5408,5411],{"class":361,"line":5407},124,[359,5409,5410],{"class":364},"                        umount",[359,5412,5167],{"class":575},[359,5414,5416],{"class":361,"line":5415},125,[359,5417,4924],{"class":2494},[359,5419,5421],{"class":361,"line":5420},126,[359,5422,431],{"emptyLinePlaceholder":192},[359,5424,5426],{"class":361,"line":5425},127,[359,5427,3947],{"class":2494},[359,5429,5431,5433],{"class":361,"line":5430},128,[359,5432,3938],{"class":579},[359,5434,5435],{"class":368}," \"device not found\"\n",[359,5437,5439],{"class":361,"line":5438},129,[359,5440,3972],{"class":2494},[359,5442,5444],{"class":361,"line":5443},130,[359,5445,3860],{"class":780},[359,5447,5449],{"class":361,"line":5448},131,[359,5450,431],{"emptyLinePlaceholder":192},[359,5452,5454,5456,5459],{"class":361,"line":5453},132,[359,5455,3777],{"class":2494},[359,5457,5458],{"class":364}," copy_to",[359,5460,3783],{"class":780},[359,5462,5464,5466,5469,5471],{"class":361,"line":5463},133,[359,5465,3789],{"class":579},[359,5467,5468],{"class":368}," \"Start make copy of backup ",[359,5470,3587],{"class":575},[359,5472,3424],{"class":368},[359,5474,5476],{"class":361,"line":5475},134,[359,5477,431],{"emptyLinePlaceholder":192},[359,5479,5481,5484,5487,5489,5492,5494],{"class":361,"line":5480},135,[359,5482,5483],{"class":2494},"        for",[359,5485,5486],{"class":575}," NAME",[359,5488,5240],{"class":2494},[359,5490,5491],{"class":575}," $COPYTO",[359,5493,5266],{"class":780},[359,5495,5269],{"class":2494},[359,5497,5499,5502,5504,5506,5508,5511,5514],{"class":361,"line":5498},136,[359,5500,5501],{"class":575},"                var_type",[359,5503,580],{"class":579},[359,5505,3415],{"class":368},[359,5507,3418],{"class":579},[359,5509,5510],{"class":368},"${",[359,5512,5513],{"class":575},"NAME",[359,5515,5516],{"class":368},"}_type\"\n",[359,5518,5520,5523,5525,5527,5529,5531,5534],{"class":361,"line":5519},137,[359,5521,5522],{"class":575},"                TYPE",[359,5524,580],{"class":579},[359,5526,3497],{"class":368},[359,5528,3500],{"class":579},[359,5530,3503],{"class":368},[359,5532,5533],{"class":575},"$var_type",[359,5535,3509],{"class":368},[359,5537,5539],{"class":361,"line":5538},138,[359,5540,431],{"emptyLinePlaceholder":192},[359,5542,5544,5546,5549,5552,5554,5557],{"class":361,"line":5543},139,[359,5545,3938],{"class":579},[359,5547,5548],{"class":368}," \"--> ",[359,5550,5551],{"class":575},"$NAME",[359,5553,4792],{"class":368},[359,5555,5556],{"class":575},"$TYPE",[359,5558,3424],{"class":368},[359,5560,5562,5565,5568],{"class":361,"line":5561},140,[359,5563,5564],{"class":2494},"                case",[359,5566,5567],{"class":575}," $TYPE",[359,5569,5570],{"class":2494}," in\n",[359,5572,5574,5577],{"class":361,"line":5573},141,[359,5575,5576],{"class":368},"                        \"usb\"",[359,5578,5579],{"class":780},")\n",[359,5581,5583,5586,5588,5590,5592,5594,5596],{"class":361,"line":5582},142,[359,5584,5585],{"class":575},"                                var_dev",[359,5587,580],{"class":579},[359,5589,3415],{"class":368},[359,5591,3418],{"class":579},[359,5593,5510],{"class":368},[359,5595,5513],{"class":575},[359,5597,5598],{"class":368},"}_dev\"\n",[359,5600,5602,5605,5607],{"class":361,"line":5601},143,[359,5603,5604],{"class":575},"                                DEV",[359,5606,580],{"class":579},[359,5608,5609],{"class":780},"`eval echo $var_dev`\n",[359,5611,5613],{"class":361,"line":5612},144,[359,5614,431],{"emptyLinePlaceholder":192},[359,5616,5618,5621,5623,5625,5627],{"class":361,"line":5617},145,[359,5619,5620],{"class":368},"                                var_mountpoint=\"",[359,5622,3418],{"class":579},[359,5624,5510],{"class":368},[359,5626,5513],{"class":575},[359,5628,5629],{"class":368},"}_mountpoint\"\n",[359,5631,5633,5636,5638],{"class":361,"line":5632},146,[359,5634,5635],{"class":575},"                                MOUNTPOINT",[359,5637,580],{"class":579},[359,5639,5640],{"class":780},"`eval echo $var_mountpoint`\n",[359,5642,5644],{"class":361,"line":5643},147,[359,5645,431],{"emptyLinePlaceholder":192},[359,5647,5649,5652,5654,5656,5658],{"class":361,"line":5648},148,[359,5650,5651],{"class":368},"                                var_pathname=\"",[359,5653,3418],{"class":579},[359,5655,5510],{"class":368},[359,5657,5513],{"class":575},[359,5659,5660],{"class":368},"}_pathname\"\n",[359,5662,5664,5667,5669],{"class":361,"line":5663},149,[359,5665,5666],{"class":575},"                                PATHNAME",[359,5668,580],{"class":579},[359,5670,5671],{"class":780},"`eval echo $var_pathname`\n",[359,5673,5675],{"class":361,"line":5674},150,[359,5676,431],{"emptyLinePlaceholder":192},[359,5678,5680,5683],{"class":361,"line":5679},151,[359,5681,5682],{"class":368},"                                save_by_usb",[359,5684,4261],{"class":780},[359,5686,5688],{"class":361,"line":5687},152,[359,5689,5690],{"class":780},"                        ;;\n",[359,5692,5694],{"class":361,"line":5693},153,[359,5695,431],{"emptyLinePlaceholder":192},[359,5697,5699,5702],{"class":361,"line":5698},154,[359,5700,5701],{"class":368},"                        \"net\"",[359,5703,5579],{"class":780},[359,5705,5707,5710,5712,5714,5716,5718,5720],{"class":361,"line":5706},155,[359,5708,5709],{"class":575},"                                var_host",[359,5711,580],{"class":579},[359,5713,3415],{"class":368},[359,5715,3418],{"class":579},[359,5717,5510],{"class":368},[359,5719,5513],{"class":575},[359,5721,5722],{"class":368},"}_host\"\n",[359,5724,5726,5729,5731],{"class":361,"line":5725},156,[359,5727,5728],{"class":575},"                                HOST",[359,5730,580],{"class":579},[359,5732,5733],{"class":780},"`eval echo $var_host`\n",[359,5735,5737],{"class":361,"line":5736},157,[359,5738,431],{"emptyLinePlaceholder":192},[359,5740,5742,5745,5747,5749,5751],{"class":361,"line":5741},158,[359,5743,5744],{"class":368},"                                var_user=\"",[359,5746,3418],{"class":579},[359,5748,5510],{"class":368},[359,5750,5513],{"class":575},[359,5752,5753],{"class":368},"}_user\"\n",[359,5755,5757,5760,5762],{"class":361,"line":5756},159,[359,5758,5759],{"class":575},"                                USER",[359,5761,580],{"class":579},[359,5763,5764],{"class":780},"`eval echo $var_user`\n",[359,5766,5768],{"class":361,"line":5767},160,[359,5769,431],{"emptyLinePlaceholder":192},[359,5771,5773,5776,5778,5780,5782],{"class":361,"line":5772},161,[359,5774,5775],{"class":368},"                                var_dir=\"",[359,5777,3418],{"class":579},[359,5779,5510],{"class":368},[359,5781,5513],{"class":575},[359,5783,5784],{"class":368},"}_dir\"\n",[359,5786,5788,5791,5793],{"class":361,"line":5787},162,[359,5789,5790],{"class":575},"                                DIR",[359,5792,580],{"class":579},[359,5794,5795],{"class":780},"`eval echo $var_dir`\n",[359,5797,5799],{"class":361,"line":5798},163,[359,5800,431],{"emptyLinePlaceholder":192},[359,5802,5804,5807],{"class":361,"line":5803},164,[359,5805,5806],{"class":368},"                                save_by_network",[359,5808,4261],{"class":780},[359,5810,5812],{"class":361,"line":5811},165,[359,5813,5690],{"class":780},[359,5815,5817],{"class":361,"line":5816},166,[359,5818,5819],{"class":2494},"                esac\n",[359,5821,5823],{"class":361,"line":5822},167,[359,5824,5825],{"class":2494},"        done\n",[359,5827,5829],{"class":361,"line":5828},168,[359,5830,3860],{"class":780},[359,5832,5834],{"class":361,"line":5833},169,[359,5835,431],{"emptyLinePlaceholder":192},[359,5837,5839,5842],{"class":361,"line":5838},170,[359,5840,5841],{"class":364},"copy_to",[359,5843,4261],{"class":780},[1383,5845,5846],{},"html pre.shiki code .sV9Aq, html code.shiki .sV9Aq{--shiki-default:#7F848E;--shiki-default-font-style:italic}html pre.shiki code .sVyAn, html code.shiki .sVyAn{--shiki-default:#E06C75}html pre.shiki code .sjrmR, html code.shiki .sjrmR{--shiki-default:#56B6C2}html pre.shiki code .subq3, html code.shiki .subq3{--shiki-default:#98C379}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .seHd6, html code.shiki .seHd6{--shiki-default:#C678DD}html pre.shiki code .sn6KH, html code.shiki .sn6KH{--shiki-default:#ABB2BF}html pre.shiki code .sVC51, html code.shiki .sVC51{--shiki-default:#D19A66}html pre.shiki code .sU0A5, html code.shiki .sU0A5{--shiki-default:#E5C07B}html pre.shiki code .sVbv2, html code.shiki .sVbv2{--shiki-default:#61AFEF}",{"title":34,"searchDepth":167,"depth":167,"links":5848},[5849,5850,5851],{"id":2901,"depth":428,"text":2902},{"id":3185,"depth":428,"text":3186},{"id":4288,"depth":428,"text":4289},"2006-10-16","Ce billet concerne une application, de mon cru, écrite en bash.",{"type":10,"value":5855},[5856,5860,5864,5870,5872],[13,5857,2872,5858,37],{},[343,5859,355],{},[13,5861,2877,5862,2881],{},[343,5863,2880],{},[13,5865,2884,5866,2888,5868,2892],{},[343,5867,2887],{},[343,5869,2891],{},[13,5871,2895],{},[13,5873,2898],{},{},"\u002Fpost\u002Fsauvegarde-automatique",{"title":2867,"description":5853},"posts\u002FSysAdmin\u002F2006-10-16-sauvegarde-automatique",[5879],"script","tiOqKpPKnPayGrhb8Ovj19GWXvi-3rDyhtkkPwFVK5Q",{"id":5882,"title":5883,"author":8,"body":5884,"category":2808,"categorySlug":2809,"date":6547,"description":5888,"excerpt":6548,"extension":189,"location":190,"meta":6556,"navigation":192,"path":6557,"published":192,"seo":6558,"slug":6559,"stem":6560,"tags":6561,"timeToRead":446,"__hash__":6562},"posts\u002Fposts\u002FSysAdmin\u002F2006-08-24-chiffrer-une-partition-d-un-disque.md","Chiffrer une partition d'un disque",{"type":10,"value":5885,"toc":6537},[5886,5889,5892,5895,5899,5935,5944,5948,5962,5968,5972,5975,5981,5985,6002,6006,6012,6015,6018,6024,6027,6031,6041,6047,6050,6056,6060,6066,6069,6075,6081,6087,6093,6099,6105,6111,6115,6120,6126,6131,6137,6140,6146,6149,6155,6159,6162,6167,6173,6178,6184,6187,6193,6197,6205,6501,6534],[13,5887,5888],{},"On peut se demander à quoi sert le chiffrage des partitions d'un disque\nsous Linux. Après tout, avec la gestion des droits on peut empêcher un\nutilisateur d'accéder à certain endroit du disque.",[13,5890,5891],{},"Maintenant, imaginez que vous travaillez pour une entreprise et que vous\npossédez des données confidentielles (les documents du dernier prototype\nde 'chez_pas_quoi', ...). En cas de vol de vos machines, un intrus\npeut lire le contenu du disque dur, avec un autre système\nd'exploitation, ou avec un autre Linux dont il aura les droits\nd'administrateur.",[13,5893,5894],{},"Heureusement, les données confidentielles auront été cachées dans une\npartition chiffrée du disque dur, et donc non accessible sans la clé de\ncryptage que vous aurez judicieusement choisie.",[335,5896,5898],{"id":5897},"les-préparations","Les préparations",[67,5900,5901,5904,5926],{},[70,5902,5903],{},"Il faut d'abord choisir une clé de chiffrage difficile à trouver.\nSouvent une suite de chiffres et de lettres minuscules\u002Fmajuscules\nmélangées n'ayant aucune signification, constitue une véritable clé,\ndifficilement cassable. Sont à proscrire les noms, les prénoms, les\ndates, ou tout autre événement lié à votre vie ou à la vie de\nl'entreprise.",[70,5905,5906,5907,1268,5910,1268,5913,1268,5916,5919,5920],{},"Une partition vide. Cette partition doit être complètement vide de\ndonnées afin de pouvoir la reformater dans un autre système de\nfichier. Il vous faudra donc utiliser un logiciel tel que\n",[343,5908,5909],{},"Gnu\u002FParted",[343,5911,5912],{},"QtParted",[343,5914,5915],{},"Fdisk",[343,5917,5918],{},"LVM"," pour créer votre partition,\nou utiliser un fichier à l'aide de l'interface Loop. Dans les\nexemples ci-dessous nous utiliserons un volume logique issu de LVM.\nIl aura été créé à l'aide de la commande",[351,5921,5924],{"className":5922,"code":5923,"language":704},[702],"lvcreate -L10G -n secure-close debian\n",[343,5925,5923],{"__ignoreMap":34},[70,5927,5928,5929],{},"Posséder un noyau 2.6 compiler avec le support Device-Manager, et\nDM-Crypt, ainsi que les utilitaires dmsetup et cryptsetup que vous\ninstallez sous Gnu\u002FDebian Sarge à l'aide de la commande :",[351,5930,5933],{"className":5931,"code":5932,"language":704},[702],"apt-get install dmsetup cryptsetup openssl\n",[343,5934,5932],{"__ignoreMap":34},[335,5936,5938,5939],{"id":5937},"préparation-de-la-partition1","Préparation de la partition",[26,5940,5941],{},[29,5942,36],{"href":269,"ariaDescribedBy":5943,"dataFootnoteRef":34,"id":271},[33],[387,5945,5947],{"id":5946},"cas-dune-partition","Cas d'une partition",[13,5949,5950,5951,5955,5956,5961],{},"Si vous stockez des données chiffrées sur une partition contenant à\nl'origine des données non cryptées ou des blancs, il sera très facile de\nrepérer les données chiffrées et les données claires, de voir la\nquantité de données chiffrées, voire même de les décrypter plus\nfacilement. Nous allons donc ",[5952,5953,5954],"q",{},"nettoyer"," la partition en y écrivant\ndes données aléatoires ",[26,5957,5958],{},[29,5959,272],{"href":31,"ariaDescribedBy":5960,"dataFootnoteRef":34,"id":35},[33]," :",[351,5963,5966],{"className":5964,"code":5965,"language":704},[702],"dd if=\u002Fdev\u002Furandom of=\u002Fdev\u002Fdebian\u002Fsecure-close\n",[343,5967,5965],{"__ignoreMap":34},[387,5969,5971],{"id":5970},"cas-dun-fichier","Cas d'un fichier",[13,5973,5974],{},"Vous pouvez aussi décider d'enregistrer vos données chiffrées dans un\nfichier (parce que vous n'avez plus d'espace libre pour une nouvelle\npartition par exemple). Pour cela, vous pouvez utiliser les commandes\nsuivantes. Il vous faudra alors utiliser le périphérique \u002Fdev\u002Floop0 dans\nla suite de l'article.",[351,5976,5979],{"className":5977,"code":5978,"language":704},[702],"dd if=\u002Fdev\u002Furandom of=\u002Fhome\u002Fsecure_close.img bs=1M count=10000\nlosetup \u002Fdev\u002Floop0 \u002Fhome\u002Fsecure_close.img\n",[343,5980,5978],{"__ignoreMap":34},[335,5982,5984],{"id":5983},"chiffrement-de-la-partition-et-création-du-système-de-fichier","Chiffrement de la partition et création du système de fichier",[13,5986,5987,5988,1268,5991,1268,5994,5997,5998,6001],{},"Nous allons maintenant ouvrir notre partition en tant que système\nchiffré et formater son contenu. Vous pourrez formater la partition avec\nle système de fichier de votre choix (",[343,5989,5990],{},"ReiserFS",[343,5992,5993],{},"Ext3FS",[343,5995,5996],{},"Ext2FS",",\n",[343,5999,6000],{},"XFS",", ....)",[387,6003,6005],{"id":6004},"sous-gnudebian-sarge","Sous Gnu\u002FDebian Sarge",[351,6007,6010],{"className":6008,"code":6009,"language":704},[702],"openssl rand -base64 64 | head -n 1 | openssl aes-256-ecb > \u002Fhome\u002Fsecure_close.key\n",[343,6011,6009],{"__ignoreMap":34},[13,6013,6014],{},"Cette ligne de commande va créer une clé de chiffrage dans le fichier\nsecure_close.key et le protéger à l'aide de votre mot de passe. Cela\nvous permettra de changer votre mot de passe, sans reformater la\npartition. Cette commande vous demandera alors votre mot de passe, il ne\nfaut maintenant plus l'oublier.",[13,6016,6017],{},"Maintenant nous allons chiffrer la partition à proprement parlé :",[351,6019,6022],{"className":6020,"code":6021,"language":704},[702],"openssl enc -d -aes-256-ecb -in \u002Fhome\u002Fsecure_close.key | cryptsetup create secure-open \u002Fdev\u002Fdebian\u002Fsecure-close\n",[343,6023,6021],{"__ignoreMap":34},[13,6025,6026],{},"Vous pourrez alors retrouver votre partition déchiffrée dans\n\u002Fdev\u002Fmapper\u002Fsecure-open. Il ne vous reste plus qu'a créer le système de\nfichier, monter la partition et copier les fichiers à protéger. (Vous\npouvez utiliser aussi un utilitaire d'effacement spécialisé pour écraser\nles fichiers avec un contenu aléatoire avant de réellement le\nsupprimer.)",[387,6028,6030],{"id":6029},"sous-debian-etchsid","Sous Debian etch\u002Fsid",[13,6032,6033,6034,6037,6038,6040],{},"Sous Debian etch\u002Fsid, il est possible d'utiliser ",[17,6035,6036],{},"Luks"," pour le\nchiffrage. Cela permet de stocker la clé au début de la partition, et de\npouvoir la modifier ultérieurement sans reformater. Cela permet de ne\nplus avoir de fichier séparé avec la clé.Pour formater une partition\nau format ",[17,6039,6036],{}," et ainsi l'initialiser avec le mot de passe de\nprotection, il faut utiliser la commande suivante (Attention à ne pas\noublier le mot de passe) :",[351,6042,6045],{"className":6043,"code":6044,"language":704},[702],"cryptsetup luksFormat \u002Fdev\u002Fdebian\u002Fsecure-close\n",[343,6046,6044],{"__ignoreMap":34},[13,6048,6049],{},"Après cela, on se retrouve avec une partition chiffré vierge. Il faut\ndonc l'ouvrir pour pouvoir ensuite y installer un système de fichier et\ndes fichiers. Pour cela, on utilise la commande suivante qui va associer\nà notre partition chiffrée une partition déchiffrée (virtuelle)",[351,6051,6054],{"className":6052,"code":6053,"language":704},[702],"cryptsetup luksOpen \u002Fdev\u002Fdebian\u002Fsecure-close secure-open\n",[343,6055,6053],{"__ignoreMap":34},[387,6057,6059],{"id":6058},"préparation-et-protection-des-données","Préparation et protection des données",[351,6061,6064],{"className":6062,"code":6063,"language":704},[702],"mke2fs -j \u002Fdev\u002Fmapper\u002Fsecure-open\nmount -t ext3 \u002Fdev\u002Fmapper\u002Fsecure-open \u002Fmnt\ncp -a dossiers_confidentiels\u002F* \u002Fmnt\u002F\n",[343,6065,6063],{"__ignoreMap":34},[13,6067,6068],{},"Une fois que vous avez fini, vous pouvez démonter la partition, et\nsupprimer l'accès au contenu déchiffré.",[351,6070,6073],{"className":6071,"code":6072,"language":704},[702],"umount \u002Fmnt\n",[343,6074,6072],{"__ignoreMap":34},[13,6076,6077,6078,6080],{},"Si vous n'utilisez pas ",[17,6079,6036],{}," (sous Gnu\u002FDebian Sarge) :",[351,6082,6085],{"className":6083,"code":6084,"language":704},[702],"cryptsetup remove secure-open\n",[343,6086,6084],{"__ignoreMap":34},[13,6088,6089,6090,6092],{},"Si vous utilisez ",[17,6091,6036],{},", la commande est",[351,6094,6097],{"className":6095,"code":6096,"language":704},[702],"cryptsetup luksClose secure-open\n",[343,6098,6096],{"__ignoreMap":34},[13,6100,6101,6102,5961],{},"Et si vous avez créé un périphérique ",[343,6103,6104],{},"loop",[351,6106,6109],{"className":6107,"code":6108,"language":704},[702],"losetup -d \u002Fdev\u002Floop0\n",[343,6110,6108],{"__ignoreMap":34},[335,6112,6114],{"id":6113},"utilisation-courante","Utilisation courante",[13,6116,6117,6118,5961],{},"Dans une utilisation courante vous allez monter la partition quand vous\nvoudrez y accéder, et la démonter quand vous ne l'utiliserez plus.Le\nmontage de la partition se fait à l'aide des commandes ci-dessous, si\nvous n'utilisez pas ",[17,6119,6036],{},[351,6121,6124],{"className":6122,"code":6123,"language":704},[702],"openssl enc -d -aes-256-ecb -in \u002Fhome\u002Fsecure_close.key | cryptsetup create secure-open \u002Fdev\u002Fdebian\u002Fsecure-close\nmount -t ext3 \u002Fdev\u002Fmapper\u002Fsecure-open \u002Fmnt\n",[343,6125,6123],{"__ignoreMap":34},[13,6127,6128,6129],{},"et à partir de la commande suivante si vous utilisez ",[17,6130,6036],{},[351,6132,6135],{"className":6133,"code":6134,"language":704},[702],"cryptsetup luksOpen \u002Fdev\u002Fdebian\u002Fsecure-close secure-open\nmount -t ext3 \u002Fdev\u002Fmapper\u002Fsecure-open \u002Fmnt\n",[343,6136,6134],{"__ignoreMap":34},[13,6138,6139],{},"Le démontage de la partition est identique :",[351,6141,6144],{"className":6142,"code":6143,"language":704},[702],"umount \u002Fmntcryptsetup remove secure-open\n",[343,6145,6143],{"__ignoreMap":34},[13,6147,6148],{},"ou",[351,6150,6153],{"className":6151,"code":6152,"language":704},[702],"umount \u002Fmntcryptsetup luksClose secure-open\n",[343,6154,6152],{"__ignoreMap":34},[335,6156,6158],{"id":6157},"changement-de-mot-de-passe","Changement de mot de passe",[13,6160,6161],{},"Quand vous souhaitez changer de mot de passe, vous pouvez utiliser la\ncommande suivante :",[13,6163,6164,6165],{},"Sans ",[17,6166,6036],{},[351,6168,6171],{"className":6169,"code":6170,"language":704},[702],"echo `openssl enc -d -aes-256-ecb -in \u002Fhome\u002Fsecure_close.key` | openssl aes-256-ecb > \u002Fhome\u002Fsecure_close.key\n",[343,6172,6170],{"__ignoreMap":34},[13,6174,6175,6176],{},"Avec ",[17,6177,6036],{},[351,6179,6182],{"className":6180,"code":6181,"language":704},[702],"cryptsetup luksDump \u002Fdev\u002Fdebian\u002Fsecure-close\n",[343,6183,6181],{"__ignoreMap":34},[13,6185,6186],{},"pour voir quels sont les slots utilisés.puis",[351,6188,6191],{"className":6189,"code":6190,"language":704},[702],"cryptsetup luksAddKey \u002Fdev\u002Fdebian\u002Fsecure-closecryptsetup luksDelKey [ancien slot]\n",[343,6192,6190],{"__ignoreMap":34},[335,6194,6196],{"id":6195},"un-script-pour-le-montage-et-le-démontage-automatique","Un script pour le montage et le démontage automatique",[13,6198,6199,6200,5961],{},"Voici un script que vous pouvez utiliser en root ou à l'aide de la\ncommande sudo pour monter et démonter vos partitions chiffrer",[26,6201,6202],{},[29,6203,2524],{"href":2521,"ariaDescribedBy":6204,"dataFootnoteRef":34,"id":2523},[33],[351,6206,6208],{"className":353,"code":6207,"language":355,"meta":34,"style":34},"#!\u002Fbin\u002Fsh\n\nif [ -e \u002Fdev\u002Fmapper\u002Fsecure-open ] ; then\n        umount \u002Fhome\u002Fsecure 2> \u002Fdev\u002Fnull\n        if [ $? != 0 ] ; then\n                kdialog --title KSecure --error \"Impossible de démonter le périphérique\"\n        fi\n        if [ -e \u002Fdev\u002Fmapper\u002Fsecure-open ] ; then\n                \u002Fsbin\u002Fcryptsetup remove secure-open\n                kdialog --title KSecure --msgbox \"Suppression du périphérique accomplie\"\n        fi\n    else\n        password=`kdialog --title KSecure --password \"Clé de déchiffrement\"`\n        if [ -z $password ] ; then\n                password=\"nopassword\"\n        fi\n        echo \"$password\" | \\\n        openssl enc -d -aes-256-ecb -in ~\u002Fcompte\u002Fsecure.cle -kfile \u002Fdev\u002Fstdin | \\\n        \u002Fsbin\u002Fcryptsetup create secure-open \u002Fdev\u002Fdebian\u002Fsecure-close 2> \u002Fdev\u002Fnull\n        mount \u002Fhome\u002Fsecure 2> \u002Fdev\u002Fnull\n        if [ $? -ne  0 ] ; then\n                kdialog --title KSecure --error \"Clé incorrecte\"\n                \u002Fsbin\u002Fcryptsetup remove secure-open\n        fi\nfi\n",[343,6209,6210,6214,6218,6231,6244,6261,6278,6282,6294,6305,6319,6323,6328,6351,6366,6376,6380,6397,6426,6444,6455,6472,6485,6493,6497],{"__ignoreMap":34},[359,6211,6212],{"class":361,"line":199},[359,6213,3196],{"class":737},[359,6215,6216],{"class":361,"line":167},[359,6217,431],{"emptyLinePlaceholder":192},[359,6219,6220,6222,6224,6226,6229],{"class":361,"line":428},[359,6221,3306],{"class":2494},[359,6223,3309],{"class":780},[359,6225,621],{"class":579},[359,6227,6228],{"class":780}," \u002Fdev\u002Fmapper\u002Fsecure-open ] ; ",[359,6230,3317],{"class":2494},[359,6232,6233,6236,6239,6242],{"class":361,"line":434},[359,6234,6235],{"class":364},"        umount",[359,6237,6238],{"class":368}," \u002Fhome\u002Fsecure",[359,6240,6241],{"class":780}," 2> ",[359,6243,4830],{"class":368},[359,6245,6246,6248,6250,6252,6255,6257,6259],{"class":361,"line":440},[359,6247,3896],{"class":2494},[359,6249,3309],{"class":780},[359,6251,4843],{"class":665},[359,6253,6254],{"class":579}," !=",[359,6256,4848],{"class":590},[359,6258,3373],{"class":780},[359,6260,3317],{"class":2494},[359,6262,6263,6266,6269,6272,6275],{"class":361,"line":446},[359,6264,6265],{"class":364},"                kdialog",[359,6267,6268],{"class":590}," --title",[359,6270,6271],{"class":368}," KSecure",[359,6273,6274],{"class":590}," --error",[359,6276,6277],{"class":368}," \"Impossible de démonter le périphérique\"\n",[359,6279,6280],{"class":361,"line":451},[359,6281,3972],{"class":2494},[359,6283,6284,6286,6288,6290,6292],{"class":361,"line":457},[359,6285,3896],{"class":2494},[359,6287,3309],{"class":780},[359,6289,621],{"class":579},[359,6291,6228],{"class":780},[359,6293,3317],{"class":2494},[359,6295,6296,6299,6302],{"class":361,"line":463},[359,6297,6298],{"class":364},"                \u002Fsbin\u002Fcryptsetup",[359,6300,6301],{"class":368}," remove",[359,6303,6304],{"class":368}," secure-open\n",[359,6306,6307,6309,6311,6313,6316],{"class":361,"line":469},[359,6308,6265],{"class":364},[359,6310,6268],{"class":590},[359,6312,6271],{"class":368},[359,6314,6315],{"class":590}," --msgbox",[359,6317,6318],{"class":368}," \"Suppression du périphérique accomplie\"\n",[359,6320,6321],{"class":361,"line":475},[359,6322,3972],{"class":2494},[359,6324,6325],{"class":361,"line":481},[359,6326,6327],{"class":2494},"    else\n",[359,6329,6330,6333,6335,6337,6340,6342,6345,6348],{"class":361,"line":487},[359,6331,6332],{"class":575},"        password",[359,6334,580],{"class":579},[359,6336,3497],{"class":368},[359,6338,6339],{"class":364},"kdialog",[359,6341,6268],{"class":590},[359,6343,6344],{"class":368}," KSecure ",[359,6346,6347],{"class":590},"--password",[359,6349,6350],{"class":368}," \"Clé de déchiffrement\"`\n",[359,6352,6353,6355,6357,6359,6362,6364],{"class":361,"line":493},[359,6354,3896],{"class":2494},[359,6356,3309],{"class":780},[359,6358,3581],{"class":579},[359,6360,6361],{"class":575}," $password",[359,6363,3373],{"class":780},[359,6365,3317],{"class":2494},[359,6367,6368,6371,6373],{"class":361,"line":499},[359,6369,6370],{"class":575},"                password",[359,6372,580],{"class":579},[359,6374,6375],{"class":368},"\"nopassword\"\n",[359,6377,6378],{"class":361,"line":505},[359,6379,3972],{"class":2494},[359,6381,6382,6384,6386,6389,6391,6394],{"class":361,"line":510},[359,6383,3789],{"class":579},[359,6385,3584],{"class":368},[359,6387,6388],{"class":575},"$password",[359,6390,3415],{"class":368},[359,6392,6393],{"class":780}," | ",[359,6395,6396],{"class":579},"\\\n",[359,6398,6399,6402,6405,6407,6410,6413,6416,6419,6422,6424],{"class":361,"line":516},[359,6400,6401],{"class":364},"        openssl",[359,6403,6404],{"class":368}," enc",[359,6406,5082],{"class":590},[359,6408,6409],{"class":590}," -aes-256-ecb",[359,6411,6412],{"class":590}," -in",[359,6414,6415],{"class":368}," ~\u002Fcompte\u002Fsecure.cle",[359,6417,6418],{"class":590}," -kfile",[359,6420,6421],{"class":368}," \u002Fdev\u002Fstdin",[359,6423,6393],{"class":780},[359,6425,6396],{"class":579},[359,6427,6428,6431,6434,6437,6440,6442],{"class":361,"line":522},[359,6429,6430],{"class":364},"        \u002Fsbin\u002Fcryptsetup",[359,6432,6433],{"class":368}," create",[359,6435,6436],{"class":368}," secure-open",[359,6438,6439],{"class":368}," \u002Fdev\u002Fdebian\u002Fsecure-close",[359,6441,6241],{"class":780},[359,6443,4830],{"class":368},[359,6445,6446,6449,6451,6453],{"class":361,"line":528},[359,6447,6448],{"class":364},"        mount",[359,6450,6238],{"class":368},[359,6452,6241],{"class":780},[359,6454,4830],{"class":368},[359,6456,6457,6459,6461,6463,6465,6468,6470],{"class":361,"line":1125},[359,6458,3896],{"class":2494},[359,6460,3309],{"class":780},[359,6462,4843],{"class":665},[359,6464,3367],{"class":579},[359,6466,6467],{"class":590},"  0",[359,6469,3373],{"class":780},[359,6471,3317],{"class":2494},[359,6473,6474,6476,6478,6480,6482],{"class":361,"line":1151},[359,6475,6265],{"class":364},[359,6477,6268],{"class":590},[359,6479,6271],{"class":368},[359,6481,6274],{"class":590},[359,6483,6484],{"class":368}," \"Clé incorrecte\"\n",[359,6486,6487,6489,6491],{"class":361,"line":3076},[359,6488,6298],{"class":364},[359,6490,6301],{"class":368},[359,6492,6304],{"class":368},[359,6494,6495],{"class":361,"line":3081},[359,6496,3972],{"class":2494},[359,6498,6499],{"class":361,"line":3087},[359,6500,3351],{"class":2494},[136,6502,6504,6507],{"className":6503,"dataFootnotes":34},[139],[141,6505,145],{"className":6506,"id":33},[144],[147,6508,6509,6519,6525],{},[70,6510,6511,6512,1378,6516],{"id":293},"Les différentes commandes sont inspirés du site ",[29,6513,6514],{"href":6514,"rel":6515},"http:\u002F\u002Fdocisland.blogspot.com\u002F",[157],[29,6517,165],{"href":297,"ariaLabel":162,"className":6518,"dataFootnoteBackref":34},[164],[70,6520,6521,6522],{"id":151},"Attention, cela détruira le contenu de la partition que vous assainissez. ",[29,6523,165],{"href":161,"ariaLabel":298,"className":6524,"dataFootnoteBackref":34},[164],[70,6526,6527,6528,6530,6531],{"id":2781},"Vous pourrez trouver un script pour le format ",[17,6529,6036],{}," dans les commentaires ou dans la partie Script du site. ",[29,6532,165],{"href":2785,"ariaLabel":2786,"className":6533,"dataFootnoteBackref":34},[164],[1383,6535,6536],{},"html pre.shiki code .sV9Aq, html code.shiki .sV9Aq{--shiki-default:#7F848E;--shiki-default-font-style:italic}html pre.shiki code .seHd6, html code.shiki .seHd6{--shiki-default:#C678DD}html pre.shiki code .sn6KH, html code.shiki .sn6KH{--shiki-default:#ABB2BF}html pre.shiki code .sjrmR, html code.shiki .sjrmR{--shiki-default:#56B6C2}html pre.shiki code .sVbv2, html code.shiki .sVbv2{--shiki-default:#61AFEF}html pre.shiki code .subq3, html code.shiki .subq3{--shiki-default:#98C379}html pre.shiki code .sU0A5, html code.shiki .sU0A5{--shiki-default:#E5C07B}html pre.shiki code .sVC51, html code.shiki .sVC51{--shiki-default:#D19A66}html pre.shiki code .sVyAn, html code.shiki .sVyAn{--shiki-default:#E06C75}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":34,"searchDepth":167,"depth":167,"links":6538},[6539,6540,6542,6543,6544,6545,6546],{"id":5897,"depth":428,"text":5898},{"id":5937,"depth":428,"text":6541},"Préparation de la partition1",{"id":5983,"depth":428,"text":5984},{"id":6113,"depth":428,"text":6114},{"id":6157,"depth":428,"text":6158},{"id":6195,"depth":428,"text":6196},{"id":33,"depth":167,"text":145},"2006-08-24",{"type":10,"value":6549},[6550,6552,6554],[13,6551,5888],{},[13,6553,5891],{},[13,6555,5894],{},{},"\u002Fpost\u002Fchiffrer-une-partition-d-un-disque",{"title":5883,"description":5888},"chiffrer-une-partition-d-un-disque","posts\u002FSysAdmin\u002F2006-08-24-chiffrer-une-partition-d-un-disque",[561,5879],"MUqfUdlUG9slFHhhsbdUUZar_gs50vY5m24eDEqwL4Q",{"id":6564,"title":6565,"author":8,"body":6566,"category":2808,"categorySlug":2809,"date":8664,"description":8665,"excerpt":8666,"extension":189,"location":190,"meta":8676,"navigation":192,"path":8677,"published":192,"seo":8678,"slug":8679,"stem":8680,"tags":8681,"timeToRead":446,"__hash__":8682},"posts\u002Fposts\u002FSysAdmin\u002F2006-08-20-script-linux.md","Script Linux",{"type":10,"value":6567,"toc":8654},[6568,6579,6582,6586,6596,6672,6685,6689,6692,6750,6754,6773,7082,7086,7089,7209,7213,7220,7511,7515,7529,7659,7663,7683,8014,8018,8030,8651],[13,6569,6570,6571,6574,6575,6578],{},"Ce billet est consacré au script Linux. J'ai écrit divers script pour\n\"automatiser\" certaines commandes, ",[17,6572,6573],{},"même si je dois exécuter ces\nscripts manuellement",". Je pourrais, quand bien même, appeler ces scripts\ndans un ",[343,6576,6577],{},"cron"," si je le souhaitais.",[13,6580,6581],{},"Vous trouverez, donc, dans la suite, différents scripts, différentes\nidées, à améliorer, à récupérer.",[335,6583,6585],{"id":6584},"liste-des-paquets","Liste des paquets",[13,6587,6588,6589,6592,6593,37],{},"Ce script permet de lister les paquets installés sur un système\nGNU\\Debian. Cela me permet de récupérer une liste de paquet dans un\nfichier, liste que je peux réutiliser dans un logiciel comme synaptic\npour installer les mêmes paquets sur une autre distribution.Couplé à une\nsauvegarde du dossier home et du dossier etc, le script permet de\npouvoir réinstaller un système à l'identique (à condition que l'on ne se\ntrouve pas sur ",[17,6590,6591],{},"unstable"," et moyennant le dossier ",[343,6594,6595],{},"\u002Fvar",[351,6597,6599],{"className":353,"code":6598,"language":355,"meta":34,"style":34},"liste=`dpkg -l | tail +6 | cut -d\\  -f3`\nfor i in $liste ; do\n    echo \"$i        install\"\ndone\n",[343,6600,6601,6637,6654,6667],{"__ignoreMap":34},[359,6602,6603,6606,6608,6610,6613,6615,6617,6620,6623,6626,6628,6630,6632,6635],{"class":361,"line":199},[359,6604,6605],{"class":575},"liste",[359,6607,580],{"class":579},[359,6609,3497],{"class":368},[359,6611,6612],{"class":364},"dpkg",[359,6614,5093],{"class":590},[359,6616,5065],{"class":780},[359,6618,6619],{"class":364}," tail",[359,6621,6622],{"class":368}," +6 ",[359,6624,6625],{"class":780},"|",[359,6627,5075],{"class":364},[359,6629,5082],{"class":590},[359,6631,5085],{"class":579},[359,6633,6634],{"class":590}," -f3",[359,6636,3509],{"class":368},[359,6638,6639,6642,6645,6647,6650,6652],{"class":361,"line":167},[359,6640,6641],{"class":2494},"for",[359,6643,6644],{"class":575}," i",[359,6646,5240],{"class":2494},[359,6648,6649],{"class":575}," $liste",[359,6651,5266],{"class":780},[359,6653,5269],{"class":2494},[359,6655,6656,6659,6661,6664],{"class":361,"line":428},[359,6657,6658],{"class":579},"    echo",[359,6660,3584],{"class":368},[359,6662,6663],{"class":575},"$i",[359,6665,6666],{"class":368},"        install\"\n",[359,6668,6669],{"class":361,"line":434},[359,6670,6671],{"class":2494},"done\n",[13,6673,6674],{},[1589,6675,6676,6677,6680,6681,6684],{},"La commande ",[343,6678,6679],{},"dpkg --get-selections"," peut très bien remplacer le\nscript ci-dessus. Merci à ",[17,6682,6683],{},"mx"," pour sa remarque.",[335,6686,6688],{"id":6687},"purge-des-paquets","Purge des paquets",[13,6690,6691],{},"Permet de purger les paquets supprimés d'une distribution GNU\\Debian.\nCela permet de supprimer les quelques fichiers inutiles lors de la\nsuppression de paquet GNU\\Debian. Néanmoins, parfois on ne veut pas\nfaire les purges.",[351,6693,6695],{"className":353,"code":6694,"language":355,"meta":34,"style":34},"for i in `dpkg -l | grep -e '^rc.*' | cut -f3 -d\\ ` ; do dpkg -P $i ; done\n",[343,6696,6697],{"__ignoreMap":34},[359,6698,6699,6701,6703,6705,6707,6709,6711,6713,6715,6717,6720,6722,6724,6726,6728,6730,6732,6734,6737,6740,6743,6746,6748],{"class":361,"line":199},[359,6700,6641],{"class":2494},[359,6702,6644],{"class":575},[359,6704,5240],{"class":2494},[359,6706,5243],{"class":368},[359,6708,6612],{"class":364},[359,6710,5093],{"class":590},[359,6712,5065],{"class":780},[359,6714,5068],{"class":364},[359,6716,591],{"class":590},[359,6718,6719],{"class":368}," '^rc.*' ",[359,6721,6625],{"class":780},[359,6723,5075],{"class":364},[359,6725,6634],{"class":590},[359,6727,5082],{"class":590},[359,6729,5085],{"class":579},[359,6731,3497],{"class":368},[359,6733,5266],{"class":780},[359,6735,6736],{"class":2494},"do",[359,6738,6739],{"class":364}," dpkg",[359,6741,6742],{"class":590}," -P",[359,6744,6745],{"class":575}," $i",[359,6747,5266],{"class":780},[359,6749,6671],{"class":2494},[335,6751,6753],{"id":6752},"sécurisation-des-données","Sécurisation des données",[13,6755,6756,6757,6760,6761,6764,6765,6768,6769,6772],{},"Permet de monter une partition démontée et démonter une partition\nmontée. Ce script est basé sur KDialog pour demander les informations,\nil nécessite donc KDE (mais je pense qu'il est possible de le réécrire\npour Gnome).On lui passe en paramètre le nom d'un périphérique. Il\nsuppose que la partition démontée est un volume logique (sous LVM) dont\nle groupe est GNU\\Debian et dont le nom est ",[343,6758,6759],{},"$DISK-close",". Il crée à\nla suite le ",[17,6762,6763],{},"device-mapper"," (en supposant qu'il a été créé à l'aide de\n",[17,6766,6767],{},"LUKS",") du nom de ",[343,6770,6771],{},"$DISK-open",".S'il trouve ce \"device-mapper\", il le\ndémonte et le supprime.",[351,6774,6776],{"className":353,"code":6775,"language":355,"meta":34,"style":34},"#!\u002Fbin\u002Fsh\n\nDISK=$1\nDISKOPEN=\"$DISK-open\"\nDISKCLOSE=\"$DISK-close\"\n\nif [ -e \u002Fdev\u002Fmapper\u002F$DISKOPEN ] ; then\n        umount \u002Fdev\u002Fmapper\u002F$DISKOPEN 2> \u002Fdev\u002Fnull\n        if [ $? != 0 ] ; then\n                kdialog --title KSecure --error \"Impossible de démonter le péripherique $DISK\"\n        fi\n                if [ -e \u002Fdev\u002Fmapper\u002F$DISKOPEN ] ; then\n                \u002Fsbin\u002Fcryptsetup luksClose $DISKOPEN\n                                kdialog --title KSecure --msgbox \"Suppression du péripherique $DISK accomplie\"\n                fi\nelse\n        password=`kdialog --title KSecure --password \"Cle de déchiffrement de $DISK\"`\n        if [ -z $password ] ; then\n                password=\"nopassword\"\n        fi\n        echo \"$password\" | \\\n                \u002Fsbin\u002Fcryptsetup luksOpen \u002Fdev\u002Fdebian\u002F$DISKCLOSE $DISKOPEN 2> \u002Fdev\u002Fnull\n        mount \u002Fdev\u002Fmapper\u002F$DISKOPEN 2> \u002Fdev\u002Fnull\n                if [ $? -ne  0 ] ; then\n                                kdialog --title KSecure --error \"Clé incorrecte\"\n                fi\nfi\n",[343,6777,6778,6782,6786,6797,6812,6826,6830,6848,6860,6876,6893,6897,6913,6923,6942,6946,6950,6974,6988,6996,7000,7014,7034,7046,7062,7074,7078],{"__ignoreMap":34},[359,6779,6780],{"class":361,"line":199},[359,6781,3196],{"class":737},[359,6783,6784],{"class":361,"line":167},[359,6785,431],{"emptyLinePlaceholder":192},[359,6787,6788,6791,6793],{"class":361,"line":428},[359,6789,6790],{"class":575},"DISK",[359,6792,580],{"class":579},[359,6794,6796],{"class":6795},"s_ZVi","$1\n",[359,6798,6799,6802,6804,6806,6809],{"class":361,"line":434},[359,6800,6801],{"class":575},"DISKOPEN",[359,6803,580],{"class":579},[359,6805,3415],{"class":368},[359,6807,6808],{"class":575},"$DISK",[359,6810,6811],{"class":368},"-open\"\n",[359,6813,6814,6817,6819,6821,6823],{"class":361,"line":440},[359,6815,6816],{"class":575},"DISKCLOSE",[359,6818,580],{"class":579},[359,6820,3415],{"class":368},[359,6822,6808],{"class":575},[359,6824,6825],{"class":368},"-close\"\n",[359,6827,6828],{"class":361,"line":446},[359,6829,431],{"emptyLinePlaceholder":192},[359,6831,6832,6834,6836,6838,6841,6844,6846],{"class":361,"line":451},[359,6833,3306],{"class":2494},[359,6835,3309],{"class":780},[359,6837,621],{"class":579},[359,6839,6840],{"class":780}," \u002Fdev\u002Fmapper\u002F",[359,6842,6843],{"class":575},"$DISKOPEN",[359,6845,3373],{"class":780},[359,6847,3317],{"class":2494},[359,6849,6850,6852,6854,6856,6858],{"class":361,"line":457},[359,6851,6235],{"class":364},[359,6853,6840],{"class":368},[359,6855,6843],{"class":575},[359,6857,6241],{"class":780},[359,6859,4830],{"class":368},[359,6861,6862,6864,6866,6868,6870,6872,6874],{"class":361,"line":463},[359,6863,3896],{"class":2494},[359,6865,3309],{"class":780},[359,6867,4843],{"class":665},[359,6869,6254],{"class":579},[359,6871,4848],{"class":590},[359,6873,3373],{"class":780},[359,6875,3317],{"class":2494},[359,6877,6878,6880,6882,6884,6886,6889,6891],{"class":361,"line":469},[359,6879,6265],{"class":364},[359,6881,6268],{"class":590},[359,6883,6271],{"class":368},[359,6885,6274],{"class":590},[359,6887,6888],{"class":368}," \"Impossible de démonter le péripherique ",[359,6890,6808],{"class":575},[359,6892,3424],{"class":368},[359,6894,6895],{"class":361,"line":475},[359,6896,3972],{"class":2494},[359,6898,6899,6901,6903,6905,6907,6909,6911],{"class":361,"line":481},[359,6900,4888],{"class":2494},[359,6902,3309],{"class":780},[359,6904,621],{"class":579},[359,6906,6840],{"class":780},[359,6908,6843],{"class":575},[359,6910,3373],{"class":780},[359,6912,3317],{"class":2494},[359,6914,6915,6917,6920],{"class":361,"line":487},[359,6916,6298],{"class":364},[359,6918,6919],{"class":368}," luksClose",[359,6921,6922],{"class":575}," $DISKOPEN\n",[359,6924,6925,6928,6930,6932,6934,6937,6939],{"class":361,"line":493},[359,6926,6927],{"class":364},"                                kdialog",[359,6929,6268],{"class":590},[359,6931,6271],{"class":368},[359,6933,6315],{"class":590},[359,6935,6936],{"class":368}," \"Suppression du péripherique ",[359,6938,6808],{"class":575},[359,6940,6941],{"class":368}," accomplie\"\n",[359,6943,6944],{"class":361,"line":499},[359,6945,4924],{"class":2494},[359,6947,6948],{"class":361,"line":505},[359,6949,3330],{"class":2494},[359,6951,6952,6954,6956,6958,6960,6962,6964,6966,6969,6971],{"class":361,"line":510},[359,6953,6332],{"class":575},[359,6955,580],{"class":579},[359,6957,3497],{"class":368},[359,6959,6339],{"class":364},[359,6961,6268],{"class":590},[359,6963,6344],{"class":368},[359,6965,6347],{"class":590},[359,6967,6968],{"class":368}," \"Cle de déchiffrement de ",[359,6970,6808],{"class":575},[359,6972,6973],{"class":368},"\"`\n",[359,6975,6976,6978,6980,6982,6984,6986],{"class":361,"line":516},[359,6977,3896],{"class":2494},[359,6979,3309],{"class":780},[359,6981,3581],{"class":579},[359,6983,6361],{"class":575},[359,6985,3373],{"class":780},[359,6987,3317],{"class":2494},[359,6989,6990,6992,6994],{"class":361,"line":522},[359,6991,6370],{"class":575},[359,6993,580],{"class":579},[359,6995,6375],{"class":368},[359,6997,6998],{"class":361,"line":528},[359,6999,3972],{"class":2494},[359,7001,7002,7004,7006,7008,7010,7012],{"class":361,"line":1125},[359,7003,3789],{"class":579},[359,7005,3584],{"class":368},[359,7007,6388],{"class":575},[359,7009,3415],{"class":368},[359,7011,6393],{"class":780},[359,7013,6396],{"class":579},[359,7015,7016,7018,7021,7024,7027,7030,7032],{"class":361,"line":1151},[359,7017,6298],{"class":364},[359,7019,7020],{"class":368}," luksOpen",[359,7022,7023],{"class":368}," \u002Fdev\u002Fdebian\u002F",[359,7025,7026],{"class":575},"$DISKCLOSE",[359,7028,7029],{"class":575}," $DISKOPEN",[359,7031,6241],{"class":780},[359,7033,4830],{"class":368},[359,7035,7036,7038,7040,7042,7044],{"class":361,"line":3076},[359,7037,6448],{"class":364},[359,7039,6840],{"class":368},[359,7041,6843],{"class":575},[359,7043,6241],{"class":780},[359,7045,4830],{"class":368},[359,7047,7048,7050,7052,7054,7056,7058,7060],{"class":361,"line":3081},[359,7049,4888],{"class":2494},[359,7051,3309],{"class":780},[359,7053,4843],{"class":665},[359,7055,3367],{"class":579},[359,7057,6467],{"class":590},[359,7059,3373],{"class":780},[359,7061,3317],{"class":2494},[359,7063,7064,7066,7068,7070,7072],{"class":361,"line":3087},[359,7065,6927],{"class":364},[359,7067,6268],{"class":590},[359,7069,6271],{"class":368},[359,7071,6274],{"class":590},[359,7073,6484],{"class":368},[359,7075,7076],{"class":361,"line":3098},[359,7077,4924],{"class":2494},[359,7079,7080],{"class":361,"line":3109},[359,7081,3351],{"class":2494},[335,7083,7085],{"id":7084},"apprentissage-du-spam","Apprentissage du spam",[13,7087,7088],{},"Permet d'appeler bogofliter et spamassassin sur une liste de message\nIndésirable au format mbox. Il permet aussi de faire l'apprentissage des\nmessages désirables.",[351,7090,7092],{"className":353,"code":7091,"language":355,"meta":34,"style":34},"#!\u002Fbin\u002Fbash\n\nsa-learn -L --no-sync --spam --mbox \u002Fhome\u002Fphoenix\u002FMail\u002FIndésirable\\ \\(Spam\\)\nsa-learn -L --no-sync --ham --mbox \u002Fhome\u002Fphoenix\u002FMail\u002FDésirable\\ \\(Non\\ spam\\)\n\nbogofilter -N -s \u003C \u002Fhome\u002Fphoenix\u002FMail\u002FIndésirable\\ \\(Spam\\)\nbogofilter -S -n \u003C \u002Fhome\u002Fphoenix\u002FMail\u002FDésirable\\ \\(Non\\ spam\\)\n",[343,7093,7094,7099,7103,7131,7159,7163,7185],{"__ignoreMap":34},[359,7095,7096],{"class":361,"line":199},[359,7097,7098],{"class":737},"#!\u002Fbin\u002Fbash\n",[359,7100,7101],{"class":361,"line":167},[359,7102,431],{"emptyLinePlaceholder":192},[359,7104,7105,7108,7110,7113,7116,7119,7122,7125,7128],{"class":361,"line":428},[359,7106,7107],{"class":364},"sa-learn",[359,7109,2015],{"class":590},[359,7111,7112],{"class":590}," --no-sync",[359,7114,7115],{"class":590}," --spam",[359,7117,7118],{"class":590}," --mbox",[359,7120,7121],{"class":368}," \u002Fhome\u002Fphoenix\u002FMail\u002FIndésirable",[359,7123,7124],{"class":579},"\\ \\(",[359,7126,7127],{"class":368},"Spam",[359,7129,7130],{"class":579},"\\)\n",[359,7132,7133,7135,7137,7139,7142,7144,7147,7149,7152,7154,7157],{"class":361,"line":434},[359,7134,7107],{"class":364},[359,7136,2015],{"class":590},[359,7138,7112],{"class":590},[359,7140,7141],{"class":590}," --ham",[359,7143,7118],{"class":590},[359,7145,7146],{"class":368}," \u002Fhome\u002Fphoenix\u002FMail\u002FDésirable",[359,7148,7124],{"class":579},[359,7150,7151],{"class":368},"Non",[359,7153,5085],{"class":579},[359,7155,7156],{"class":368},"spam",[359,7158,7130],{"class":579},[359,7160,7161],{"class":361,"line":440},[359,7162,431],{"emptyLinePlaceholder":192},[359,7164,7165,7168,7171,7173,7176,7179,7181,7183],{"class":361,"line":446},[359,7166,7167],{"class":364},"bogofilter",[359,7169,7170],{"class":590}," -N",[359,7172,600],{"class":590},[359,7174,7175],{"class":780}," \u003C ",[359,7177,7178],{"class":368},"\u002Fhome\u002Fphoenix\u002FMail\u002FIndésirable",[359,7180,7124],{"class":579},[359,7182,7127],{"class":368},[359,7184,7130],{"class":579},[359,7186,7187,7189,7192,7194,7196,7199,7201,7203,7205,7207],{"class":361,"line":451},[359,7188,7167],{"class":364},[359,7190,7191],{"class":590}," -S",[359,7193,597],{"class":590},[359,7195,7175],{"class":780},[359,7197,7198],{"class":368},"\u002Fhome\u002Fphoenix\u002FMail\u002FDésirable",[359,7200,7124],{"class":579},[359,7202,7151],{"class":368},[359,7204,5085],{"class":579},[359,7206,7156],{"class":368},[359,7208,7130],{"class":579},[335,7210,7212],{"id":7211},"création-de-lien","Création de lien",[13,7214,7215,7216,7219],{},"Permet à partir d'une liste de fichier identique générée par ",[17,7217,7218],{},"fdupes"," de\ncréer des liens physiques entre les fichiers pour économiser de la\nplace. Attention : si un des fichiers physiques est modifié, l'autre le\nsera aussi.",[351,7221,7223],{"className":353,"code":7222,"language":355,"meta":34,"style":34},"#!\u002Fbin\u002Fsh\n\necho -n \"|\"\nread -r line\nwhile [ $? -eq 0 ] ; do\n        line=`echo $line | sed -e \"s\u002F\\\\\\\\\\\\ \u002F@\u002Fg\"`\n        index=0\n        principal=\"\"\n        for chemin in $line ; do\n                if [ $index -eq 0 ] ; then\n                        principal=$chemin\n                else\n                        a=`echo $principal | sed -e \"s\u002F@\u002F\\\\ \u002Fg\"`\n                        b=`echo $chemin | sed -e \"s\u002F@\u002F\\\\ \u002Fg\"`\n                        ln -f \"$a\" \"$b\"\n                fi\n\n                index=`expr $index + 1`\n        done\n\n        echo -n \"=\"\n\n        read -r line\ndone\necho -n \"|\"\n",[343,7224,7225,7229,7233,7242,7253,7270,7300,7309,7319,7334,7351,7361,7365,7394,7420,7441,7445,7449,7469,7473,7477,7486,7490,7499,7503],{"__ignoreMap":34},[359,7226,7227],{"class":361,"line":199},[359,7228,3196],{"class":737},[359,7230,7231],{"class":361,"line":167},[359,7232,431],{"emptyLinePlaceholder":192},[359,7234,7235,7237,7239],{"class":361,"line":428},[359,7236,3335],{"class":579},[359,7238,597],{"class":590},[359,7240,7241],{"class":368}," \"|\"\n",[359,7243,7244,7247,7250],{"class":361,"line":434},[359,7245,7246],{"class":579},"read",[359,7248,7249],{"class":590}," -r",[359,7251,7252],{"class":368}," line\n",[359,7254,7255,7258,7260,7262,7264,7266,7268],{"class":361,"line":440},[359,7256,7257],{"class":2494},"while",[359,7259,3309],{"class":780},[359,7261,4843],{"class":665},[359,7263,5398],{"class":579},[359,7265,4848],{"class":590},[359,7267,3373],{"class":780},[359,7269,5269],{"class":2494},[359,7271,7272,7275,7277,7279,7281,7284,7286,7289,7291,7294,7297],{"class":361,"line":446},[359,7273,7274],{"class":575},"        line",[359,7276,580],{"class":579},[359,7278,3497],{"class":368},[359,7280,3335],{"class":579},[359,7282,7283],{"class":575}," $line",[359,7285,5065],{"class":780},[359,7287,7288],{"class":364}," sed",[359,7290,591],{"class":590},[359,7292,7293],{"class":368}," \"s\u002F",[359,7295,7296],{"class":579},"\\\\\\\\\\\\",[359,7298,7299],{"class":368}," \u002F@\u002Fg\"`\n",[359,7301,7302,7305,7307],{"class":361,"line":451},[359,7303,7304],{"class":575},"        index",[359,7306,580],{"class":579},[359,7308,5155],{"class":368},[359,7310,7311,7314,7316],{"class":361,"line":457},[359,7312,7313],{"class":575},"        principal",[359,7315,580],{"class":579},[359,7317,7318],{"class":368},"\"\"\n",[359,7320,7321,7323,7326,7328,7330,7332],{"class":361,"line":463},[359,7322,5483],{"class":2494},[359,7324,7325],{"class":575}," chemin",[359,7327,5240],{"class":2494},[359,7329,7283],{"class":575},[359,7331,5266],{"class":780},[359,7333,5269],{"class":2494},[359,7335,7336,7338,7340,7343,7345,7347,7349],{"class":361,"line":469},[359,7337,4888],{"class":2494},[359,7339,3309],{"class":780},[359,7341,7342],{"class":575},"$index",[359,7344,5398],{"class":579},[359,7346,4848],{"class":590},[359,7348,3373],{"class":780},[359,7350,3317],{"class":2494},[359,7352,7353,7356,7358],{"class":361,"line":475},[359,7354,7355],{"class":575},"                        principal",[359,7357,580],{"class":579},[359,7359,7360],{"class":575},"$chemin\n",[359,7362,7363],{"class":361,"line":481},[359,7364,4976],{"class":2494},[359,7366,7367,7370,7372,7374,7376,7379,7381,7383,7385,7388,7391],{"class":361,"line":487},[359,7368,7369],{"class":575},"                        a",[359,7371,580],{"class":579},[359,7373,3497],{"class":368},[359,7375,3335],{"class":579},[359,7377,7378],{"class":575}," $principal",[359,7380,5065],{"class":780},[359,7382,7288],{"class":364},[359,7384,591],{"class":590},[359,7386,7387],{"class":368}," \"s\u002F@\u002F",[359,7389,7390],{"class":579},"\\\\",[359,7392,7393],{"class":368}," \u002Fg\"`\n",[359,7395,7396,7399,7401,7403,7405,7408,7410,7412,7414,7416,7418],{"class":361,"line":493},[359,7397,7398],{"class":575},"                        b",[359,7400,580],{"class":579},[359,7402,3497],{"class":368},[359,7404,3335],{"class":579},[359,7406,7407],{"class":575}," $chemin",[359,7409,5065],{"class":780},[359,7411,7288],{"class":364},[359,7413,591],{"class":590},[359,7415,7387],{"class":368},[359,7417,7390],{"class":579},[359,7419,7393],{"class":368},[359,7421,7422,7425,7427,7429,7432,7434,7436,7439],{"class":361,"line":499},[359,7423,7424],{"class":364},"                        ln",[359,7426,2615],{"class":590},[359,7428,3584],{"class":368},[359,7430,7431],{"class":575},"$a",[359,7433,3415],{"class":368},[359,7435,3584],{"class":368},[359,7437,7438],{"class":575},"$b",[359,7440,3424],{"class":368},[359,7442,7443],{"class":361,"line":505},[359,7444,4924],{"class":2494},[359,7446,7447],{"class":361,"line":510},[359,7448,431],{"emptyLinePlaceholder":192},[359,7450,7451,7454,7456,7458,7460,7463,7465,7467],{"class":361,"line":516},[359,7452,7453],{"class":575},"                index",[359,7455,580],{"class":579},[359,7457,3497],{"class":368},[359,7459,4164],{"class":364},[359,7461,7462],{"class":575}," $index",[359,7464,4170],{"class":368},[359,7466,36],{"class":590},[359,7468,3509],{"class":368},[359,7470,7471],{"class":361,"line":522},[359,7472,5825],{"class":2494},[359,7474,7475],{"class":361,"line":528},[359,7476,431],{"emptyLinePlaceholder":192},[359,7478,7479,7481,7483],{"class":361,"line":1125},[359,7480,3789],{"class":579},[359,7482,597],{"class":590},[359,7484,7485],{"class":368}," \"=\"\n",[359,7487,7488],{"class":361,"line":1151},[359,7489,431],{"emptyLinePlaceholder":192},[359,7491,7492,7495,7497],{"class":361,"line":3076},[359,7493,7494],{"class":579},"        read",[359,7496,7249],{"class":590},[359,7498,7252],{"class":368},[359,7500,7501],{"class":361,"line":3081},[359,7502,6671],{"class":2494},[359,7504,7505,7507,7509],{"class":361,"line":3087},[359,7506,3335],{"class":579},[359,7508,597],{"class":590},[359,7510,7241],{"class":368},[335,7512,7514],{"id":7513},"renumérotation","Renumérotation",[13,7516,7517,7518,7521,7522,7525,7526],{},"Permet de renuméroté une liste d'image d'un dossier, du style\n",[343,7519,7520],{},"1 10 11 12 13 2 3 4..."," en une suite précédé d'un ",[343,7523,7524],{},"0"," :\n",[343,7527,7528],{},"01 02 03 04 05 06 ...",[351,7530,7532],{"className":353,"code":7531,"language":355,"meta":34,"style":34},"#!\u002Fbin\u002Fsh\n\nfor DIR in `ls` ; do\n\n    echo -n \"Change directory $DIR \"\n\n    cd $DIR\n\n    CMD=`ls | sed -e 's\u002F\\(.*\\)_\\([1-9]\\)\\.jpg\u002Fmv \\1_\\2.jpg \\1_0\\2.jpg ;\u002Fg' | grep \"mv \"`\n    eval $CMD\n\n    cd ..\n\n    echo \"Ok\"\n\ndone\n",[343,7533,7534,7538,7542,7561,7565,7578,7582,7590,7594,7621,7629,7633,7640,7644,7651,7655],{"__ignoreMap":34},[359,7535,7536],{"class":361,"line":199},[359,7537,3196],{"class":737},[359,7539,7540],{"class":361,"line":167},[359,7541,431],{"emptyLinePlaceholder":192},[359,7543,7544,7546,7549,7551,7553,7555,7557,7559],{"class":361,"line":428},[359,7545,6641],{"class":2494},[359,7547,7548],{"class":575}," DIR",[359,7550,5240],{"class":2494},[359,7552,5243],{"class":368},[359,7554,5246],{"class":364},[359,7556,3497],{"class":368},[359,7558,5266],{"class":780},[359,7560,5269],{"class":2494},[359,7562,7563],{"class":361,"line":434},[359,7564,431],{"emptyLinePlaceholder":192},[359,7566,7567,7569,7571,7574,7576],{"class":361,"line":440},[359,7568,6658],{"class":579},[359,7570,597],{"class":590},[359,7572,7573],{"class":368}," \"Change directory ",[359,7575,4800],{"class":575},[359,7577,5023],{"class":368},[359,7579,7580],{"class":361,"line":446},[359,7581,431],{"emptyLinePlaceholder":192},[359,7583,7584,7587],{"class":361,"line":451},[359,7585,7586],{"class":579},"    cd",[359,7588,7589],{"class":575}," $DIR\n",[359,7591,7592],{"class":361,"line":457},[359,7593,431],{"emptyLinePlaceholder":192},[359,7595,7596,7599,7601,7603,7605,7607,7609,7611,7614,7616,7618],{"class":361,"line":463},[359,7597,7598],{"class":575},"    CMD",[359,7600,580],{"class":579},[359,7602,3497],{"class":368},[359,7604,5246],{"class":364},[359,7606,5065],{"class":780},[359,7608,7288],{"class":364},[359,7610,591],{"class":590},[359,7612,7613],{"class":368}," 's\u002F\\(.*\\)_\\([1-9]\\)\\.jpg\u002Fmv \\1_\\2.jpg \\1_0\\2.jpg ;\u002Fg' ",[359,7615,6625],{"class":780},[359,7617,5068],{"class":364},[359,7619,7620],{"class":368}," \"mv \"`\n",[359,7622,7623,7626],{"class":361,"line":469},[359,7624,7625],{"class":579},"    eval",[359,7627,7628],{"class":575}," $CMD\n",[359,7630,7631],{"class":361,"line":475},[359,7632,431],{"emptyLinePlaceholder":192},[359,7634,7635,7637],{"class":361,"line":481},[359,7636,7586],{"class":579},[359,7638,7639],{"class":368}," ..\n",[359,7641,7642],{"class":361,"line":487},[359,7643,431],{"emptyLinePlaceholder":192},[359,7645,7646,7648],{"class":361,"line":493},[359,7647,6658],{"class":579},[359,7649,7650],{"class":368}," \"Ok\"\n",[359,7652,7653],{"class":361,"line":499},[359,7654,431],{"emptyLinePlaceholder":192},[359,7656,7657],{"class":361,"line":505},[359,7658,6671],{"class":2494},[335,7660,7662],{"id":7661},"génération-de-playlist","Génération de playlist",[13,7664,7665,7666,7669,7670,7673,7674,7677,7678,37],{},"Permet de générer une playlist sur un dossier pour utilisation avec le\nlogiciel kpf (par exemple) de KDE. Il parcourt l'ensemble des dossiers\net crée un fichier ",[17,7667,7668],{},"m3u"," à chaque fois qu'il trouve un fichier\nmultimédia. Il remplace le début du dossier par un lien ",[17,7671,7672],{},"http",".Je\nrajoute qu'il existe un très bon site contenant de la musique\n",[1963,7675,7676],{},"libre"," : ",[29,7679,7682],{"href":7680,"rel":7681},"http:\u002F\u002Fwww.jamendo.org\u002Ffr\u002F",[157],"Jamendo",[351,7684,7686],{"className":353,"code":7685,"language":355,"meta":34,"style":34},"#!\u002Fbin\u002Fsh\n\nOLD=`pwd`\n\ncd \"$1\"\nif [ $? -ne 0 ] ; then\n    exit\nfi\n\nTHIS=`pwd`\nBASE=`basename \"$THIS\"`\n\necho \"Ouverture de $BASE\"\n\nfor path in * ; do\n    if [ -d \"$THIS\u002F$path\" ] ; then\n        $0 \"$THIS\u002F$path\"\n    fi\ndone\n\necho \"Traitement de $BASE\"\nrm $BASE.m3u 2> \u002Fdev\u002Fnull\n\nfor path in *.mp3 *.ogg *.wma *.avi ; do\n    echo $path | grep \\* > \u002Fdev\u002Fnull\n    if [ $? -eq 1 ] ; then\n        echo $THIS\u002F$path | sed -e \"s\u002F\\\u002Fmedia\\\u002Fmusic\u002Fhttp\\:\\\u002F\\\u002F192\\.168\\.101\\.7\\:8001\u002Fg\" >> $BASE.m3u\n    fi\ndone\n\necho \"Sortie de $BASE\"\n",[343,7687,7688,7692,7696,7710,7714,7726,7742,7747,7751,7755,7768,7786,7790,7802,7806,7822,7846,7861,7866,7870,7874,7885,7899,7903,7927,7946,7962,7991,7995,7999,8003],{"__ignoreMap":34},[359,7689,7690],{"class":361,"line":199},[359,7691,3196],{"class":737},[359,7693,7694],{"class":361,"line":167},[359,7695,431],{"emptyLinePlaceholder":192},[359,7697,7698,7701,7703,7705,7708],{"class":361,"line":428},[359,7699,7700],{"class":575},"OLD",[359,7702,580],{"class":579},[359,7704,3497],{"class":368},[359,7706,7707],{"class":579},"pwd",[359,7709,3509],{"class":368},[359,7711,7712],{"class":361,"line":434},[359,7713,431],{"emptyLinePlaceholder":192},[359,7715,7716,7719,7721,7724],{"class":361,"line":440},[359,7717,7718],{"class":579},"cd",[359,7720,3584],{"class":368},[359,7722,7723],{"class":6795},"$1",[359,7725,3424],{"class":368},[359,7727,7728,7730,7732,7734,7736,7738,7740],{"class":361,"line":446},[359,7729,3306],{"class":2494},[359,7731,3309],{"class":780},[359,7733,4843],{"class":665},[359,7735,3367],{"class":579},[359,7737,4848],{"class":590},[359,7739,3373],{"class":780},[359,7741,3317],{"class":2494},[359,7743,7744],{"class":361,"line":451},[359,7745,7746],{"class":579},"    exit\n",[359,7748,7749],{"class":361,"line":457},[359,7750,3351],{"class":2494},[359,7752,7753],{"class":361,"line":463},[359,7754,431],{"emptyLinePlaceholder":192},[359,7756,7757,7760,7762,7764,7766],{"class":361,"line":469},[359,7758,7759],{"class":575},"THIS",[359,7761,580],{"class":579},[359,7763,3497],{"class":368},[359,7765,7707],{"class":579},[359,7767,3509],{"class":368},[359,7769,7770,7773,7775,7777,7779,7781,7784],{"class":361,"line":475},[359,7771,7772],{"class":575},"BASE",[359,7774,580],{"class":579},[359,7776,3497],{"class":368},[359,7778,5281],{"class":364},[359,7780,3584],{"class":368},[359,7782,7783],{"class":575},"$THIS",[359,7785,6973],{"class":368},[359,7787,7788],{"class":361,"line":481},[359,7789,431],{"emptyLinePlaceholder":192},[359,7791,7792,7794,7797,7800],{"class":361,"line":487},[359,7793,3335],{"class":579},[359,7795,7796],{"class":368}," \"Ouverture de ",[359,7798,7799],{"class":575},"$BASE",[359,7801,3424],{"class":368},[359,7803,7804],{"class":361,"line":493},[359,7805,431],{"emptyLinePlaceholder":192},[359,7807,7808,7810,7813,7815,7818,7820],{"class":361,"line":499},[359,7809,6641],{"class":2494},[359,7811,7812],{"class":575}," path",[359,7814,5240],{"class":2494},[359,7816,7817],{"class":368}," *",[359,7819,5266],{"class":780},[359,7821,5269],{"class":2494},[359,7823,7824,7827,7829,7831,7833,7835,7837,7840,7842,7844],{"class":361,"line":505},[359,7825,7826],{"class":2494},"    if",[359,7828,3309],{"class":780},[359,7830,5214],{"class":579},[359,7832,3584],{"class":368},[359,7834,7783],{"class":575},[359,7836,1971],{"class":368},[359,7838,7839],{"class":575},"$path",[359,7841,3415],{"class":368},[359,7843,3373],{"class":780},[359,7845,3317],{"class":2494},[359,7847,7848,7851,7853,7855,7857,7859],{"class":361,"line":510},[359,7849,7850],{"class":6795},"        $0",[359,7852,3584],{"class":368},[359,7854,7783],{"class":575},[359,7856,1971],{"class":368},[359,7858,7839],{"class":575},[359,7860,3424],{"class":368},[359,7862,7863],{"class":361,"line":516},[359,7864,7865],{"class":2494},"    fi\n",[359,7867,7868],{"class":361,"line":522},[359,7869,6671],{"class":2494},[359,7871,7872],{"class":361,"line":528},[359,7873,431],{"emptyLinePlaceholder":192},[359,7875,7876,7878,7881,7883],{"class":361,"line":1125},[359,7877,3335],{"class":579},[359,7879,7880],{"class":368}," \"Traitement de ",[359,7882,7799],{"class":575},[359,7884,3424],{"class":368},[359,7886,7887,7889,7892,7895,7897],{"class":361,"line":1151},[359,7888,659],{"class":364},[359,7890,7891],{"class":575}," $BASE",[359,7893,7894],{"class":368},".m3u",[359,7896,6241],{"class":780},[359,7898,4830],{"class":368},[359,7900,7901],{"class":361,"line":3076},[359,7902,431],{"emptyLinePlaceholder":192},[359,7904,7905,7907,7909,7911,7914,7917,7920,7923,7925],{"class":361,"line":3081},[359,7906,6641],{"class":2494},[359,7908,7812],{"class":575},[359,7910,5240],{"class":2494},[359,7912,7913],{"class":368}," *.mp3",[359,7915,7916],{"class":368}," *.ogg",[359,7918,7919],{"class":368}," *.wma",[359,7921,7922],{"class":368}," *.avi",[359,7924,5266],{"class":780},[359,7926,5269],{"class":2494},[359,7928,7929,7931,7934,7936,7939,7942,7944],{"class":361,"line":3087},[359,7930,6658],{"class":579},[359,7932,7933],{"class":575}," $path",[359,7935,6393],{"class":780},[359,7937,7938],{"class":364},"grep",[359,7940,7941],{"class":579}," \\*",[359,7943,1347],{"class":780},[359,7945,4830],{"class":368},[359,7947,7948,7950,7952,7954,7956,7958,7960],{"class":361,"line":3098},[359,7949,7826],{"class":2494},[359,7951,3309],{"class":780},[359,7953,4843],{"class":665},[359,7955,5398],{"class":579},[359,7957,3370],{"class":590},[359,7959,3373],{"class":780},[359,7961,3317],{"class":2494},[359,7963,7964,7966,7969,7971,7973,7975,7978,7980,7983,7986,7988],{"class":361,"line":3109},[359,7965,3789],{"class":579},[359,7967,7968],{"class":575}," $THIS",[359,7970,1971],{"class":368},[359,7972,7839],{"class":575},[359,7974,6393],{"class":780},[359,7976,7977],{"class":364},"sed",[359,7979,591],{"class":590},[359,7981,7982],{"class":368}," \"s\u002F\\\u002Fmedia\\\u002Fmusic\u002Fhttp\\:\\\u002F\\\u002F192\\.168\\.101\\.7\\:8001\u002Fg\"",[359,7984,7985],{"class":780}," >> ",[359,7987,7799],{"class":575},[359,7989,7990],{"class":368},".m3u\n",[359,7992,7993],{"class":361,"line":3120},[359,7994,7865],{"class":2494},[359,7996,7997],{"class":361,"line":3131},[359,7998,6671],{"class":2494},[359,8000,8001],{"class":361,"line":3136},[359,8002,431],{"emptyLinePlaceholder":192},[359,8004,8005,8007,8010,8012],{"class":361,"line":3142},[359,8006,3335],{"class":579},[359,8008,8009],{"class":368}," \"Sortie de ",[359,8011,7799],{"class":575},[359,8013,3424],{"class":368},[335,8015,8017],{"id":8016},"script-pour-gérer-les-documents-latex","Script pour gérer les documents latex",[13,8019,8020,8021,8024,8025,8027,8028,37],{},"Ce script date de quelques temps quand je devais générer des documents\ndifférents à partir d'un même document ",[17,8022,8023],{},"LaTeX",".Il utilise différentes\ncommandes pour cela, et permet aussi de nettoyer le dossier. Une sorte\nde ",[17,8026,537],{}," à la mode ",[17,8029,355],{},[351,8031,8033],{"className":353,"code":8032,"language":355,"meta":34,"style":34},"#!\u002Fbin\u002Fsh\n\nif [ $# != 2 ] ; then\n    echo \"Il faut le nom du fichier et de la sortie\"\n    exit 1;\nfi\n\nNAME=$1\nDEST=$2\n\ncase $DEST in\n    cleanPDF)\n        rm -f $NAME.pdf ;;\n    cleanTXT)\n        rm -f $NAME.txt ;;\n    cleanPS)\n        rm -f $NAME.ps  ;;\n    cleanDVI)\n        rm -f $NAME.dvi ;;\n    cleanHTML)\n        rm -f $NAME.html ;;\n    cleanTEX)\n        rm -f *.log *.toc *.htoc *.aux *.haux *~ ;;\n    clean)\n        glatex.sh $NAME cleanTEX\n        glatex.sh $NAME cleanDVI\n        glatex.sh $NAME cleanPS\n        glatex.sh $NAME cleanTXT\n        glatex.sh $NAME cleanPDF\n        glatex.sh $NAME cleanHTML ;;\n    mrproper)\n        glatex.sh $NAME clean ;;\n    _dvi)\n        pslatex $NAME.tex\n        pslatex $NAME.tex ;;\n    xdvi)\n        glatex.sh $NAME _dvi\n        xdvi $NAME.dvi ;;\n    dvi)\n        glatex.sh $NAME _dvi\n        glatex.sh $NAME cleanTEX ;;\n    _html)\n        hevea -francais -fix -noiso $NAME.tex ;;\n    html)\n        glatex.sh $NAME _html\n        glatex.sh $NAME cleanTEX ;;\n    _txt)\n        hevea -francais -fix -text $NAME.tex ;;\n    txt)\n        glatex.sh $NAME _txt\n        glatex.sh $NAME cleanTEX ;;\n    _ps)\n        glatex.sh $NAME _dvi\n        dvips -Ppdf $NAME.dvi ;;\n    ps)\n        glatex.sh $NAME _ps\n        glatex.sh $NAME cleanDVI\n        glatex.sh $NAME cleanTEX ;;\n    _pdf)\n        pdflatex $NAME.tex\n        pdflatex $NAME.tex ;;\n    pdf)\n        glatex.sh $NAME _pdf\n        glatex.sh $NAME cleanTEX ;;\nesac\n",[343,8034,8035,8039,8043,8060,8067,8076,8080,8084,8092,8102,8106,8116,8123,8139,8146,8159,8166,8180,8187,8200,8207,8220,8227,8265,8272,8282,8291,8300,8309,8318,8329,8336,8347,8354,8364,8375,8382,8391,8402,8409,8417,8428,8435,8455,8462,8471,8481,8488,8505,8512,8521,8531,8538,8546,8560,8567,8576,8584,8594,8601,8610,8620,8627,8636,8646],{"__ignoreMap":34},[359,8036,8037],{"class":361,"line":199},[359,8038,3196],{"class":737},[359,8040,8041],{"class":361,"line":167},[359,8042,431],{"emptyLinePlaceholder":192},[359,8044,8045,8047,8049,8051,8053,8056,8058],{"class":361,"line":428},[359,8046,3306],{"class":2494},[359,8048,3309],{"class":780},[359,8050,3364],{"class":665},[359,8052,6254],{"class":579},[359,8054,8055],{"class":590}," 2",[359,8057,3373],{"class":780},[359,8059,3317],{"class":2494},[359,8061,8062,8064],{"class":361,"line":434},[359,8063,6658],{"class":579},[359,8065,8066],{"class":368}," \"Il faut le nom du fichier et de la sortie\"\n",[359,8068,8069,8072,8074],{"class":361,"line":440},[359,8070,8071],{"class":579},"    exit",[359,8073,3370],{"class":590},[359,8075,4261],{"class":780},[359,8077,8078],{"class":361,"line":446},[359,8079,3351],{"class":2494},[359,8081,8082],{"class":361,"line":451},[359,8083,431],{"emptyLinePlaceholder":192},[359,8085,8086,8088,8090],{"class":361,"line":457},[359,8087,5513],{"class":575},[359,8089,580],{"class":579},[359,8091,6796],{"class":6795},[359,8093,8094,8097,8099],{"class":361,"line":463},[359,8095,8096],{"class":575},"DEST",[359,8098,580],{"class":579},[359,8100,8101],{"class":6795},"$2\n",[359,8103,8104],{"class":361,"line":469},[359,8105,431],{"emptyLinePlaceholder":192},[359,8107,8108,8111,8114],{"class":361,"line":475},[359,8109,8110],{"class":2494},"case",[359,8112,8113],{"class":575}," $DEST",[359,8115,5570],{"class":2494},[359,8117,8118,8121],{"class":361,"line":481},[359,8119,8120],{"class":575},"    cleanPDF",[359,8122,5579],{"class":780},[359,8124,8125,8128,8130,8133,8136],{"class":361,"line":487},[359,8126,8127],{"class":364},"        rm",[359,8129,2615],{"class":590},[359,8131,8132],{"class":575}," $NAME",[359,8134,8135],{"class":368},".pdf",[359,8137,8138],{"class":780}," ;;\n",[359,8140,8141,8144],{"class":361,"line":493},[359,8142,8143],{"class":575},"    cleanTXT",[359,8145,5579],{"class":780},[359,8147,8148,8150,8152,8154,8157],{"class":361,"line":499},[359,8149,8127],{"class":364},[359,8151,2615],{"class":590},[359,8153,8132],{"class":575},[359,8155,8156],{"class":368},".txt",[359,8158,8138],{"class":780},[359,8160,8161,8164],{"class":361,"line":505},[359,8162,8163],{"class":575},"    cleanPS",[359,8165,5579],{"class":780},[359,8167,8168,8170,8172,8174,8177],{"class":361,"line":510},[359,8169,8127],{"class":364},[359,8171,2615],{"class":590},[359,8173,8132],{"class":575},[359,8175,8176],{"class":368},".ps",[359,8178,8179],{"class":780},"  ;;\n",[359,8181,8182,8185],{"class":361,"line":516},[359,8183,8184],{"class":575},"    cleanDVI",[359,8186,5579],{"class":780},[359,8188,8189,8191,8193,8195,8198],{"class":361,"line":522},[359,8190,8127],{"class":364},[359,8192,2615],{"class":590},[359,8194,8132],{"class":575},[359,8196,8197],{"class":368},".dvi",[359,8199,8138],{"class":780},[359,8201,8202,8205],{"class":361,"line":528},[359,8203,8204],{"class":575},"    cleanHTML",[359,8206,5579],{"class":780},[359,8208,8209,8211,8213,8215,8218],{"class":361,"line":1125},[359,8210,8127],{"class":364},[359,8212,2615],{"class":590},[359,8214,8132],{"class":575},[359,8216,8217],{"class":368},".html",[359,8219,8138],{"class":780},[359,8221,8222,8225],{"class":361,"line":1151},[359,8223,8224],{"class":575},"    cleanTEX",[359,8226,5579],{"class":780},[359,8228,8229,8231,8233,8235,8238,8240,8243,8245,8248,8250,8253,8255,8258,8260,8263],{"class":361,"line":3076},[359,8230,8127],{"class":364},[359,8232,2615],{"class":590},[359,8234,7817],{"class":665},[359,8236,8237],{"class":368},".log",[359,8239,7817],{"class":665},[359,8241,8242],{"class":368},".toc",[359,8244,7817],{"class":665},[359,8246,8247],{"class":368},".htoc",[359,8249,7817],{"class":665},[359,8251,8252],{"class":368},".aux",[359,8254,7817],{"class":665},[359,8256,8257],{"class":368},".haux",[359,8259,7817],{"class":665},[359,8261,8262],{"class":368},"~",[359,8264,8138],{"class":780},[359,8266,8267,8270],{"class":361,"line":3081},[359,8268,8269],{"class":575},"    clean",[359,8271,5579],{"class":780},[359,8273,8274,8277,8279],{"class":361,"line":3087},[359,8275,8276],{"class":364},"        glatex.sh",[359,8278,8132],{"class":575},[359,8280,8281],{"class":368}," cleanTEX\n",[359,8283,8284,8286,8288],{"class":361,"line":3098},[359,8285,8276],{"class":364},[359,8287,8132],{"class":575},[359,8289,8290],{"class":368}," cleanDVI\n",[359,8292,8293,8295,8297],{"class":361,"line":3109},[359,8294,8276],{"class":364},[359,8296,8132],{"class":575},[359,8298,8299],{"class":368}," cleanPS\n",[359,8301,8302,8304,8306],{"class":361,"line":3120},[359,8303,8276],{"class":364},[359,8305,8132],{"class":575},[359,8307,8308],{"class":368}," cleanTXT\n",[359,8310,8311,8313,8315],{"class":361,"line":3131},[359,8312,8276],{"class":364},[359,8314,8132],{"class":575},[359,8316,8317],{"class":368}," cleanPDF\n",[359,8319,8320,8322,8324,8327],{"class":361,"line":3136},[359,8321,8276],{"class":364},[359,8323,8132],{"class":575},[359,8325,8326],{"class":368}," cleanHTML",[359,8328,8138],{"class":780},[359,8330,8331,8334],{"class":361,"line":3142},[359,8332,8333],{"class":575},"    mrproper",[359,8335,5579],{"class":780},[359,8337,8338,8340,8342,8345],{"class":361,"line":3153},[359,8339,8276],{"class":364},[359,8341,8132],{"class":575},[359,8343,8344],{"class":368}," clean",[359,8346,8138],{"class":780},[359,8348,8349,8352],{"class":361,"line":3164},[359,8350,8351],{"class":575},"    _dvi",[359,8353,5579],{"class":780},[359,8355,8356,8359,8361],{"class":361,"line":3175},[359,8357,8358],{"class":364},"        pslatex",[359,8360,8132],{"class":575},[359,8362,8363],{"class":368},".tex\n",[359,8365,8366,8368,8370,8373],{"class":361,"line":3396},[359,8367,8358],{"class":364},[359,8369,8132],{"class":575},[359,8371,8372],{"class":368},".tex",[359,8374,8138],{"class":780},[359,8376,8377,8380],{"class":361,"line":3401},[359,8378,8379],{"class":575},"    xdvi",[359,8381,5579],{"class":780},[359,8383,8384,8386,8388],{"class":361,"line":3407},[359,8385,8276],{"class":364},[359,8387,8132],{"class":575},[359,8389,8390],{"class":368}," _dvi\n",[359,8392,8393,8396,8398,8400],{"class":361,"line":3427},[359,8394,8395],{"class":364},"        xdvi",[359,8397,8132],{"class":575},[359,8399,8197],{"class":368},[359,8401,8138],{"class":780},[359,8403,8404,8407],{"class":361,"line":3444},[359,8405,8406],{"class":575},"    dvi",[359,8408,5579],{"class":780},[359,8410,8411,8413,8415],{"class":361,"line":3461},[359,8412,8276],{"class":364},[359,8414,8132],{"class":575},[359,8416,8390],{"class":368},[359,8418,8419,8421,8423,8426],{"class":361,"line":3478},[359,8420,8276],{"class":364},[359,8422,8132],{"class":575},[359,8424,8425],{"class":368}," cleanTEX",[359,8427,8138],{"class":780},[359,8429,8430,8433],{"class":361,"line":3483},[359,8431,8432],{"class":575},"    _html",[359,8434,5579],{"class":780},[359,8436,8437,8440,8443,8446,8449,8451,8453],{"class":361,"line":3489},[359,8438,8439],{"class":364},"        hevea",[359,8441,8442],{"class":590}," -francais",[359,8444,8445],{"class":590}," -fix",[359,8447,8448],{"class":590}," -noiso",[359,8450,8132],{"class":575},[359,8452,8372],{"class":368},[359,8454,8138],{"class":780},[359,8456,8457,8460],{"class":361,"line":3512},[359,8458,8459],{"class":575},"    html",[359,8461,5579],{"class":780},[359,8463,8464,8466,8468],{"class":361,"line":3531},[359,8465,8276],{"class":364},[359,8467,8132],{"class":575},[359,8469,8470],{"class":368}," _html\n",[359,8472,8473,8475,8477,8479],{"class":361,"line":3550},[359,8474,8276],{"class":364},[359,8476,8132],{"class":575},[359,8478,8425],{"class":368},[359,8480,8138],{"class":780},[359,8482,8483,8486],{"class":361,"line":3569},[359,8484,8485],{"class":575},"    _txt",[359,8487,5579],{"class":780},[359,8489,8490,8492,8494,8496,8499,8501,8503],{"class":361,"line":3574},[359,8491,8439],{"class":364},[359,8493,8442],{"class":590},[359,8495,8445],{"class":590},[359,8497,8498],{"class":590}," -text",[359,8500,8132],{"class":575},[359,8502,8372],{"class":368},[359,8504,8138],{"class":780},[359,8506,8507,8510],{"class":361,"line":3596},[359,8508,8509],{"class":575},"    txt",[359,8511,5579],{"class":780},[359,8513,8514,8516,8518],{"class":361,"line":3},[359,8515,8276],{"class":364},[359,8517,8132],{"class":575},[359,8519,8520],{"class":368}," _txt\n",[359,8522,8523,8525,8527,8529],{"class":361,"line":3611},[359,8524,8276],{"class":364},[359,8526,8132],{"class":575},[359,8528,8425],{"class":368},[359,8530,8138],{"class":780},[359,8532,8533,8536],{"class":361,"line":3616},[359,8534,8535],{"class":575},"    _ps",[359,8537,5579],{"class":780},[359,8539,8540,8542,8544],{"class":361,"line":3621},[359,8541,8276],{"class":364},[359,8543,8132],{"class":575},[359,8545,8390],{"class":368},[359,8547,8548,8551,8554,8556,8558],{"class":361,"line":3632},[359,8549,8550],{"class":364},"        dvips",[359,8552,8553],{"class":590}," -Ppdf",[359,8555,8132],{"class":575},[359,8557,8197],{"class":368},[359,8559,8138],{"class":780},[359,8561,8562,8565],{"class":361,"line":3648},[359,8563,8564],{"class":575},"    ps",[359,8566,5579],{"class":780},[359,8568,8569,8571,8573],{"class":361,"line":3669},[359,8570,8276],{"class":364},[359,8572,8132],{"class":575},[359,8574,8575],{"class":368}," _ps\n",[359,8577,8578,8580,8582],{"class":361,"line":3674},[359,8579,8276],{"class":364},[359,8581,8132],{"class":575},[359,8583,8290],{"class":368},[359,8585,8586,8588,8590,8592],{"class":361,"line":3680},[359,8587,8276],{"class":364},[359,8589,8132],{"class":575},[359,8591,8425],{"class":368},[359,8593,8138],{"class":780},[359,8595,8596,8599],{"class":361,"line":3686},[359,8597,8598],{"class":575},"    _pdf",[359,8600,5579],{"class":780},[359,8602,8603,8606,8608],{"class":361,"line":3692},[359,8604,8605],{"class":364},"        pdflatex",[359,8607,8132],{"class":575},[359,8609,8363],{"class":368},[359,8611,8612,8614,8616,8618],{"class":361,"line":3698},[359,8613,8605],{"class":364},[359,8615,8132],{"class":575},[359,8617,8372],{"class":368},[359,8619,8138],{"class":780},[359,8621,8622,8625],{"class":361,"line":3703},[359,8623,8624],{"class":575},"    pdf",[359,8626,5579],{"class":780},[359,8628,8629,8631,8633],{"class":361,"line":3709},[359,8630,8276],{"class":364},[359,8632,8132],{"class":575},[359,8634,8635],{"class":368}," _pdf\n",[359,8637,8638,8640,8642,8644],{"class":361,"line":3715},[359,8639,8276],{"class":364},[359,8641,8132],{"class":575},[359,8643,8425],{"class":368},[359,8645,8138],{"class":780},[359,8647,8648],{"class":361,"line":3721},[359,8649,8650],{"class":2494},"esac\n",[1383,8652,8653],{},"html pre.shiki code .sVyAn, html code.shiki .sVyAn{--shiki-default:#E06C75}html pre.shiki code .sjrmR, html code.shiki .sjrmR{--shiki-default:#56B6C2}html pre.shiki code .subq3, html code.shiki .subq3{--shiki-default:#98C379}html pre.shiki code .sVbv2, html code.shiki .sVbv2{--shiki-default:#61AFEF}html pre.shiki code .sVC51, html code.shiki .sVC51{--shiki-default:#D19A66}html pre.shiki code .sn6KH, html code.shiki .sn6KH{--shiki-default:#ABB2BF}html pre.shiki code .seHd6, html code.shiki .seHd6{--shiki-default:#C678DD}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sV9Aq, html code.shiki .sV9Aq{--shiki-default:#7F848E;--shiki-default-font-style:italic}html pre.shiki code .s_ZVi, html code.shiki .s_ZVi{--shiki-default:#E06C75;--shiki-default-font-style:italic}html pre.shiki code .sU0A5, html code.shiki .sU0A5{--shiki-default:#E5C07B}",{"title":34,"searchDepth":167,"depth":167,"links":8655},[8656,8657,8658,8659,8660,8661,8662,8663],{"id":6584,"depth":428,"text":6585},{"id":6687,"depth":428,"text":6688},{"id":6752,"depth":428,"text":6753},{"id":7084,"depth":428,"text":7085},{"id":7211,"depth":428,"text":7212},{"id":7513,"depth":428,"text":7514},{"id":7661,"depth":428,"text":7662},{"id":8016,"depth":428,"text":8017},"2006-08-20","Ce billet est consacré au script Linux. J'ai écrit divers script pour\n\"automatiser\" certaines commandes, même si je dois exécuter ces\nscripts manuellement. Je pourrais, quand bien même, appeler ces scripts\ndans un cron si je le souhaitais.",{"type":10,"value":8667},[8668,8674],[13,8669,6570,8670,6574,8672,6578],{},[17,8671,6573],{},[343,8673,6577],{},[13,8675,6581],{},{},"\u002Fpost\u002Fscript-linux",{"title":6565,"description":8665},"script-linux","posts\u002FSysAdmin\u002F2006-08-20-script-linux",[561,5879],"qYYuAxXiRSKJnYilIVY9b-rBpo_YbAqe2w9ZkHlKm6k",1777849594548]