[{"data":1,"prerenderedAt":7017},["ShallowReactive",2],{"category-sysadmin":3},[4,1181,4212,4895],{"id":5,"title":6,"author":7,"body":8,"category":1120,"categorySlug":1121,"date":1122,"description":1123,"excerpt":1124,"extension":1170,"location":1171,"meta":1172,"navigation":1173,"path":1174,"published":1173,"seo":1175,"slug":1176,"stem":1177,"tags":1178,"timeToRead":514,"__hash__":1180},"posts\u002Fposts\u002FSysAdmin\u002F2007-08-04-debian-etch-cle-usb.md","Debian etch - Clé USB","Ulrich Vandenhekke",{"type":9,"value":10,"toc":1112},"minimark",[11,20,36,39,70,80,95,100,105,112,157,161,175,181,197,201,205,208,224,246,259,267,270,359,363,372,587,591,598,613,617,620,625,632,638,661,672,678,696,700,715,721,728,732,738,744,750,754,767,807,824,828,872,886,892,896,899,953,957,972,990,1000,1006,1012,1018,1022,1038,1044,1048,1051,1057,1108],[12,13,14,15,19],"p",{},"Il peut être parfois utile de se déplacer ici et là avec une\ndistribution Linux ",[16,17,18],"em",{},"clé en main"," sans se trimbaler toujours avec un\nordinateur portable ou un CD.",[12,21,22,23,35],{},"La clé USB devient alors très utile atteignant aujourd'hui des tailles\nde l'ordre de 2G pour pas trop cher",[24,25,26],"sup",{},[27,28,34],"a",{"href":29,"ariaDescribedBy":30,"dataFootnoteRef":32,"id":33},"#user-content-fn-1",[31],"footnote-label","","user-content-fnref-1","1",". 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).",[12,37,38],{},"L'utilité peut-être variable :",[40,41,42,46,61,64,67],"ul",{},[43,44,45],"li",{},"Surfer avec une plus grande tranquillité",[43,47,48,49,53,54,53,57,60],{},"Utiliser ses logiciels favoris ( ",[50,51,52],"code",{},"Amarok",", ",[50,55,56],{},"KMyMoney",[50,58,59],{},"KDevelop",",\n... )",[43,62,63],{},"Utiliser une interface graphique, bien sûr, meilleure.",[43,65,66],{},"Utiliser dans un système embarqué.",[43,68,69],{},"Tester les ordinateurs portables dans les magasins",[12,71,72,73,79],{},"J'ai trouvé différents sites, tel que ",[27,74,78],{"href":75,"rel":76},"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",[77],"nofollow","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.",[12,81,82,83,88,89,94],{},"Ensuite j'ai trouvé d'autres sites, tels que ",[27,84,87],{"href":85,"rel":86},"http:\u002F\u002Fferaga.com\u002Fnode\u002F25",[77],"Howto Install a Debian\nGNU\u002FLinux system onto a USB flash thumb drive"," et ",[27,90,93],{"href":91,"rel":92},"http:\u002F\u002Fwww.debian-administration.org\u002Farticles\u002F179",[77],"Installing Debian\nonto USB flash media with everything encrypted."," dont je me suis\ninspiré pour écrire ce tutoriel.",[96,97,99],"h3",{"id":98},"préparation-de-la-clé","Préparation de la clé",[101,102,104],"h4",{"id":103},"modules","Modules",[12,106,107,108,111],{},"Afin de pouvoir accéder à la clé USB, il faut bien évidemment avoir\nchargé sur sa machine ",[16,109,110],{},"Gnu\u002FLinux"," les modules adéquates :",[113,114,118],"pre",{"className":115,"code":116,"language":117,"meta":32,"style":32},"language-bash shiki shiki-themes one-dark-pro","modprobe ehci_hcd\nmodprobe ohci_hcd\nmodprobe usbhid\nmodprobe usb_storage\n","bash",[50,119,120,133,141,149],{"__ignoreMap":32},[121,122,125,129],"span",{"class":123,"line":124},"line",1,[121,126,128],{"class":127},"sVbv2","modprobe",[121,130,132],{"class":131},"subq3"," ehci_hcd\n",[121,134,136,138],{"class":123,"line":135},2,[121,137,128],{"class":127},[121,139,140],{"class":131}," ohci_hcd\n",[121,142,144,146],{"class":123,"line":143},3,[121,145,128],{"class":127},[121,147,148],{"class":131}," usbhid\n",[121,150,152,154],{"class":123,"line":151},4,[121,153,128],{"class":127},[121,155,156],{"class":131}," usb_storage\n",[101,158,160],{"id":159},"logiciels","Logiciels",[12,162,163,164,167,168,171,172],{},"Nous allons considérer que nous sommes sur un système à base de\n",[16,165,166],{},"Gnu\u002FDebian"," (",[16,169,170],{},"Ubuntu"," devrait pouvoir faire l'affaire). Si vous avez un\nautre système, il vous faut trouver un moyen d'installer le programme\n",[50,173,174],{},"debootstrap",[12,176,177,178,180],{},"Sur un système ",[16,179,166],{},", il vous suffit de taper la commande, si le\nprogramme n'est pas déjà installé :",[113,182,184],{"className":115,"code":183,"language":117,"meta":32,"style":32},"aptitude install debootstrap\n",[50,185,186],{"__ignoreMap":32},[121,187,188,191,194],{"class":123,"line":124},[121,189,190],{"class":127},"aptitude",[121,192,193],{"class":131}," install",[121,195,196],{"class":131}," debootstrap\n",[96,198,200],{"id":199},"installation-du-système-de-base","Installation du système de base",[101,202,204],{"id":203},"partitionnement-de-la-clé-usb","Partitionnement de la clé USB",[12,206,207],{},"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.",[12,209,210,211,53,214,53,217,53,220,223],{},"Pour le partitionnement vous pouvez utiliser votre utilitaire favori\n(",[50,212,213],{},"parted",[50,215,216],{},"qtparted",[50,218,219],{},"fdisk",[50,221,222],{},"cfdisk",", ...). Le partitionnement que\nj'ai effectué pour ma propre clé est le suivant :",[225,226,227,234,240],"ol",{},[43,228,229,230],{},"50Mo pour la partition ",[231,232,233],"strong",{},"\u002Fboot",[43,235,236,237],{},"1,5Go pour la partition ",[231,238,239],{},"\u002F",[43,241,242,243],{},"le reste pour la partition ",[231,244,245],{},"\u002Fhome",[12,247,248,249,251,252,254,255,258],{},"La partition ",[231,250,245],{}," a été séparée afin de pouvoir mettre la partie\n",[231,253,239],{}," de la clé USB en ",[16,256,257],{},"lecture seule"," (étape que je n'ai pas encore\neffectuée).",[113,260,265],{"className":261,"code":263,"language":264},[262],"language-text","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","text",[50,266,263],{"__ignoreMap":32},[12,268,269],{},"Une fois les partitions créées vous pouvez les formater pour les\nutiliser.",[113,271,273],{"className":115,"code":272,"language":117,"meta":32,"style":32},"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",[50,274,275,290,302,314,324,333,341,350],{"__ignoreMap":32},[121,276,277,280,283,287],{"class":123,"line":124},[121,278,279],{"class":127},"mke2fs",[121,281,282],{"class":131}," \u002Fdev\u002Fsda1",[121,284,286],{"class":285},"sVC51"," -L",[121,288,289],{"class":131}," live-boot\n",[121,291,292,294,297,299],{"class":123,"line":135},[121,293,279],{"class":127},[121,295,296],{"class":131}," \u002Fdev\u002Fsda2",[121,298,286],{"class":285},[121,300,301],{"class":131}," live-root\n",[121,303,304,306,309,311],{"class":123,"line":143},[121,305,279],{"class":127},[121,307,308],{"class":131}," \u002Fdev\u002Fsda3",[121,310,286],{"class":285},[121,312,313],{"class":131}," live-home\n",[121,315,316,319,321],{"class":123,"line":151},[121,317,318],{"class":127},"mount",[121,320,296],{"class":131},[121,322,323],{"class":131}," \u002Fmnt\n",[121,325,327,330],{"class":123,"line":326},5,[121,328,329],{"class":127},"mkdir",[121,331,332],{"class":131}," \u002Fmnt\u002Fboot\n",[121,334,336,338],{"class":123,"line":335},6,[121,337,329],{"class":127},[121,339,340],{"class":131}," \u002Fmnt\u002Fhome\n",[121,342,344,346,348],{"class":123,"line":343},7,[121,345,318],{"class":127},[121,347,282],{"class":131},[121,349,332],{"class":131},[121,351,353,355,357],{"class":123,"line":352},8,[121,354,318],{"class":127},[121,356,308],{"class":131},[121,358,340],{"class":131},[101,360,362],{"id":361},"installation-à-laide-de-debootstrap","Installation à l'aide de debootstrap",[12,364,365,366,368,369,371],{},"Une fois les partitions montées on peut installer le système\n",[16,367,166],{}," sur la clé USB en utilisant l'utilitaire ",[50,370,174],{}," :",[113,373,375],{"className":115,"code":374,"language":117,"meta":32,"style":32},"> 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",[50,376,377,383,394,403,412,431,447,471,482,502,512,519,530,540,550,560,570],{"__ignoreMap":32},[121,378,379],{"class":123,"line":124},[121,380,382],{"class":381},"sn6KH","> debootstrap --arch i386 etch \u002Fmnt\u002F ftp:\u002F\u002Fftp2.fr.debian.org\u002Fdebian\u002F\n",[121,384,385,388,391],{"class":123,"line":135},[121,386,387],{"class":127},"I:",[121,389,390],{"class":131}," Retrieving",[121,392,393],{"class":131}," Release\n",[121,395,396,398,400],{"class":123,"line":143},[121,397,387],{"class":127},[121,399,390],{"class":131},[121,401,402],{"class":131}," Packages\n",[121,404,405,407,410],{"class":123,"line":151},[121,406,387],{"class":127},[121,408,409],{"class":131}," Validating",[121,411,402],{"class":131},[121,413,414,416,419,422,425,428],{"class":123,"line":326},[121,415,387],{"class":127},[121,417,418],{"class":131},"  Resolving",[121,420,421],{"class":131}," dependencies",[121,423,424],{"class":131}," of",[121,426,427],{"class":131}," required",[121,429,430],{"class":131}," packages...\n",[121,432,433,435,438,440,442,445],{"class":123,"line":335},[121,434,387],{"class":127},[121,436,437],{"class":131}," Resolving",[121,439,421],{"class":131},[121,441,424],{"class":131},[121,443,444],{"class":131}," base",[121,446,430],{"class":131},[121,448,449,451,454,457,459,462,465,468],{"class":123,"line":343},[121,450,387],{"class":127},[121,452,453],{"class":131}," Found",[121,455,456],{"class":131}," additional",[121,458,444],{"class":131},[121,460,461],{"class":131}," dependencies:",[121,463,464],{"class":131}," libdb4.2",[121,466,467],{"class":131}," libgnutls12",[121,469,470],{"class":131}," libreadline5\n",[121,472,473,476,479],{"class":123,"line":352},[121,474,475],{"class":127},"    libsigc++-2.0-0c2a",[121,477,478],{"class":131}," openbsd-inetd",[121,480,481],{"class":131}," readline-common\n",[121,483,485,487,490,493,496,499],{"class":123,"line":484},9,[121,486,387],{"class":127},[121,488,489],{"class":131}," Checking",[121,491,492],{"class":131}," component",[121,494,495],{"class":131}," main",[121,497,498],{"class":131}," on",[121,500,501],{"class":131}," http:\u002F\u002Fftp.debian.org\u002Fdebian...\n",[121,503,505,507,509],{"class":123,"line":504},10,[121,506,387],{"class":127},[121,508,390],{"class":131},[121,510,511],{"class":131}," adduser\n",[121,513,515],{"class":123,"line":514},11,[121,516,518],{"class":517},"sjrmR","...\n",[121,520,522,524,527],{"class":123,"line":521},12,[121,523,387],{"class":127},[121,525,526],{"class":131}," Configuring",[121,528,529],{"class":131}," gnupg...\n",[121,531,533,535,537],{"class":123,"line":532},13,[121,534,387],{"class":127},[121,536,526],{"class":131},[121,538,539],{"class":131}," sysklogd...\n",[121,541,543,545,547],{"class":123,"line":542},14,[121,544,387],{"class":127},[121,546,526],{"class":131},[121,548,549],{"class":131}," klogd...\n",[121,551,553,555,557],{"class":123,"line":552},15,[121,554,387],{"class":127},[121,556,526],{"class":131},[121,558,559],{"class":131}," netbase...\n",[121,561,563,565,567],{"class":123,"line":562},16,[121,564,387],{"class":127},[121,566,526],{"class":131},[121,568,569],{"class":131}," openbsd-inetd...\n",[121,571,573,575,578,581,584],{"class":123,"line":572},17,[121,574,387],{"class":127},[121,576,577],{"class":131}," Base",[121,579,580],{"class":131}," system",[121,582,583],{"class":131}," installed",[121,585,586],{"class":131}," successfully.\n",[101,588,590],{"id":589},"dans-un-chroot","Dans un Chroot",[12,592,593,594,597],{},"Les opérations suivantes sont à faire sur l'environnement de\ndestination, il faut donc utiliser la commande ",[50,595,596],{},"chroot"," pour s'y placer.",[113,599,601],{"className":115,"code":600,"language":117,"meta":32,"style":32},"chroot \u002Fmnt '\u002Fbin\u002Fbash -i'\n",[50,602,603],{"__ignoreMap":32},[121,604,605,607,610],{"class":123,"line":124},[121,606,596],{"class":127},[121,608,609],{"class":131}," \u002Fmnt",[121,611,612],{"class":131}," '\u002Fbin\u002Fbash -i'\n",[101,614,616],{"id":615},"noyaux","Noyaux",[12,618,619],{},"Une fois le système de base installé, il faut le configurer et y ajouter\nde quoi démarrer la clé USB.",[621,622,624],"h5",{"id":623},"ajustement-et-systèmes-de-fichiers-etcfstab","Ajustement et systèmes de fichiers : \u002Fetc\u002Ffstab",[12,626,627,628,631],{},"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 ",[231,629,630],{},"fstab"," ressemblant à celui là :",[113,633,636],{"className":634,"code":635,"language":264},[262],"#\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",[50,637,635],{"__ignoreMap":32},[12,639,640,641,644,645,647,648,656,657,660],{},"J'utilise le label de la partition au lieu d'utiliser le ",[16,642,643],{},"block device",".\nL'utilisation du ",[16,646,643],{}," peut gêner si la clé USB n'est pas\ntoujours détectée dans le même ordre",[24,649,650],{},[27,651,655],{"href":652,"ariaDescribedBy":653,"dataFootnoteRef":32,"id":654},"#user-content-fn-2",[31],"user-content-fnref-2","2",".Les dossiers temporaires\nsont tous reportés dans un système de fichier virtuel (en mémoire) à\nl'aide de ",[50,658,659],{},"tmpfs",".",[12,662,663,664,667,668,671],{},"Une fois le fichier ",[231,665,666],{},"\u002Fetc\u002Ffstab"," configuré, il ne reste plus qu'à\nmonter les partitions. Pour monter les partitions un simple ",[50,669,670],{},"mount -a","\nle fait. Il est aussi possible de monter les partitions une à une.",[12,673,674,371],{},[675,676,677],"ins",{},"Il est possible que la commande suivante faite hors du chroot\npuisse résoudre certain problème si l'application utilise udev,\n...",[113,679,681],{"className":115,"code":680,"language":117,"meta":32,"style":32},"mount --bind \u002Fdev\u002F \u002Fmnt\u002Fdev\u002F\n",[50,682,683],{"__ignoreMap":32},[121,684,685,687,690,693],{"class":123,"line":124},[121,686,318],{"class":127},[121,688,689],{"class":285}," --bind",[121,691,692],{"class":131}," \u002Fdev\u002F",[121,694,695],{"class":131}," \u002Fmnt\u002Fdev\u002F\n",[621,697,699],{"id":698},"le-réseau-etchostname-etchosts","Le réseau : \u002Fetc\u002Fhostname \u002Fetc\u002Fhosts",[12,701,702,703,706,707,710,711,714],{},"Le fichier ",[231,704,705],{},"\u002Fetc\u002Fhosts"," doit contenir une ligne indiquant l'adresse du\n",[16,708,709],{},"loopback"," et le nom de la machine. Ceci afin que ",[16,712,713],{},"KDE"," par exemple\npuisse démarrer :",[113,716,719],{"className":717,"code":718,"language":264},[262],"127.0.0.1       localhost.localdomain   localhost  liveding\n",[50,720,718],{"__ignoreMap":32},[12,722,723,724,727],{},"Dans le fichier ",[231,725,726],{},"\u002Fetc\u002Fhostname"," il faut également mettre le nom de la\nmachine.",[621,729,731],{"id":730},"apt-etcaptsourceslist","Apt : \u002Fetc\u002Fapt\u002Fsources.list",[12,733,702,734,737],{},[231,735,736],{},"sources.list"," contient les lignes par défaut suivantes :",[113,739,742],{"className":740,"code":741,"language":264},[262],"# 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",[50,743,741],{"__ignoreMap":32},[12,745,746,747,749],{},"Ces lignes permettent de télécharger les paquets par défaut de\n",[16,748,166],{}," ainsi que les paquets de sécurité, et les paquets non\nofficiels permettant d'activer certaine fonctionnalité.",[621,751,753],{"id":752},"initrd-etckernel-imgconf","Initrd : \u002Fetc\u002Fkernel-img.conf",[12,755,723,756,759,760,762,763,766],{},[231,757,758],{},"\u002Fetc\u002Fkernel-img.conf"," on enregistre les informations\nsuivantes (afin que ",[16,761,166],{}," crée un fichier ",[50,764,765],{},"initrd"," lors de\nl'installation du noyau) :",[113,768,772],{"className":769,"code":770,"language":771,"meta":32,"style":32},"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",[50,773,774,780,785,797],{"__ignoreMap":32},[121,775,776],{"class":123,"line":124},[121,777,779],{"class":778},"sV9Aq","# Kernel Image management overrides\n",[121,781,782],{"class":123,"line":135},[121,783,784],{"class":778},"# See kernel-img.conf(5) for details\n",[121,786,787,791,794],{"class":123,"line":143},[121,788,790],{"class":789},"seHd6","do_symlinks",[121,792,793],{"class":381}," =",[121,795,796],{"class":131}," Yes\n",[121,798,799,802,804],{"class":123,"line":151},[121,800,801],{"class":789},"do_initrd",[121,803,793],{"class":381},[121,805,806],{"class":131}," yes\n",[12,808,702,809,811,812,820,821,823],{},[50,810,765],{}," permet de charger les modules nécessaires",[24,813,814],{},[27,815,819],{"href":816,"ariaDescribedBy":817,"dataFootnoteRef":32,"id":818},"#user-content-fn-3",[31],"user-content-fnref-3","3","\nau démarrage de ",[16,822,110],{}," sur une clé USB.",[621,825,827],{"id":826},"installation-de-paquet","Installation de paquet",[113,829,831],{"className":115,"code":830,"language":117,"meta":32,"style":32},"aptitude install initrd-tools linux-image-2.6.16-1-686\naptitude install grub\naptitude install localepurge\naptitude clean# localepurge\n",[50,832,833,845,854,863],{"__ignoreMap":32},[121,834,835,837,839,842],{"class":123,"line":124},[121,836,190],{"class":127},[121,838,193],{"class":131},[121,840,841],{"class":131}," initrd-tools",[121,843,844],{"class":131}," linux-image-2.6.16-1-686\n",[121,846,847,849,851],{"class":123,"line":135},[121,848,190],{"class":127},[121,850,193],{"class":131},[121,852,853],{"class":131}," grub\n",[121,855,856,858,860],{"class":123,"line":143},[121,857,190],{"class":127},[121,859,193],{"class":131},[121,861,862],{"class":131}," localepurge\n",[121,864,865,867,870],{"class":123,"line":151},[121,866,190],{"class":127},[121,868,869],{"class":131}," clean#",[121,871,862],{"class":131},[12,873,874,875,877,878,881,882,885],{},"On installe une image du noyau, ainsi que les outils pour générer\nl'image ",[50,876,765],{},". On installe également ",[50,879,880],{},"grub"," qui servira à démarrer\nsur la clé USB. Le paquet ",[50,883,884],{},"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.",[12,887,888,889,891],{},"Il est aussi possible d'installer quelques paquets comme un serveur\ngraphique, même voir ",[16,890,713],{},", ou encore des outils d'administration. On\npeut aussi installer des outils qui pourront permettre de réparer une\nmachine.",[621,893,895],{"id":894},"quelques-ajustements","Quelques ajustements",[12,897,898],{},"Afin de ne pas écrire trop souvent sur la clé USB, on remplace quelques\nfichiers.",[113,900,902],{"className":115,"code":901,"language":117,"meta":32,"style":32},"rm -f \u002Fetc\u002Fblkid.tab*\nln -s \u002Fdev\u002Fnull \u002Fetc\u002Fblkid.tab\nrm -f \u002Fetc\u002Fmtab\nln -s \u002Fproc\u002Fmounts \u002Fetc\u002Fmtab\n",[50,903,904,919,933,942],{"__ignoreMap":32},[121,905,906,909,912,915],{"class":123,"line":124},[121,907,908],{"class":127},"rm",[121,910,911],{"class":285}," -f",[121,913,914],{"class":131}," \u002Fetc\u002Fblkid.tab",[121,916,918],{"class":917},"sU0A5","*\n",[121,920,921,924,927,930],{"class":123,"line":135},[121,922,923],{"class":127},"ln",[121,925,926],{"class":285}," -s",[121,928,929],{"class":131}," \u002Fdev\u002Fnull",[121,931,932],{"class":131}," \u002Fetc\u002Fblkid.tab\n",[121,934,935,937,939],{"class":123,"line":143},[121,936,908],{"class":127},[121,938,911],{"class":285},[121,940,941],{"class":131}," \u002Fetc\u002Fmtab\n",[121,943,944,946,948,951],{"class":123,"line":151},[121,945,923],{"class":127},[121,947,926],{"class":285},[121,949,950],{"class":131}," \u002Fproc\u002Fmounts",[121,952,941],{"class":131},[96,954,956],{"id":955},"configuration-de-grub","Configuration de grub",[12,958,959,960,962,963,965,966,968,969,371],{},"Afin que la machine puisse démarrer il faut installer ",[50,961,880],{}," sur le\nsecteur de démarrage de la clé USB.Pour cela, on peut quitter le\n",[50,964,596],{},". Pour installer ",[50,967,880],{}," on peut utiliser ",[50,970,971],{},"grub-install",[113,973,975],{"className":115,"code":974,"language":117,"meta":32,"style":32},"grub-install recheck root-directory=\u002Fmnt\u002F \u002Fdev\u002Fsda\n",[50,976,977],{"__ignoreMap":32},[121,978,979,981,984,987],{"class":123,"line":124},[121,980,971],{"class":127},[121,982,983],{"class":131}," recheck",[121,985,986],{"class":131}," root-directory=\u002Fmnt\u002F",[121,988,989],{"class":131}," \u002Fdev\u002Fsda\n",[12,991,992,993,995,996,999],{},"Normalement cela devrait fonctionner ;) mais il est possible, si cela ne\nmarche pas d'essayer de l'installer à l'aide de la commande ",[50,994,880],{},"\ndirectement (attention le ",[16,997,998],{},"hd1"," est à adapter selon votre\nconfiguration) :",[113,1001,1004],{"className":1002,"code":1003,"language":264},[262],"# grub\ngrub> root (hd1,0)\ngrub> setup (hd1)\n",[50,1005,1003],{"__ignoreMap":32},[12,1007,1008,1009],{},"Il faut également renseigner le fichier ",[231,1010,1011],{},"\u002Fmnt\u002Fboot\u002Fgrub\u002Fmenu.lst",[113,1013,1016],{"className":1014,"code":1015,"language":264},[262],"# 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",[50,1017,1015],{"__ignoreMap":32},[96,1019,1021],{"id":1020},"ajout-dun-utilisateur","Ajout d'un utilisateur",[12,1023,1024,1025,1033,1034,1037],{},"Enfin il ne faut pas oublier d'installer un compte\nutilisateur",[24,1026,1027],{},[27,1028,1032],{"href":1029,"ariaDescribedBy":1030,"dataFootnoteRef":32,"id":1031},"#user-content-fn-4",[31],"user-content-fnref-4","4",", ainsi que changer le mot de passe ",[16,1035,1036],{},"root"," à l'aide\ndes commandes :",[113,1039,1042],{"className":1040,"code":1041,"language":264},[262],"chroot \u002Fmnt\npasswd\nadduser toto\n",[50,1043,1041],{"__ignoreMap":32},[96,1045,1047],{"id":1046},"redémarrage-et-test","Redémarrage et test",[12,1049,1050],{},"Il ne reste plus qu'à démonter toutes les partitions et redémarrer la\nmachine.",[113,1052,1055],{"className":1053,"code":1054,"language":264},[262],"umount -a\nexit\nreboot\n",[50,1056,1054],{"__ignoreMap":32},[1058,1059,1062,1068],"section",{"className":1060,"dataFootnotes":32},[1061],"footnotes",[1063,1064,1067],"h2",{"className":1065,"id":31},[1066],"sr-only","Footnotes",[225,1069,1070,1081,1090,1099],{},[43,1071,1073,1074],{"id":1072},"user-content-fn-1","J'ai par ailleurs acheté récemment une clé USB de 2Go à cet effet pour à peine 15 euros ",[27,1075,1080],{"href":1076,"ariaLabel":1077,"className":1078,"dataFootnoteBackref":32},"#user-content-fnref-1","Back to reference 1",[1079],"data-footnote-backref","↩",[43,1082,1084,1085],{"id":1083},"user-content-fn-2","Ce qui peut arriver quand on change de machine par exemple. ",[27,1086,1080],{"href":1087,"ariaLabel":1088,"className":1089,"dataFootnoteBackref":32},"#user-content-fnref-2","Back to reference 2",[1079],[43,1091,1093,1094],{"id":1092},"user-content-fn-3","i.e les modules USB, ... ",[27,1095,1080],{"href":1096,"ariaLabel":1097,"className":1098,"dataFootnoteBackref":32},"#user-content-fnref-3","Back to reference 3",[1079],[43,1100,1102,1103],{"id":1101},"user-content-fn-4","Il ne faudrait pas travailler en administrateur, hein ! ",[27,1104,1080],{"href":1105,"ariaLabel":1106,"className":1107,"dataFootnoteBackref":32},"#user-content-fnref-4","Back to reference 4",[1079],[1109,1110,1111],"style",{},"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":32,"searchDepth":135,"depth":135,"links":1113},[1114,1115,1116,1117,1118,1119],{"id":98,"depth":143,"text":99},{"id":199,"depth":143,"text":200},{"id":955,"depth":143,"text":956},{"id":1020,"depth":143,"text":1021},{"id":1046,"depth":143,"text":1047},{"id":31,"depth":135,"text":1067},"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":9,"value":1125},[1126,1130,1137,1139,1157,1162],[12,1127,14,1128,19],{},[16,1129,18],{},[12,1131,22,1132,35],{},[24,1133,1134],{},[27,1135,34],{"href":29,"ariaDescribedBy":1136,"dataFootnoteRef":32,"id":33},[31],[12,1138,38],{},[40,1140,1141,1143,1151,1153,1155],{},[43,1142,45],{},[43,1144,48,1145,53,1147,53,1149,60],{},[50,1146,52],{},[50,1148,56],{},[50,1150,59],{},[43,1152,63],{},[43,1154,66],{},[43,1156,69],{},[12,1158,72,1159,79],{},[27,1160,78],{"href":75,"rel":1161},[77],[12,1163,82,1164,88,1167,94],{},[27,1165,87],{"href":85,"rel":1166},[77],[27,1168,93],{"href":91,"rel":1169},[77],"md","Lille, France",{},true,"\u002Fpost\u002Fdebian-etch-cle-usb",{"title":6,"description":1123},"debian-etch-cle-usb","posts\u002FSysAdmin\u002F2007-08-04-debian-etch-cle-usb",[1179],"debian","P1wXAJpGAtElk0Xu1quXBbbh85GWI8n-HVkQxXWB6m0",{"id":1182,"title":1183,"author":7,"body":1184,"category":1120,"categorySlug":1121,"date":4183,"description":4184,"excerpt":4185,"extension":1170,"location":1171,"meta":4205,"navigation":1173,"path":4206,"published":1173,"seo":4207,"slug":1509,"stem":4208,"tags":4209,"timeToRead":343,"__hash__":4211},"posts\u002Fposts\u002FSysAdmin\u002F2006-10-16-sauvegarde-automatique.md","Sauvegarde automatique 0.9",{"type":9,"value":1185,"toc":4178},[1186,1191,1198,1209,1212,1215,1219,1507,1511,2614,2618,4175],[12,1187,1188,1189,660],{},"Ce billet concerne une application, de mon cru, écrite en ",[50,1190,117],{},[12,1192,1193,1194,1197],{},"Elle utilise l'application ",[50,1195,1196],{},"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.",[12,1199,1200,1201,1204,1205,1208],{},"Pour fonctionner l'application se configure à l'aide d'un fichier du\ndossier ",[50,1202,1203],{},"\u002Fetc"," qui permet de déterminer une liste de dossier à\nsauvegarder (",[50,1206,1207],{},"\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?).",[12,1210,1211],{},"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, ....",[12,1213,1214],{},"Il ne reste plus qu'à configurer ces petits scripts et les mettre dans\nun cron",[96,1216,1218],{"id":1217},"contenu-exemple-du-fichier-de-configuration","Contenu exemple du fichier de configuration",[113,1220,1222],{"className":115,"code":1221,"language":117,"meta":32,"style":32},"# 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",[50,1223,1224,1229,1234,1239,1251,1261,1271,1275,1280,1290,1294,1299,1309,1319,1329,1339,1343,1348,1359,1370,1381,1387,1398,1403,1409,1420,1431,1442,1453,1458,1464,1475,1486,1497],{"__ignoreMap":32},[121,1225,1226],{"class":123,"line":124},[121,1227,1228],{"class":778},"# This config file make relation for backup\n",[121,1230,1231],{"class":123,"line":135},[121,1232,1233],{"emptyLinePlaceholder":1173},"\n",[121,1235,1236],{"class":123,"line":143},[121,1237,1238],{"class":778},"# Options\n",[121,1240,1241,1245,1248],{"class":123,"line":151},[121,1242,1244],{"class":1243},"sVyAn","BACKUP_OPT",[121,1246,1247],{"class":517},"=",[121,1249,1250],{"class":131},"\"-v -s 4613734400 -D -z9 -m 150\"\n",[121,1252,1253,1256,1258],{"class":123,"line":326},[121,1254,1255],{"class":1243},"BACKUP_EXCLUDE_EXT",[121,1257,1247],{"class":517},[121,1259,1260],{"class":131},"\"-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",[121,1262,1263,1266,1268],{"class":123,"line":335},[121,1264,1265],{"class":1243},"BACKUP_EXCLUDE_PATH",[121,1267,1247],{"class":517},[121,1269,1270],{"class":131},"\"-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",[121,1272,1273],{"class":123,"line":343},[121,1274,1233],{"emptyLinePlaceholder":1173},[121,1276,1277],{"class":123,"line":352},[121,1278,1279],{"class":778},"# Copy Backup\n",[121,1281,1282,1285,1287],{"class":123,"line":484},[121,1283,1284],{"class":1243},"COPYTO",[121,1286,1247],{"class":517},[121,1288,1289],{"class":131},"\"usbdrive network\"\n",[121,1291,1292],{"class":123,"line":504},[121,1293,1233],{"emptyLinePlaceholder":1173},[121,1295,1296],{"class":123,"line":514},[121,1297,1298],{"class":778},"# Copy to usb drive\n",[121,1300,1301,1304,1306],{"class":123,"line":521},[121,1302,1303],{"class":1243},"usbdrive_type",[121,1305,1247],{"class":517},[121,1307,1308],{"class":131},"\"usb\"\n",[121,1310,1311,1314,1316],{"class":123,"line":532},[121,1312,1313],{"class":1243},"usbdrive_dev",[121,1315,1247],{"class":517},[121,1317,1318],{"class":131},"\"\u002Fdev\u002Fusb\u002Fdisk1\"\n",[121,1320,1321,1324,1326],{"class":123,"line":542},[121,1322,1323],{"class":1243},"usbdrive_mountpoint",[121,1325,1247],{"class":517},[121,1327,1328],{"class":131},"\"\u002Fmedia\u002Fdisque\u002F\"\n",[121,1330,1331,1334,1336],{"class":123,"line":552},[121,1332,1333],{"class":1243},"usbdrive_pathname",[121,1335,1247],{"class":517},[121,1337,1338],{"class":131},"\"backup\u002F\"\n",[121,1340,1341],{"class":123,"line":562},[121,1342,1233],{"emptyLinePlaceholder":1173},[121,1344,1345],{"class":123,"line":572},[121,1346,1347],{"class":778},"# Copy to network\n",[121,1349,1351,1354,1356],{"class":123,"line":1350},18,[121,1352,1353],{"class":1243},"network_type",[121,1355,1247],{"class":517},[121,1357,1358],{"class":131},"\"net\"\n",[121,1360,1362,1365,1367],{"class":123,"line":1361},19,[121,1363,1364],{"class":1243},"network_host",[121,1366,1247],{"class":517},[121,1368,1369],{"class":131},"\"miniding\"\n",[121,1371,1373,1376,1378],{"class":123,"line":1372},20,[121,1374,1375],{"class":1243},"network_user",[121,1377,1247],{"class":517},[121,1379,1380],{"class":131},"\"phoenix\"\n",[121,1382,1384],{"class":123,"line":1383},21,[121,1385,1386],{"class":778},"# no network_pass : use ssh key for backup\n",[121,1388,1390,1393,1395],{"class":123,"line":1389},22,[121,1391,1392],{"class":1243},"network_dir",[121,1394,1247],{"class":517},[121,1396,1397],{"class":131},"\"\u002Fhome\u002Fphoenix\u002Fbackup\"\n",[121,1399,1401],{"class":123,"line":1400},23,[121,1402,1233],{"emptyLinePlaceholder":1173},[121,1404,1406],{"class":123,"line":1405},24,[121,1407,1408],{"class":778},"# Home\n",[121,1410,1412,1415,1417],{"class":123,"line":1411},25,[121,1413,1414],{"class":1243},"home_name",[121,1416,1247],{"class":517},[121,1418,1419],{"class":131},"maxiding_home\n",[121,1421,1423,1426,1428],{"class":123,"line":1422},26,[121,1424,1425],{"class":1243},"home_source",[121,1427,1247],{"class":517},[121,1429,1430],{"class":131},"\u002Fhome\u002F\n",[121,1432,1434,1437,1439],{"class":123,"line":1433},27,[121,1435,1436],{"class":1243},"home_destination",[121,1438,1247],{"class":517},[121,1440,1441],{"class":131},"\u002Fgravure\u002Fdar\u002Fhome\u002F\n",[121,1443,1445,1448,1450],{"class":123,"line":1444},28,[121,1446,1447],{"class":1243},"home_inc_max",[121,1449,1247],{"class":517},[121,1451,1452],{"class":131},"10\n",[121,1454,1456],{"class":123,"line":1455},29,[121,1457,1233],{"emptyLinePlaceholder":1173},[121,1459,1461],{"class":123,"line":1460},30,[121,1462,1463],{"class":778},"# Etc\n",[121,1465,1467,1470,1472],{"class":123,"line":1466},31,[121,1468,1469],{"class":1243},"etc_name",[121,1471,1247],{"class":517},[121,1473,1474],{"class":131},"maxiding_etc\n",[121,1476,1478,1481,1483],{"class":123,"line":1477},32,[121,1479,1480],{"class":1243},"etc_source",[121,1482,1247],{"class":517},[121,1484,1485],{"class":131},"\u002Fetc\u002F\n",[121,1487,1489,1492,1494],{"class":123,"line":1488},33,[121,1490,1491],{"class":1243},"etc_destination",[121,1493,1247],{"class":517},[121,1495,1496],{"class":131},"\u002Fgravure\u002Fdar\u002Fetc\u002F\n",[121,1498,1500,1503,1505],{"class":123,"line":1499},34,[121,1501,1502],{"class":1243},"etc_inc_max",[121,1504,1247],{"class":517},[121,1506,1452],{"class":131},[96,1508,1510],{"id":1509},"sauvegarde-automatique","Sauvegarde automatique",[113,1512,1514],{"className":115,"code":1513,"language":117,"meta":32,"style":32},"#!\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",[50,1515,1516,1521,1525,1530,1535,1540,1545,1550,1555,1560,1565,1569,1574,1579,1584,1589,1594,1598,1603,1608,1613,1618,1622,1626,1643,1651,1656,1664,1672,1677,1681,1701,1708,1715,1719,1724,1730,1750,1767,1784,1801,1806,1812,1835,1854,1873,1892,1897,1919,1927,1935,1940,1945,1956,1972,1993,1998,2004,2010,2016,2022,2027,2033,2039,2045,2051,2057,2063,2069,2075,2081,2087,2093,2098,2110,2125,2130,2182,2188,2193,2203,2214,2219,2242,2261,2270,2276,2287,2295,2301,2306,2311,2321,2329,2334,2359,2385,2411,2416,2421,2431,2449,2469,2481,2503,2532,2537,2545,2555,2566,2571,2576,2581,2590,2598,2606],{"__ignoreMap":32},[121,1517,1518],{"class":123,"line":124},[121,1519,1520],{"class":778},"#!\u002Fbin\u002Fsh\n",[121,1522,1523],{"class":123,"line":135},[121,1524,1233],{"emptyLinePlaceholder":1173},[121,1526,1527],{"class":123,"line":143},[121,1528,1529],{"class":778},"#############################################################################\n",[121,1531,1532],{"class":123,"line":151},[121,1533,1534],{"class":778},"##   Copyright (C) 2006 by Ulrich Van Den Hekke                            ##\n",[121,1536,1537],{"class":123,"line":326},[121,1538,1539],{"class":778},"##   ulrich.vdh@free.fr                                                    ##\n",[121,1541,1542],{"class":123,"line":335},[121,1543,1544],{"class":778},"##                                                                         ##\n",[121,1546,1547],{"class":123,"line":343},[121,1548,1549],{"class":778},"##   This program is free software; you can redistribute it and\u002For modify  ##\n",[121,1551,1552],{"class":123,"line":352},[121,1553,1554],{"class":778},"##   it under the terms of the GNU General Public License as published by  ##\n",[121,1556,1557],{"class":123,"line":484},[121,1558,1559],{"class":778},"##   the Free Software Foundation; either version 2 of the License, or     ##\n",[121,1561,1562],{"class":123,"line":504},[121,1563,1564],{"class":778},"##   (at your option) any later version.                                   ##\n",[121,1566,1567],{"class":123,"line":514},[121,1568,1544],{"class":778},[121,1570,1571],{"class":123,"line":521},[121,1572,1573],{"class":778},"# \u002Fvar\n",[121,1575,1576],{"class":123,"line":532},[121,1577,1578],{"class":778},"##   This program is distributed in the hope that it will be useful,       ##\n",[121,1580,1581],{"class":123,"line":542},[121,1582,1583],{"class":778},"##   but WITHOUT ANY WARRANTY; without even the implied warranty of        ##\n",[121,1585,1586],{"class":123,"line":552},[121,1587,1588],{"class":778},"##   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         ##\n",[121,1590,1591],{"class":123,"line":562},[121,1592,1593],{"class":778},"##   GNU General Public License for more details.                          ##\n",[121,1595,1596],{"class":123,"line":572},[121,1597,1544],{"class":778},[121,1599,1600],{"class":123,"line":1350},[121,1601,1602],{"class":778},"##   You should have received a copy of the GNU General Public License     ##\n",[121,1604,1605],{"class":123,"line":1361},[121,1606,1607],{"class":778},"##   along with this program; if not, write to the                         ##\n",[121,1609,1610],{"class":123,"line":1372},[121,1611,1612],{"class":778},"##   Free Software Foundation, Inc.,                                       ##\n",[121,1614,1615],{"class":123,"line":1383},[121,1616,1617],{"class":778},"##   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             ##\n",[121,1619,1620],{"class":123,"line":1389},[121,1621,1529],{"class":778},[121,1623,1624],{"class":123,"line":1400},[121,1625,1233],{"emptyLinePlaceholder":1173},[121,1627,1628,1631,1634,1637,1640],{"class":123,"line":1405},[121,1629,1630],{"class":789},"if",[121,1632,1633],{"class":381}," [ ",[121,1635,1636],{"class":517},"-e",[121,1638,1639],{"class":381}," \u002Fetc\u002Fautobackup ] ; ",[121,1641,1642],{"class":789},"then\n",[121,1644,1645,1648],{"class":123,"line":1411},[121,1646,1647],{"class":517},"        .",[121,1649,1650],{"class":131}," \u002Fetc\u002Fautobackup\n",[121,1652,1653],{"class":123,"line":1422},[121,1654,1655],{"class":789},"else\n",[121,1657,1658,1661],{"class":123,"line":1433},[121,1659,1660],{"class":517},"echo",[121,1662,1663],{"class":131}," \"Please configure the autobackup config file\"\n",[121,1665,1666,1669],{"class":123,"line":1444},[121,1667,1668],{"class":517},"exit",[121,1670,1671],{"class":285}," 1\n",[121,1673,1674],{"class":123,"line":1455},[121,1675,1676],{"class":789},"fi\n",[121,1678,1679],{"class":123,"line":1460},[121,1680,1233],{"emptyLinePlaceholder":1173},[121,1682,1683,1685,1687,1690,1693,1696,1699],{"class":123,"line":1466},[121,1684,1630],{"class":789},[121,1686,1633],{"class":381},[121,1688,1689],{"class":917},"$#",[121,1691,1692],{"class":517}," -ne",[121,1694,1695],{"class":285}," 1",[121,1697,1698],{"class":381}," ] ; ",[121,1700,1642],{"class":789},[121,1702,1703,1705],{"class":123,"line":1477},[121,1704,1660],{"class":517},[121,1706,1707],{"class":131}," \"Please specify a project to backup\"\n",[121,1709,1710,1712],{"class":123,"line":1488},[121,1711,1668],{"class":517},[121,1713,1714],{"class":285}," 2\n",[121,1716,1717],{"class":123,"line":1499},[121,1718,1676],{"class":789},[121,1720,1722],{"class":123,"line":1721},35,[121,1723,1233],{"emptyLinePlaceholder":1173},[121,1725,1727],{"class":123,"line":1726},36,[121,1728,1729],{"class":778},"# Define name of variable to use\n",[121,1731,1733,1736,1738,1741,1744,1747],{"class":123,"line":1732},37,[121,1734,1735],{"class":1243},"var_name",[121,1737,1247],{"class":517},[121,1739,1740],{"class":131},"\"",[121,1742,1743],{"class":517},"\\$",[121,1745,1746],{"class":1243},"$1_name",[121,1748,1749],{"class":131},"\"\n",[121,1751,1753,1756,1758,1760,1762,1765],{"class":123,"line":1752},38,[121,1754,1755],{"class":1243},"var_source",[121,1757,1247],{"class":517},[121,1759,1740],{"class":131},[121,1761,1743],{"class":517},[121,1763,1764],{"class":1243},"$1_source",[121,1766,1749],{"class":131},[121,1768,1770,1773,1775,1777,1779,1782],{"class":123,"line":1769},39,[121,1771,1772],{"class":1243},"var_destination",[121,1774,1247],{"class":517},[121,1776,1740],{"class":131},[121,1778,1743],{"class":517},[121,1780,1781],{"class":1243},"$1_destination",[121,1783,1749],{"class":131},[121,1785,1787,1790,1792,1794,1796,1799],{"class":123,"line":1786},40,[121,1788,1789],{"class":1243},"var_inc_max",[121,1791,1247],{"class":517},[121,1793,1740],{"class":131},[121,1795,1743],{"class":517},[121,1797,1798],{"class":1243},"$1_inc_max",[121,1800,1749],{"class":131},[121,1802,1804],{"class":123,"line":1803},41,[121,1805,1233],{"emptyLinePlaceholder":1173},[121,1807,1809],{"class":123,"line":1808},42,[121,1810,1811],{"class":778},"# Define content of variable for the project\n",[121,1813,1815,1818,1820,1823,1826,1829,1832],{"class":123,"line":1814},43,[121,1816,1817],{"class":1243},"BACKUP_SRC",[121,1819,1247],{"class":517},[121,1821,1822],{"class":131},"`",[121,1824,1825],{"class":517},"eval",[121,1827,1828],{"class":131}," echo ",[121,1830,1831],{"class":1243},"$var_source",[121,1833,1834],{"class":131},"`\n",[121,1836,1838,1841,1843,1845,1847,1849,1852],{"class":123,"line":1837},44,[121,1839,1840],{"class":1243},"BACKUP_DST",[121,1842,1247],{"class":517},[121,1844,1822],{"class":131},[121,1846,1825],{"class":517},[121,1848,1828],{"class":131},[121,1850,1851],{"class":1243},"$var_destination",[121,1853,1834],{"class":131},[121,1855,1857,1860,1862,1864,1866,1868,1871],{"class":123,"line":1856},45,[121,1858,1859],{"class":1243},"BACKUP_NAME",[121,1861,1247],{"class":517},[121,1863,1822],{"class":131},[121,1865,1825],{"class":517},[121,1867,1828],{"class":131},[121,1869,1870],{"class":1243},"$var_name",[121,1872,1834],{"class":131},[121,1874,1876,1879,1881,1883,1885,1887,1890],{"class":123,"line":1875},46,[121,1877,1878],{"class":1243},"BACKUP_INCREMENTAL_MAX",[121,1880,1247],{"class":517},[121,1882,1822],{"class":131},[121,1884,1825],{"class":517},[121,1886,1828],{"class":131},[121,1888,1889],{"class":1243},"$var_inc_max",[121,1891,1834],{"class":131},[121,1893,1895],{"class":123,"line":1894},47,[121,1896,1233],{"emptyLinePlaceholder":1173},[121,1898,1900,1902,1904,1907,1910,1913,1915,1917],{"class":123,"line":1899},48,[121,1901,1630],{"class":789},[121,1903,1633],{"class":381},[121,1905,1906],{"class":517},"-z",[121,1908,1909],{"class":131}," \"",[121,1911,1912],{"class":1243},"$BACKUP_NAME",[121,1914,1740],{"class":131},[121,1916,1698],{"class":381},[121,1918,1642],{"class":789},[121,1920,1922,1924],{"class":123,"line":1921},49,[121,1923,1660],{"class":517},[121,1925,1926],{"class":131}," \"Project undefined\"\n",[121,1928,1930,1932],{"class":123,"line":1929},50,[121,1931,1668],{"class":517},[121,1933,1934],{"class":285}," 3\n",[121,1936,1938],{"class":123,"line":1937},51,[121,1939,1676],{"class":789},[121,1941,1943],{"class":123,"line":1942},52,[121,1944,1233],{"emptyLinePlaceholder":1173},[121,1946,1948,1951,1953],{"class":123,"line":1947},53,[121,1949,1950],{"class":1243},"BACKUP_BIN",[121,1952,1247],{"class":517},[121,1954,1955],{"class":131},"dar\n",[121,1957,1959,1962,1964,1966,1969],{"class":123,"line":1958},54,[121,1960,1961],{"class":1243},"DATE_BACKUP",[121,1963,1247],{"class":517},[121,1965,1822],{"class":131},[121,1967,1968],{"class":127},"date",[121,1970,1971],{"class":131}," +%Y%m%d`\n",[121,1973,1975,1978,1980,1983,1985,1988,1990],{"class":123,"line":1974},55,[121,1976,1977],{"class":1243},"BACKUP_ARCHIVE",[121,1979,1247],{"class":517},[121,1981,1982],{"class":131},"\"${",[121,1984,1859],{"class":1243},[121,1986,1987],{"class":131},"}_${",[121,1989,1961],{"class":1243},[121,1991,1992],{"class":131},"}\"\n",[121,1994,1996],{"class":123,"line":1995},56,[121,1997,1233],{"emptyLinePlaceholder":1173},[121,1999,2001],{"class":123,"line":2000},57,[121,2002,2003],{"class":778},"# From config file\n",[121,2005,2007],{"class":123,"line":2006},58,[121,2008,2009],{"class":778},"# COUNT_INCREMENTAL_BACKUP\n",[121,2011,2013],{"class":123,"line":2012},59,[121,2014,2015],{"class":778},"# LAST_BACKUP\n",[121,2017,2019],{"class":123,"line":2018},60,[121,2020,2021],{"class":778},"# LAST_COMPLETE_BACKUP\n",[121,2023,2025],{"class":123,"line":2024},61,[121,2026,1233],{"emptyLinePlaceholder":1173},[121,2028,2030],{"class":123,"line":2029},62,[121,2031,2032],{"class":778},"# Some options\n",[121,2034,2036],{"class":123,"line":2035},63,[121,2037,2038],{"class":778},"# -v verbose\n",[121,2040,2042],{"class":123,"line":2041},64,[121,2043,2044],{"class":778},"# -c archive name\n",[121,2046,2048],{"class":123,"line":2047},65,[121,2049,2050],{"class":778},"# -R root place\n",[121,2052,2054],{"class":123,"line":2053},66,[121,2055,2056],{"class":778},"# -s slice size\n",[121,2058,2060],{"class":123,"line":2059},67,[121,2061,2062],{"class":778},"# -p slice pause\n",[121,2064,2066],{"class":123,"line":2065},68,[121,2067,2068],{"class":778},"# -D backup empty dir\n",[121,2070,2072],{"class":123,"line":2071},69,[121,2073,2074],{"class":778},"# -z9 compression gzip level 9\n",[121,2076,2078],{"class":123,"line":2077},70,[121,2079,2080],{"class":778},"# -m for minimal size\n",[121,2082,2084],{"class":123,"line":2083},71,[121,2085,2086],{"class":778},"# -Z exclude from compression\n",[121,2088,2090],{"class":123,"line":2089},72,[121,2091,2092],{"class":778},"# -P exclude file\n",[121,2094,2096],{"class":123,"line":2095},73,[121,2097,1233],{"emptyLinePlaceholder":1173},[121,2099,2101,2104,2107],{"class":123,"line":2100},74,[121,2102,2103],{"class":789},"function",[121,2105,2106],{"class":127}," start_backup",[121,2108,2109],{"class":381},"() {\n",[121,2111,2113,2116,2119,2122],{"class":123,"line":2112},75,[121,2114,2115],{"class":517},"        echo",[121,2117,2118],{"class":131}," \"Backup of ",[121,2120,2121],{"class":1243},"$BACKUP_SRC",[121,2123,2124],{"class":131}," in progress ...\"\n",[121,2126,2128],{"class":123,"line":2127},76,[121,2129,1233],{"emptyLinePlaceholder":1173},[121,2131,2133,2136,2139,2142,2144,2147,2149,2152,2155,2158,2161,2164,2167,2170,2172,2174,2176,2179],{"class":123,"line":2132},77,[121,2134,2135],{"class":1243},"        $BACKUP_BIN",[121,2137,2138],{"class":285}," -c",[121,2140,2141],{"class":381}," ${",[121,2143,1840],{"class":1243},[121,2145,2146],{"class":381},"}${",[121,2148,1977],{"class":1243},[121,2150,2151],{"class":381},"} ",[121,2153,2154],{"class":285},"-R",[121,2156,2157],{"class":1243}," $BACKUP_SRC",[121,2159,2160],{"class":1243}," $BACKUP_OPT",[121,2162,2163],{"class":1243}," $BACKUP_EXCLUDE_EXT",[121,2165,2166],{"class":1243}," $BACKUP_EXCLUDE_PATH",[121,2168,2169],{"class":381}," > ${",[121,2171,1840],{"class":1243},[121,2173,2146],{"class":381},[121,2175,1859],{"class":1243},[121,2177,2178],{"class":381},"}",[121,2180,2181],{"class":131},".log\n",[121,2183,2185],{"class":123,"line":2184},78,[121,2186,2187],{"class":381},"}\n",[121,2189,2191],{"class":123,"line":2190},79,[121,2192,1233],{"emptyLinePlaceholder":1173},[121,2194,2196,2198,2201],{"class":123,"line":2195},80,[121,2197,2103],{"class":789},[121,2199,2200],{"class":127}," load_backup_config",[121,2202,2109],{"class":381},[121,2204,2206,2208,2211],{"class":123,"line":2205},81,[121,2207,2115],{"class":517},[121,2209,2210],{"class":285}," -n",[121,2212,2213],{"class":131}," \"Load config file ... \"\n",[121,2215,2217],{"class":123,"line":2216},82,[121,2218,1233],{"emptyLinePlaceholder":1173},[121,2220,2222,2225,2227,2229,2231,2233,2235,2237,2240],{"class":123,"line":2221},83,[121,2223,2224],{"class":789},"        if",[121,2226,1633],{"class":381},[121,2228,1636],{"class":517},[121,2230,2141],{"class":381},[121,2232,1840],{"class":1243},[121,2234,2146],{"class":381},[121,2236,1859],{"class":1243},[121,2238,2239],{"class":381},"}.config ] ; ",[121,2241,1642],{"class":789},[121,2243,2245,2248,2250,2252,2254,2256,2258],{"class":123,"line":2244},84,[121,2246,2247],{"class":517},"                .",[121,2249,2141],{"class":381},[121,2251,1840],{"class":1243},[121,2253,2146],{"class":381},[121,2255,1859],{"class":1243},[121,2257,2178],{"class":381},[121,2259,2260],{"class":131},".config\n",[121,2262,2264,2267],{"class":123,"line":2263},85,[121,2265,2266],{"class":517},"                echo",[121,2268,2269],{"class":131}," \"loaded.\"\n",[121,2271,2273],{"class":123,"line":2272},86,[121,2274,2275],{"class":789},"        else\n",[121,2277,2279,2282,2284],{"class":123,"line":2278},87,[121,2280,2281],{"class":1243},"                COUNT_INCREMENTAL_BACKUP",[121,2283,1247],{"class":517},[121,2285,2286],{"class":1243},"$BACKUP_INCREMENTAL_MAX\n",[121,2288,2290,2292],{"class":123,"line":2289},88,[121,2291,2266],{"class":517},[121,2293,2294],{"class":131}," \"not found\"\n",[121,2296,2298],{"class":123,"line":2297},89,[121,2299,2300],{"class":789},"        fi\n",[121,2302,2304],{"class":123,"line":2303},90,[121,2305,2187],{"class":381},[121,2307,2309],{"class":123,"line":2308},91,[121,2310,1233],{"emptyLinePlaceholder":1173},[121,2312,2314,2316,2319],{"class":123,"line":2313},92,[121,2315,2103],{"class":789},[121,2317,2318],{"class":127}," save_backup_config",[121,2320,2109],{"class":381},[121,2322,2324,2326],{"class":123,"line":2323},93,[121,2325,2115],{"class":517},[121,2327,2328],{"class":131}," \"Save backup config file ...\"\n",[121,2330,2332],{"class":123,"line":2331},94,[121,2333,1233],{"emptyLinePlaceholder":1173},[121,2335,2337,2339,2342,2345,2347,2349,2351,2353,2355,2357],{"class":123,"line":2336},95,[121,2338,2115],{"class":517},[121,2340,2341],{"class":131}," \"COUNT_INCREMENTAL_BACKUP=",[121,2343,2344],{"class":1243},"$COUNT_INCREMENTAL_BACKUP",[121,2346,1740],{"class":131},[121,2348,2169],{"class":381},[121,2350,1840],{"class":1243},[121,2352,2146],{"class":381},[121,2354,1859],{"class":1243},[121,2356,2178],{"class":381},[121,2358,2260],{"class":131},[121,2360,2362,2364,2367,2370,2372,2375,2377,2379,2381,2383],{"class":123,"line":2361},96,[121,2363,2115],{"class":517},[121,2365,2366],{"class":131}," \"LAST_BACKUP=",[121,2368,2369],{"class":1243},"$DATE_BACKUP",[121,2371,1740],{"class":131},[121,2373,2374],{"class":381},"                          >> ${",[121,2376,1840],{"class":1243},[121,2378,2146],{"class":381},[121,2380,1859],{"class":1243},[121,2382,2178],{"class":381},[121,2384,2260],{"class":131},[121,2386,2388,2390,2393,2396,2398,2401,2403,2405,2407,2409],{"class":123,"line":2387},97,[121,2389,2115],{"class":517},[121,2391,2392],{"class":131}," \"LAST_COMPLETE_BACKUP=",[121,2394,2395],{"class":1243},"$LAST_COMPLETE_BACKUP",[121,2397,1740],{"class":131},[121,2399,2400],{"class":381},"        >> ${",[121,2402,1840],{"class":1243},[121,2404,2146],{"class":381},[121,2406,1859],{"class":1243},[121,2408,2178],{"class":381},[121,2410,2260],{"class":131},[121,2412,2414],{"class":123,"line":2413},98,[121,2415,2187],{"class":381},[121,2417,2419],{"class":123,"line":2418},99,[121,2420,1233],{"emptyLinePlaceholder":1173},[121,2422,2424,2426,2429],{"class":123,"line":2423},100,[121,2425,2103],{"class":789},[121,2427,2428],{"class":127}," define_incremental",[121,2430,2109],{"class":381},[121,2432,2434,2436,2439,2441,2444,2447],{"class":123,"line":2433},101,[121,2435,2115],{"class":517},[121,2437,2438],{"class":131}," \"There is ",[121,2440,2344],{"class":1243},[121,2442,2443],{"class":131}," on ",[121,2445,2446],{"class":1243},"$BACKUP_INCREMENTAL_MAX",[121,2448,1749],{"class":131},[121,2450,2452,2454,2456,2458,2461,2464,2467],{"class":123,"line":2451},102,[121,2453,2224],{"class":789},[121,2455,1633],{"class":381},[121,2457,2344],{"class":1243},[121,2459,2460],{"class":517}," -lt",[121,2462,2463],{"class":1243}," $BACKUP_INCREMENTAL_MAX",[121,2465,2466],{"class":381},"  ] ; ",[121,2468,1642],{"class":789},[121,2470,2472,2474,2477,2479],{"class":123,"line":2471},103,[121,2473,2266],{"class":517},[121,2475,2476],{"class":131}," \"Backup is incremental from ",[121,2478,2395],{"class":1243},[121,2480,1749],{"class":131},[121,2482,2484,2486,2488,2490,2493,2496,2499,2501],{"class":123,"line":2483},104,[121,2485,2281],{"class":1243},[121,2487,1247],{"class":517},[121,2489,1822],{"class":131},[121,2491,2492],{"class":127},"expr",[121,2494,2495],{"class":1243}," $COUNT_INCREMENTAL_BACKUP",[121,2497,2498],{"class":131}," + ",[121,2500,34],{"class":285},[121,2502,1834],{"class":131},[121,2504,2506,2509,2511,2514,2516,2518,2520,2522,2525,2528,2530],{"class":123,"line":2505},105,[121,2507,2508],{"class":1243},"                BACKUP_OPT",[121,2510,1247],{"class":517},[121,2512,2513],{"class":131},"\"-A ${",[121,2515,1840],{"class":1243},[121,2517,2146],{"class":131},[121,2519,1859],{"class":1243},[121,2521,1987],{"class":131},[121,2523,2524],{"class":1243},"LAST_COMPLETE_BACKUP",[121,2526,2527],{"class":131},"} ${",[121,2529,1244],{"class":1243},[121,2531,1992],{"class":131},[121,2533,2535],{"class":123,"line":2534},106,[121,2536,2275],{"class":789},[121,2538,2540,2542],{"class":123,"line":2539},107,[121,2541,2266],{"class":517},[121,2543,2544],{"class":131}," \"Backup is complete\"\n",[121,2546,2548,2550,2552],{"class":123,"line":2547},108,[121,2549,2281],{"class":1243},[121,2551,1247],{"class":517},[121,2553,2554],{"class":131},"1\n",[121,2556,2558,2561,2563],{"class":123,"line":2557},109,[121,2559,2560],{"class":1243},"                LAST_COMPLETE_BACKUP",[121,2562,1247],{"class":517},[121,2564,2565],{"class":1243},"$DATE_BACKUP\n",[121,2567,2569],{"class":123,"line":2568},110,[121,2570,2300],{"class":789},[121,2572,2574],{"class":123,"line":2573},111,[121,2575,2187],{"class":381},[121,2577,2579],{"class":123,"line":2578},112,[121,2580,1233],{"emptyLinePlaceholder":1173},[121,2582,2584,2587],{"class":123,"line":2583},113,[121,2585,2586],{"class":127},"load_backup_config",[121,2588,2589],{"class":381},";\n",[121,2591,2593,2596],{"class":123,"line":2592},114,[121,2594,2595],{"class":127},"define_incremental",[121,2597,2589],{"class":381},[121,2599,2601,2604],{"class":123,"line":2600},115,[121,2602,2603],{"class":127},"start_backup",[121,2605,2589],{"class":381},[121,2607,2609,2612],{"class":123,"line":2608},116,[121,2610,2611],{"class":127},"save_backup_config",[121,2613,2589],{"class":381},[96,2615,2617],{"id":2616},"copie-automatique","Copie automatique",[113,2619,2621],{"className":115,"code":2620,"language":117,"meta":32,"style":32},"#!\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",[50,2622,2623,2627,2631,2635,2639,2643,2647,2651,2655,2659,2663,2667,2671,2675,2679,2683,2687,2691,2695,2699,2703,2707,2711,2723,2729,2733,2739,2745,2749,2753,2769,2775,2781,2785,2789,2793,2807,2821,2835,2849,2853,2857,2873,2889,2905,2921,2925,2943,2949,2955,2959,2963,2967,2971,2975,2979,2983,2991,2999,3003,3023,3039,3043,3061,3067,3071,3077,3085,3089,3093,3097,3106,3131,3135,3160,3164,3182,3189,3193,3213,3230,3250,3255,3276,3280,3296,3303,3308,3315,3319,3323,3327,3331,3340,3355,3359,3374,3383,3428,3446,3477,3487,3491,3499,3503,3520,3528,3533,3537,3561,3601,3618,3644,3652,3657,3677,3682,3688,3693,3700,3705,3712,3717,3736,3744,3749,3754,3759,3767,3772,3777,3782,3792,3804,3809,3827,3848,3867,3872,3890,3902,3911,3930,3941,3946,3961,3972,3977,3992,4003,4008,4016,4022,4027,4035,4054,4065,4070,4085,4096,4101,4116,4127,4132,4140,4145,4151,4157,4162,4167],{"__ignoreMap":32},[121,2624,2625],{"class":123,"line":124},[121,2626,1520],{"class":778},[121,2628,2629],{"class":123,"line":135},[121,2630,1233],{"emptyLinePlaceholder":1173},[121,2632,2633],{"class":123,"line":143},[121,2634,1529],{"class":778},[121,2636,2637],{"class":123,"line":151},[121,2638,1534],{"class":778},[121,2640,2641],{"class":123,"line":326},[121,2642,1539],{"class":778},[121,2644,2645],{"class":123,"line":335},[121,2646,1544],{"class":778},[121,2648,2649],{"class":123,"line":343},[121,2650,1549],{"class":778},[121,2652,2653],{"class":123,"line":352},[121,2654,1554],{"class":778},[121,2656,2657],{"class":123,"line":484},[121,2658,1559],{"class":778},[121,2660,2661],{"class":123,"line":504},[121,2662,1564],{"class":778},[121,2664,2665],{"class":123,"line":514},[121,2666,1544],{"class":778},[121,2668,2669],{"class":123,"line":521},[121,2670,1578],{"class":778},[121,2672,2673],{"class":123,"line":532},[121,2674,1583],{"class":778},[121,2676,2677],{"class":123,"line":542},[121,2678,1588],{"class":778},[121,2680,2681],{"class":123,"line":552},[121,2682,1593],{"class":778},[121,2684,2685],{"class":123,"line":562},[121,2686,1544],{"class":778},[121,2688,2689],{"class":123,"line":572},[121,2690,1602],{"class":778},[121,2692,2693],{"class":123,"line":1350},[121,2694,1607],{"class":778},[121,2696,2697],{"class":123,"line":1361},[121,2698,1612],{"class":778},[121,2700,2701],{"class":123,"line":1372},[121,2702,1617],{"class":778},[121,2704,2705],{"class":123,"line":1383},[121,2706,1529],{"class":778},[121,2708,2709],{"class":123,"line":1389},[121,2710,1233],{"emptyLinePlaceholder":1173},[121,2712,2713,2715,2717,2719,2721],{"class":123,"line":1400},[121,2714,1630],{"class":789},[121,2716,1633],{"class":381},[121,2718,1636],{"class":517},[121,2720,1639],{"class":381},[121,2722,1642],{"class":789},[121,2724,2725,2727],{"class":123,"line":1405},[121,2726,1647],{"class":517},[121,2728,1650],{"class":131},[121,2730,2731],{"class":123,"line":1411},[121,2732,1655],{"class":789},[121,2734,2735,2737],{"class":123,"line":1422},[121,2736,1660],{"class":517},[121,2738,1663],{"class":131},[121,2740,2741,2743],{"class":123,"line":1433},[121,2742,1668],{"class":517},[121,2744,1671],{"class":285},[121,2746,2747],{"class":123,"line":1444},[121,2748,1676],{"class":789},[121,2750,2751],{"class":123,"line":1455},[121,2752,1233],{"emptyLinePlaceholder":1173},[121,2754,2755,2757,2759,2761,2763,2765,2767],{"class":123,"line":1460},[121,2756,1630],{"class":789},[121,2758,1633],{"class":381},[121,2760,1689],{"class":917},[121,2762,1692],{"class":517},[121,2764,1695],{"class":285},[121,2766,1698],{"class":381},[121,2768,1642],{"class":789},[121,2770,2771,2773],{"class":123,"line":1466},[121,2772,1660],{"class":517},[121,2774,1707],{"class":131},[121,2776,2777,2779],{"class":123,"line":1477},[121,2778,1668],{"class":517},[121,2780,1714],{"class":285},[121,2782,2783],{"class":123,"line":1488},[121,2784,1676],{"class":789},[121,2786,2787],{"class":123,"line":1499},[121,2788,1233],{"emptyLinePlaceholder":1173},[121,2790,2791],{"class":123,"line":1721},[121,2792,1729],{"class":778},[121,2794,2795,2797,2799,2801,2803,2805],{"class":123,"line":1726},[121,2796,1735],{"class":1243},[121,2798,1247],{"class":517},[121,2800,1740],{"class":131},[121,2802,1743],{"class":517},[121,2804,1746],{"class":1243},[121,2806,1749],{"class":131},[121,2808,2809,2811,2813,2815,2817,2819],{"class":123,"line":1732},[121,2810,1755],{"class":1243},[121,2812,1247],{"class":517},[121,2814,1740],{"class":131},[121,2816,1743],{"class":517},[121,2818,1764],{"class":1243},[121,2820,1749],{"class":131},[121,2822,2823,2825,2827,2829,2831,2833],{"class":123,"line":1752},[121,2824,1772],{"class":1243},[121,2826,1247],{"class":517},[121,2828,1740],{"class":131},[121,2830,1743],{"class":517},[121,2832,1781],{"class":1243},[121,2834,1749],{"class":131},[121,2836,2837,2839,2841,2843,2845,2847],{"class":123,"line":1769},[121,2838,1789],{"class":1243},[121,2840,1247],{"class":517},[121,2842,1740],{"class":131},[121,2844,1743],{"class":517},[121,2846,1798],{"class":1243},[121,2848,1749],{"class":131},[121,2850,2851],{"class":123,"line":1786},[121,2852,1233],{"emptyLinePlaceholder":1173},[121,2854,2855],{"class":123,"line":1803},[121,2856,1811],{"class":778},[121,2858,2859,2861,2863,2865,2867,2869,2871],{"class":123,"line":1808},[121,2860,1817],{"class":1243},[121,2862,1247],{"class":517},[121,2864,1822],{"class":131},[121,2866,1825],{"class":517},[121,2868,1828],{"class":131},[121,2870,1831],{"class":1243},[121,2872,1834],{"class":131},[121,2874,2875,2877,2879,2881,2883,2885,2887],{"class":123,"line":1814},[121,2876,1840],{"class":1243},[121,2878,1247],{"class":517},[121,2880,1822],{"class":131},[121,2882,1825],{"class":517},[121,2884,1828],{"class":131},[121,2886,1851],{"class":1243},[121,2888,1834],{"class":131},[121,2890,2891,2893,2895,2897,2899,2901,2903],{"class":123,"line":1837},[121,2892,1859],{"class":1243},[121,2894,1247],{"class":517},[121,2896,1822],{"class":131},[121,2898,1825],{"class":517},[121,2900,1828],{"class":131},[121,2902,1870],{"class":1243},[121,2904,1834],{"class":131},[121,2906,2907,2909,2911,2913,2915,2917,2919],{"class":123,"line":1856},[121,2908,1878],{"class":1243},[121,2910,1247],{"class":517},[121,2912,1822],{"class":131},[121,2914,1825],{"class":517},[121,2916,1828],{"class":131},[121,2918,1889],{"class":1243},[121,2920,1834],{"class":131},[121,2922,2923],{"class":123,"line":1875},[121,2924,1233],{"emptyLinePlaceholder":1173},[121,2926,2927,2929,2931,2933,2935,2937,2939,2941],{"class":123,"line":1894},[121,2928,1630],{"class":789},[121,2930,1633],{"class":381},[121,2932,1906],{"class":517},[121,2934,1909],{"class":131},[121,2936,1912],{"class":1243},[121,2938,1740],{"class":131},[121,2940,1698],{"class":381},[121,2942,1642],{"class":789},[121,2944,2945,2947],{"class":123,"line":1899},[121,2946,1660],{"class":517},[121,2948,1926],{"class":131},[121,2950,2951,2953],{"class":123,"line":1921},[121,2952,1668],{"class":517},[121,2954,1934],{"class":285},[121,2956,2957],{"class":123,"line":1929},[121,2958,1676],{"class":789},[121,2960,2961],{"class":123,"line":1937},[121,2962,1233],{"emptyLinePlaceholder":1173},[121,2964,2965],{"class":123,"line":1942},[121,2966,2003],{"class":778},[121,2968,2969],{"class":123,"line":1947},[121,2970,2009],{"class":778},[121,2972,2973],{"class":123,"line":1958},[121,2974,2015],{"class":778},[121,2976,2977],{"class":123,"line":1974},[121,2978,2021],{"class":778},[121,2980,2981],{"class":123,"line":1995},[121,2982,1233],{"emptyLinePlaceholder":1173},[121,2984,2985,2987,2989],{"class":123,"line":2000},[121,2986,2103],{"class":789},[121,2988,2200],{"class":127},[121,2990,2109],{"class":381},[121,2992,2993,2995,2997],{"class":123,"line":2006},[121,2994,2115],{"class":517},[121,2996,2210],{"class":285},[121,2998,2213],{"class":131},[121,3000,3001],{"class":123,"line":2012},[121,3002,1233],{"emptyLinePlaceholder":1173},[121,3004,3005,3007,3009,3011,3013,3015,3017,3019,3021],{"class":123,"line":2018},[121,3006,2224],{"class":789},[121,3008,1633],{"class":381},[121,3010,1636],{"class":517},[121,3012,2141],{"class":381},[121,3014,1840],{"class":1243},[121,3016,2146],{"class":381},[121,3018,1859],{"class":1243},[121,3020,2239],{"class":381},[121,3022,1642],{"class":789},[121,3024,3025,3027,3029,3031,3033,3035,3037],{"class":123,"line":2024},[121,3026,2247],{"class":517},[121,3028,2141],{"class":381},[121,3030,1840],{"class":1243},[121,3032,2146],{"class":381},[121,3034,1859],{"class":1243},[121,3036,2178],{"class":381},[121,3038,2260],{"class":131},[121,3040,3041],{"class":123,"line":2029},[121,3042,1233],{"emptyLinePlaceholder":1173},[121,3044,3045,3048,3050,3052,3054,3056,3059],{"class":123,"line":2035},[121,3046,3047],{"class":1243},"                BACKUP_ARCHIVE",[121,3049,1247],{"class":517},[121,3051,1982],{"class":131},[121,3053,1859],{"class":1243},[121,3055,1987],{"class":131},[121,3057,3058],{"class":1243},"LAST_BACKUP",[121,3060,1992],{"class":131},[121,3062,3063,3065],{"class":123,"line":2041},[121,3064,2266],{"class":517},[121,3066,2269],{"class":131},[121,3068,3069],{"class":123,"line":2047},[121,3070,2275],{"class":789},[121,3072,3073,3075],{"class":123,"line":2053},[121,3074,2266],{"class":517},[121,3076,2294],{"class":131},[121,3078,3079,3082],{"class":123,"line":2059},[121,3080,3081],{"class":517},"                exit",[121,3083,3084],{"class":285}," 4\n",[121,3086,3087],{"class":123,"line":2065},[121,3088,2300],{"class":789},[121,3090,3091],{"class":123,"line":2071},[121,3092,2187],{"class":381},[121,3094,3095],{"class":123,"line":2077},[121,3096,1233],{"emptyLinePlaceholder":1173},[121,3098,3099,3101,3104],{"class":123,"line":2083},[121,3100,2103],{"class":789},[121,3102,3103],{"class":127}," save_by_network",[121,3105,2109],{"class":381},[121,3107,3108,3110,3112,3115,3118,3121,3124,3126,3129],{"class":123,"line":2089},[121,3109,2115],{"class":517},[121,3111,2210],{"class":285},[121,3113,3114],{"class":131}," \"Save on computer ",[121,3116,3117],{"class":1243},"$HOST",[121,3119,3120],{"class":131}," as ",[121,3122,3123],{"class":1243},"$USER",[121,3125,2443],{"class":131},[121,3127,3128],{"class":1243},"$DIR",[121,3130,1749],{"class":131},[121,3132,3133],{"class":123,"line":2095},[121,3134,1233],{"emptyLinePlaceholder":1173},[121,3136,3137,3140,3142,3145,3148,3151,3154,3157],{"class":123,"line":2100},[121,3138,3139],{"class":127},"        ping",[121,3141,2138],{"class":285},[121,3143,3144],{"class":285}," 3",[121,3146,3147],{"class":285}," -W",[121,3149,3150],{"class":285}," 10",[121,3152,3153],{"class":1243}," $HOST",[121,3155,3156],{"class":381}," > ",[121,3158,3159],{"class":131},"\u002Fdev\u002Fnull\n",[121,3161,3162],{"class":123,"line":2112},[121,3163,1233],{"emptyLinePlaceholder":1173},[121,3165,3166,3168,3170,3173,3175,3178,3180],{"class":123,"line":2127},[121,3167,2224],{"class":789},[121,3169,1633],{"class":381},[121,3171,3172],{"class":917},"$?",[121,3174,1692],{"class":517},[121,3176,3177],{"class":285}," 0",[121,3179,1698],{"class":381},[121,3181,1642],{"class":789},[121,3183,3184,3186],{"class":123,"line":2132},[121,3185,2266],{"class":517},[121,3187,3188],{"class":131}," \"failed\"\n",[121,3190,3191],{"class":123,"line":2184},[121,3192,2275],{"class":789},[121,3194,3195,3198,3200,3202,3205,3208,3211],{"class":123,"line":2190},[121,3196,3197],{"class":1243},"                DESTINATION",[121,3199,1247],{"class":517},[121,3201,1982],{"class":131},[121,3203,3204],{"class":1243},"HOST",[121,3206,3207],{"class":131},"}:${",[121,3209,3210],{"class":1243},"DIR",[121,3212,1992],{"class":131},[121,3214,3215,3218,3220,3223,3226,3228],{"class":123,"line":2195},[121,3216,3217],{"class":789},"                if",[121,3219,1633],{"class":381},[121,3221,3222],{"class":517},"-n",[121,3224,3225],{"class":1243}," $USER",[121,3227,1698],{"class":381},[121,3229,1642],{"class":789},[121,3231,3232,3235,3237,3239,3242,3245,3248],{"class":123,"line":2205},[121,3233,3234],{"class":1243},"                        DESTINATION",[121,3236,1247],{"class":517},[121,3238,1982],{"class":131},[121,3240,3241],{"class":1243},"USER",[121,3243,3244],{"class":131},"}@${",[121,3246,3247],{"class":1243},"DESTINATION",[121,3249,1992],{"class":131},[121,3251,3252],{"class":123,"line":2216},[121,3253,3254],{"class":789},"                fi\n",[121,3256,3257,3260,3262,3264,3266,3268,3270,3273],{"class":123,"line":2221},[121,3258,3259],{"class":127},"                scp",[121,3261,2141],{"class":381},[121,3263,1840],{"class":1243},[121,3265,2146],{"class":381},[121,3267,1977],{"class":1243},[121,3269,2178],{"class":381},[121,3271,3272],{"class":917},"*",[121,3274,3275],{"class":1243}," $DESTINATION\n",[121,3277,3278],{"class":123,"line":2244},[121,3279,1233],{"emptyLinePlaceholder":1173},[121,3281,3282,3284,3286,3288,3290,3292,3294],{"class":123,"line":2263},[121,3283,3217],{"class":789},[121,3285,1633],{"class":381},[121,3287,3172],{"class":917},[121,3289,1692],{"class":517},[121,3291,3177],{"class":285},[121,3293,1698],{"class":381},[121,3295,1642],{"class":789},[121,3297,3298,3301],{"class":123,"line":2272},[121,3299,3300],{"class":517},"                        echo",[121,3302,3188],{"class":131},[121,3304,3305],{"class":123,"line":2278},[121,3306,3307],{"class":789},"                else\n",[121,3309,3310,3312],{"class":123,"line":2289},[121,3311,3300],{"class":517},[121,3313,3314],{"class":131}," \"ok\"\n",[121,3316,3317],{"class":123,"line":2297},[121,3318,3254],{"class":789},[121,3320,3321],{"class":123,"line":2303},[121,3322,2300],{"class":789},[121,3324,3325],{"class":123,"line":2308},[121,3326,2187],{"class":381},[121,3328,3329],{"class":123,"line":2313},[121,3330,1233],{"emptyLinePlaceholder":1173},[121,3332,3333,3335,3338],{"class":123,"line":2323},[121,3334,2103],{"class":789},[121,3336,3337],{"class":127}," save_by_usb",[121,3339,2109],{"class":381},[121,3341,3342,3344,3346,3349,3352],{"class":123,"line":2331},[121,3343,2115],{"class":517},[121,3345,2210],{"class":285},[121,3347,3348],{"class":131}," \"Save on drive ",[121,3350,3351],{"class":1243},"$DEV",[121,3353,3354],{"class":131}," \"\n",[121,3356,3357],{"class":123,"line":2336},[121,3358,1233],{"emptyLinePlaceholder":1173},[121,3360,3361,3363,3365,3367,3370,3372],{"class":123,"line":2361},[121,3362,2224],{"class":789},[121,3364,1633],{"class":381},[121,3366,1636],{"class":517},[121,3368,3369],{"class":1243}," $DEV",[121,3371,1698],{"class":381},[121,3373,1642],{"class":789},[121,3375,3376,3379,3381],{"class":123,"line":2387},[121,3377,3378],{"class":1243},"                TOUMOUNT",[121,3380,1247],{"class":517},[121,3382,2554],{"class":131},[121,3384,3385,3388,3390,3392,3394,3397,3400,3402,3404,3407,3409,3411,3414,3417,3419,3422,3425],{"class":123,"line":2413},[121,3386,3387],{"class":1243},"                LINECOUNT",[121,3389,1247],{"class":517},[121,3391,1822],{"class":131},[121,3393,318],{"class":127},[121,3395,3396],{"class":381}," |",[121,3398,3399],{"class":127}," grep",[121,3401,3369],{"class":1243},[121,3403,3396],{"class":381},[121,3405,3406],{"class":127}," cut",[121,3408,911],{"class":285},[121,3410,1695],{"class":285},[121,3412,3413],{"class":285}," -d",[121,3415,3416],{"class":517},"\\ ",[121,3418,3396],{"class":381},[121,3420,3421],{"class":127}," wc",[121,3423,3424],{"class":285}," -l",[121,3426,3427],{"class":131}," `\n",[121,3429,3430,3432,3434,3437,3440,3442,3444],{"class":123,"line":2418},[121,3431,3217],{"class":789},[121,3433,1633],{"class":381},[121,3435,3436],{"class":1243},"$LINECOUNT",[121,3438,3439],{"class":517}," -gt",[121,3441,3177],{"class":285},[121,3443,1698],{"class":381},[121,3445,1642],{"class":789},[121,3447,3448,3451,3453,3455,3457,3459,3461,3463,3465,3467,3469,3471,3473,3475],{"class":123,"line":2423},[121,3449,3450],{"class":1243},"                        MOUNTPOINT",[121,3452,1247],{"class":517},[121,3454,1822],{"class":131},[121,3456,318],{"class":127},[121,3458,3396],{"class":381},[121,3460,3399],{"class":127},[121,3462,3369],{"class":1243},[121,3464,3396],{"class":381},[121,3466,3406],{"class":127},[121,3468,911],{"class":285},[121,3470,3144],{"class":285},[121,3472,3413],{"class":285},[121,3474,3416],{"class":517},[121,3476,1834],{"class":131},[121,3478,3479,3482,3484],{"class":123,"line":2433},[121,3480,3481],{"class":1243},"                        TOUMOUNT",[121,3483,1247],{"class":517},[121,3485,3486],{"class":131},"0\n",[121,3488,3489],{"class":123,"line":2451},[121,3490,3307],{"class":789},[121,3492,3493,3496],{"class":123,"line":2471},[121,3494,3495],{"class":127},"                        mount",[121,3497,3498],{"class":1243}," $MOUNTPOINT\n",[121,3500,3501],{"class":123,"line":2483},[121,3502,1233],{"emptyLinePlaceholder":1173},[121,3504,3505,3508,3510,3512,3514,3516,3518],{"class":123,"line":2505},[121,3506,3507],{"class":789},"                        if",[121,3509,1633],{"class":381},[121,3511,3172],{"class":917},[121,3513,1692],{"class":517},[121,3515,3177],{"class":285},[121,3517,1698],{"class":381},[121,3519,1642],{"class":789},[121,3521,3522,3525],{"class":123,"line":2534},[121,3523,3524],{"class":517},"                                echo",[121,3526,3527],{"class":131}," \"mount failed \"\n",[121,3529,3530],{"class":123,"line":2539},[121,3531,3532],{"class":789},"                        fi\n",[121,3534,3535],{"class":123,"line":2547},[121,3536,3254],{"class":789},[121,3538,3539,3541,3543,3546,3548,3551,3553,3556,3559],{"class":123,"line":2557},[121,3540,3217],{"class":789},[121,3542,1633],{"class":381},[121,3544,3545],{"class":517},"-d",[121,3547,2141],{"class":381},[121,3549,3550],{"class":1243},"MOUNTPOINT",[121,3552,2146],{"class":381},[121,3554,3555],{"class":1243},"PATHNAME",[121,3557,3558],{"class":381},"} ] ; ",[121,3560,1642],{"class":789},[121,3562,3563,3566,3569,3572,3575,3578,3581,3583,3585,3587,3589,3591,3593,3595,3598],{"class":123,"line":2568},[121,3564,3565],{"class":789},"                        for",[121,3567,3568],{"class":1243}," FILE",[121,3570,3571],{"class":789}," in",[121,3573,3574],{"class":131}," `",[121,3576,3577],{"class":127},"ls",[121,3579,3580],{"class":285}," -1",[121,3582,2141],{"class":131},[121,3584,1840],{"class":1243},[121,3586,2146],{"class":131},[121,3588,1977],{"class":1243},[121,3590,2178],{"class":131},[121,3592,3272],{"class":917},[121,3594,1822],{"class":131},[121,3596,3597],{"class":381}," ; ",[121,3599,3600],{"class":789},"do\n",[121,3602,3603,3606,3608,3610,3613,3616],{"class":123,"line":2573},[121,3604,3605],{"class":1243},"                                FILENAME",[121,3607,1247],{"class":517},[121,3609,1822],{"class":131},[121,3611,3612],{"class":127},"basename",[121,3614,3615],{"class":1243}," $FILE",[121,3617,1834],{"class":131},[121,3619,3620,3623,3625,3627,3629,3631,3633,3635,3637,3640,3642],{"class":123,"line":2578},[121,3621,3622],{"class":789},"                                if",[121,3624,1633],{"class":381},[121,3626,1636],{"class":517},[121,3628,2141],{"class":381},[121,3630,3550],{"class":1243},[121,3632,2146],{"class":381},[121,3634,3555],{"class":1243},[121,3636,2146],{"class":381},[121,3638,3639],{"class":1243},"FILENAME",[121,3641,3558],{"class":381},[121,3643,1642],{"class":789},[121,3645,3646,3649],{"class":123,"line":2583},[121,3647,3648],{"class":517},"                                        echo",[121,3650,3651],{"class":131}," \"exist \"\n",[121,3653,3654],{"class":123,"line":2592},[121,3655,3656],{"class":789},"                                else\n",[121,3658,3659,3662,3664,3667,3669,3671,3673,3675],{"class":123,"line":2600},[121,3660,3661],{"class":127},"                                        cp",[121,3663,2141],{"class":381},[121,3665,3666],{"class":1243},"FILE",[121,3668,2527],{"class":381},[121,3670,3550],{"class":1243},[121,3672,2146],{"class":381},[121,3674,3555],{"class":1243},[121,3676,2187],{"class":381},[121,3678,3679],{"class":123,"line":2608},[121,3680,3681],{"class":789},"                                fi\n",[121,3683,3685],{"class":123,"line":3684},117,[121,3686,3687],{"class":789},"                        done\n",[121,3689,3691],{"class":123,"line":3690},118,[121,3692,1233],{"emptyLinePlaceholder":1173},[121,3694,3696,3698],{"class":123,"line":3695},119,[121,3697,3300],{"class":517},[121,3699,3314],{"class":131},[121,3701,3703],{"class":123,"line":3702},120,[121,3704,3307],{"class":789},[121,3706,3708,3710],{"class":123,"line":3707},121,[121,3709,3300],{"class":517},[121,3711,3188],{"class":131},[121,3713,3715],{"class":123,"line":3714},122,[121,3716,3254],{"class":789},[121,3718,3720,3722,3724,3727,3730,3732,3734],{"class":123,"line":3719},123,[121,3721,3217],{"class":789},[121,3723,1633],{"class":381},[121,3725,3726],{"class":1243},"$TOUMOUNT",[121,3728,3729],{"class":517}," -eq",[121,3731,1695],{"class":285},[121,3733,1698],{"class":381},[121,3735,1642],{"class":789},[121,3737,3739,3742],{"class":123,"line":3738},124,[121,3740,3741],{"class":127},"                        umount",[121,3743,3498],{"class":1243},[121,3745,3747],{"class":123,"line":3746},125,[121,3748,3254],{"class":789},[121,3750,3752],{"class":123,"line":3751},126,[121,3753,1233],{"emptyLinePlaceholder":1173},[121,3755,3757],{"class":123,"line":3756},127,[121,3758,2275],{"class":789},[121,3760,3762,3764],{"class":123,"line":3761},128,[121,3763,2266],{"class":517},[121,3765,3766],{"class":131}," \"device not found\"\n",[121,3768,3770],{"class":123,"line":3769},129,[121,3771,2300],{"class":789},[121,3773,3775],{"class":123,"line":3774},130,[121,3776,2187],{"class":381},[121,3778,3780],{"class":123,"line":3779},131,[121,3781,1233],{"emptyLinePlaceholder":1173},[121,3783,3785,3787,3790],{"class":123,"line":3784},132,[121,3786,2103],{"class":789},[121,3788,3789],{"class":127}," copy_to",[121,3791,2109],{"class":381},[121,3793,3795,3797,3800,3802],{"class":123,"line":3794},133,[121,3796,2115],{"class":517},[121,3798,3799],{"class":131}," \"Start make copy of backup ",[121,3801,1912],{"class":1243},[121,3803,1749],{"class":131},[121,3805,3807],{"class":123,"line":3806},134,[121,3808,1233],{"emptyLinePlaceholder":1173},[121,3810,3812,3815,3818,3820,3823,3825],{"class":123,"line":3811},135,[121,3813,3814],{"class":789},"        for",[121,3816,3817],{"class":1243}," NAME",[121,3819,3571],{"class":789},[121,3821,3822],{"class":1243}," $COPYTO",[121,3824,3597],{"class":381},[121,3826,3600],{"class":789},[121,3828,3830,3833,3835,3837,3839,3842,3845],{"class":123,"line":3829},136,[121,3831,3832],{"class":1243},"                var_type",[121,3834,1247],{"class":517},[121,3836,1740],{"class":131},[121,3838,1743],{"class":517},[121,3840,3841],{"class":131},"${",[121,3843,3844],{"class":1243},"NAME",[121,3846,3847],{"class":131},"}_type\"\n",[121,3849,3851,3854,3856,3858,3860,3862,3865],{"class":123,"line":3850},137,[121,3852,3853],{"class":1243},"                TYPE",[121,3855,1247],{"class":517},[121,3857,1822],{"class":131},[121,3859,1825],{"class":517},[121,3861,1828],{"class":131},[121,3863,3864],{"class":1243},"$var_type",[121,3866,1834],{"class":131},[121,3868,3870],{"class":123,"line":3869},138,[121,3871,1233],{"emptyLinePlaceholder":1173},[121,3873,3875,3877,3880,3883,3885,3888],{"class":123,"line":3874},139,[121,3876,2266],{"class":517},[121,3878,3879],{"class":131}," \"--> ",[121,3881,3882],{"class":1243},"$NAME",[121,3884,3120],{"class":131},[121,3886,3887],{"class":1243},"$TYPE",[121,3889,1749],{"class":131},[121,3891,3893,3896,3899],{"class":123,"line":3892},140,[121,3894,3895],{"class":789},"                case",[121,3897,3898],{"class":1243}," $TYPE",[121,3900,3901],{"class":789}," in\n",[121,3903,3905,3908],{"class":123,"line":3904},141,[121,3906,3907],{"class":131},"                        \"usb\"",[121,3909,3910],{"class":381},")\n",[121,3912,3914,3917,3919,3921,3923,3925,3927],{"class":123,"line":3913},142,[121,3915,3916],{"class":1243},"                                var_dev",[121,3918,1247],{"class":517},[121,3920,1740],{"class":131},[121,3922,1743],{"class":517},[121,3924,3841],{"class":131},[121,3926,3844],{"class":1243},[121,3928,3929],{"class":131},"}_dev\"\n",[121,3931,3933,3936,3938],{"class":123,"line":3932},143,[121,3934,3935],{"class":1243},"                                DEV",[121,3937,1247],{"class":517},[121,3939,3940],{"class":381},"`eval echo $var_dev`\n",[121,3942,3944],{"class":123,"line":3943},144,[121,3945,1233],{"emptyLinePlaceholder":1173},[121,3947,3949,3952,3954,3956,3958],{"class":123,"line":3948},145,[121,3950,3951],{"class":131},"                                var_mountpoint=\"",[121,3953,1743],{"class":517},[121,3955,3841],{"class":131},[121,3957,3844],{"class":1243},[121,3959,3960],{"class":131},"}_mountpoint\"\n",[121,3962,3964,3967,3969],{"class":123,"line":3963},146,[121,3965,3966],{"class":1243},"                                MOUNTPOINT",[121,3968,1247],{"class":517},[121,3970,3971],{"class":381},"`eval echo $var_mountpoint`\n",[121,3973,3975],{"class":123,"line":3974},147,[121,3976,1233],{"emptyLinePlaceholder":1173},[121,3978,3980,3983,3985,3987,3989],{"class":123,"line":3979},148,[121,3981,3982],{"class":131},"                                var_pathname=\"",[121,3984,1743],{"class":517},[121,3986,3841],{"class":131},[121,3988,3844],{"class":1243},[121,3990,3991],{"class":131},"}_pathname\"\n",[121,3993,3995,3998,4000],{"class":123,"line":3994},149,[121,3996,3997],{"class":1243},"                                PATHNAME",[121,3999,1247],{"class":517},[121,4001,4002],{"class":381},"`eval echo $var_pathname`\n",[121,4004,4006],{"class":123,"line":4005},150,[121,4007,1233],{"emptyLinePlaceholder":1173},[121,4009,4011,4014],{"class":123,"line":4010},151,[121,4012,4013],{"class":131},"                                save_by_usb",[121,4015,2589],{"class":381},[121,4017,4019],{"class":123,"line":4018},152,[121,4020,4021],{"class":381},"                        ;;\n",[121,4023,4025],{"class":123,"line":4024},153,[121,4026,1233],{"emptyLinePlaceholder":1173},[121,4028,4030,4033],{"class":123,"line":4029},154,[121,4031,4032],{"class":131},"                        \"net\"",[121,4034,3910],{"class":381},[121,4036,4038,4041,4043,4045,4047,4049,4051],{"class":123,"line":4037},155,[121,4039,4040],{"class":1243},"                                var_host",[121,4042,1247],{"class":517},[121,4044,1740],{"class":131},[121,4046,1743],{"class":517},[121,4048,3841],{"class":131},[121,4050,3844],{"class":1243},[121,4052,4053],{"class":131},"}_host\"\n",[121,4055,4057,4060,4062],{"class":123,"line":4056},156,[121,4058,4059],{"class":1243},"                                HOST",[121,4061,1247],{"class":517},[121,4063,4064],{"class":381},"`eval echo $var_host`\n",[121,4066,4068],{"class":123,"line":4067},157,[121,4069,1233],{"emptyLinePlaceholder":1173},[121,4071,4073,4076,4078,4080,4082],{"class":123,"line":4072},158,[121,4074,4075],{"class":131},"                                var_user=\"",[121,4077,1743],{"class":517},[121,4079,3841],{"class":131},[121,4081,3844],{"class":1243},[121,4083,4084],{"class":131},"}_user\"\n",[121,4086,4088,4091,4093],{"class":123,"line":4087},159,[121,4089,4090],{"class":1243},"                                USER",[121,4092,1247],{"class":517},[121,4094,4095],{"class":381},"`eval echo $var_user`\n",[121,4097,4099],{"class":123,"line":4098},160,[121,4100,1233],{"emptyLinePlaceholder":1173},[121,4102,4104,4107,4109,4111,4113],{"class":123,"line":4103},161,[121,4105,4106],{"class":131},"                                var_dir=\"",[121,4108,1743],{"class":517},[121,4110,3841],{"class":131},[121,4112,3844],{"class":1243},[121,4114,4115],{"class":131},"}_dir\"\n",[121,4117,4119,4122,4124],{"class":123,"line":4118},162,[121,4120,4121],{"class":1243},"                                DIR",[121,4123,1247],{"class":517},[121,4125,4126],{"class":381},"`eval echo $var_dir`\n",[121,4128,4130],{"class":123,"line":4129},163,[121,4131,1233],{"emptyLinePlaceholder":1173},[121,4133,4135,4138],{"class":123,"line":4134},164,[121,4136,4137],{"class":131},"                                save_by_network",[121,4139,2589],{"class":381},[121,4141,4143],{"class":123,"line":4142},165,[121,4144,4021],{"class":381},[121,4146,4148],{"class":123,"line":4147},166,[121,4149,4150],{"class":789},"                esac\n",[121,4152,4154],{"class":123,"line":4153},167,[121,4155,4156],{"class":789},"        done\n",[121,4158,4160],{"class":123,"line":4159},168,[121,4161,2187],{"class":381},[121,4163,4165],{"class":123,"line":4164},169,[121,4166,1233],{"emptyLinePlaceholder":1173},[121,4168,4170,4173],{"class":123,"line":4169},170,[121,4171,4172],{"class":127},"copy_to",[121,4174,2589],{"class":381},[1109,4176,4177],{},"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":32,"searchDepth":135,"depth":135,"links":4179},[4180,4181,4182],{"id":1217,"depth":143,"text":1218},{"id":1509,"depth":143,"text":1510},{"id":2616,"depth":143,"text":2617},"2006-10-16","Ce billet concerne une application, de mon cru, écrite en bash.",{"type":9,"value":4186},[4187,4191,4195,4201,4203],[12,4188,1188,4189,660],{},[50,4190,117],{},[12,4192,1193,4193,1197],{},[50,4194,1196],{},[12,4196,1200,4197,1204,4199,1208],{},[50,4198,1203],{},[50,4200,1207],{},[12,4202,1211],{},[12,4204,1214],{},{},"\u002Fpost\u002Fsauvegarde-automatique",{"title":1183,"description":4184},"posts\u002FSysAdmin\u002F2006-10-16-sauvegarde-automatique",[4210],"script","tiOqKpPKnPayGrhb8Ovj19GWXvi-3rDyhtkkPwFVK5Q",{"id":4213,"title":4214,"author":7,"body":4215,"category":1120,"categorySlug":1121,"date":4879,"description":4219,"excerpt":4880,"extension":1170,"location":1171,"meta":4888,"navigation":1173,"path":4889,"published":1173,"seo":4890,"slug":4891,"stem":4892,"tags":4893,"timeToRead":335,"__hash__":4894},"posts\u002Fposts\u002FSysAdmin\u002F2006-08-24-chiffrer-une-partition-d-un-disque.md","Chiffrer une partition d'un disque",{"type":9,"value":4216,"toc":4869},[4217,4220,4223,4226,4230,4266,4275,4279,4293,4299,4303,4306,4312,4316,4333,4337,4343,4346,4349,4355,4358,4362,4372,4378,4381,4387,4391,4397,4400,4406,4412,4418,4424,4430,4436,4442,4446,4451,4457,4462,4468,4471,4477,4480,4486,4490,4493,4498,4504,4509,4515,4518,4524,4528,4536,4832,4866],[12,4218,4219],{},"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.",[12,4221,4222],{},"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.",[12,4224,4225],{},"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.",[96,4227,4229],{"id":4228},"les-préparations","Les préparations",[40,4231,4232,4235,4257],{},[43,4233,4234],{},"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.",[43,4236,4237,4238,53,4241,53,4244,53,4247,4250,4251],{},"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",[50,4239,4240],{},"Gnu\u002FParted",[50,4242,4243],{},"QtParted",[50,4245,4246],{},"Fdisk",[50,4248,4249],{},"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",[113,4252,4255],{"className":4253,"code":4254,"language":264},[262],"lvcreate -L10G -n secure-close debian\n",[50,4256,4254],{"__ignoreMap":32},[43,4258,4259,4260],{},"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 :",[113,4261,4264],{"className":4262,"code":4263,"language":264},[262],"apt-get install dmsetup cryptsetup openssl\n",[50,4265,4263],{"__ignoreMap":32},[96,4267,4269,4270],{"id":4268},"préparation-de-la-partition1","Préparation de la partition",[24,4271,4272],{},[27,4273,34],{"href":652,"ariaDescribedBy":4274,"dataFootnoteRef":32,"id":654},[31],[101,4276,4278],{"id":4277},"cas-dune-partition","Cas d'une partition",[12,4280,4281,4282,4286,4287,4292],{},"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 ",[4283,4284,4285],"q",{},"nettoyer"," la partition en y écrivant\ndes données aléatoires ",[24,4288,4289],{},[27,4290,655],{"href":29,"ariaDescribedBy":4291,"dataFootnoteRef":32,"id":33},[31]," :",[113,4294,4297],{"className":4295,"code":4296,"language":264},[262],"dd if=\u002Fdev\u002Furandom of=\u002Fdev\u002Fdebian\u002Fsecure-close\n",[50,4298,4296],{"__ignoreMap":32},[101,4300,4302],{"id":4301},"cas-dun-fichier","Cas d'un fichier",[12,4304,4305],{},"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.",[113,4307,4310],{"className":4308,"code":4309,"language":264},[262],"dd if=\u002Fdev\u002Furandom of=\u002Fhome\u002Fsecure_close.img bs=1M count=10000\nlosetup \u002Fdev\u002Floop0 \u002Fhome\u002Fsecure_close.img\n",[50,4311,4309],{"__ignoreMap":32},[96,4313,4315],{"id":4314},"chiffrement-de-la-partition-et-création-du-système-de-fichier","Chiffrement de la partition et création du système de fichier",[12,4317,4318,4319,53,4322,53,4325,4328,4329,4332],{},"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 (",[50,4320,4321],{},"ReiserFS",[50,4323,4324],{},"Ext3FS",[50,4326,4327],{},"Ext2FS",",\n",[50,4330,4331],{},"XFS",", ....)",[101,4334,4336],{"id":4335},"sous-gnudebian-sarge","Sous Gnu\u002FDebian Sarge",[113,4338,4341],{"className":4339,"code":4340,"language":264},[262],"openssl rand -base64 64 | head -n 1 | openssl aes-256-ecb > \u002Fhome\u002Fsecure_close.key\n",[50,4342,4340],{"__ignoreMap":32},[12,4344,4345],{},"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.",[12,4347,4348],{},"Maintenant nous allons chiffrer la partition à proprement parlé :",[113,4350,4353],{"className":4351,"code":4352,"language":264},[262],"openssl enc -d -aes-256-ecb -in \u002Fhome\u002Fsecure_close.key | cryptsetup create secure-open \u002Fdev\u002Fdebian\u002Fsecure-close\n",[50,4354,4352],{"__ignoreMap":32},[12,4356,4357],{},"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.)",[101,4359,4361],{"id":4360},"sous-debian-etchsid","Sous Debian etch\u002Fsid",[12,4363,4364,4365,4368,4369,4371],{},"Sous Debian etch\u002Fsid, il est possible d'utiliser ",[16,4366,4367],{},"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 ",[16,4370,4367],{}," 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) :",[113,4373,4376],{"className":4374,"code":4375,"language":264},[262],"cryptsetup luksFormat \u002Fdev\u002Fdebian\u002Fsecure-close\n",[50,4377,4375],{"__ignoreMap":32},[12,4379,4380],{},"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)",[113,4382,4385],{"className":4383,"code":4384,"language":264},[262],"cryptsetup luksOpen \u002Fdev\u002Fdebian\u002Fsecure-close secure-open\n",[50,4386,4384],{"__ignoreMap":32},[101,4388,4390],{"id":4389},"préparation-et-protection-des-données","Préparation et protection des données",[113,4392,4395],{"className":4393,"code":4394,"language":264},[262],"mke2fs -j \u002Fdev\u002Fmapper\u002Fsecure-open\nmount -t ext3 \u002Fdev\u002Fmapper\u002Fsecure-open \u002Fmnt\ncp -a dossiers_confidentiels\u002F* \u002Fmnt\u002F\n",[50,4396,4394],{"__ignoreMap":32},[12,4398,4399],{},"Une fois que vous avez fini, vous pouvez démonter la partition, et\nsupprimer l'accès au contenu déchiffré.",[113,4401,4404],{"className":4402,"code":4403,"language":264},[262],"umount \u002Fmnt\n",[50,4405,4403],{"__ignoreMap":32},[12,4407,4408,4409,4411],{},"Si vous n'utilisez pas ",[16,4410,4367],{}," (sous Gnu\u002FDebian Sarge) :",[113,4413,4416],{"className":4414,"code":4415,"language":264},[262],"cryptsetup remove secure-open\n",[50,4417,4415],{"__ignoreMap":32},[12,4419,4420,4421,4423],{},"Si vous utilisez ",[16,4422,4367],{},", la commande est",[113,4425,4428],{"className":4426,"code":4427,"language":264},[262],"cryptsetup luksClose secure-open\n",[50,4429,4427],{"__ignoreMap":32},[12,4431,4432,4433,4292],{},"Et si vous avez créé un périphérique ",[50,4434,4435],{},"loop",[113,4437,4440],{"className":4438,"code":4439,"language":264},[262],"losetup -d \u002Fdev\u002Floop0\n",[50,4441,4439],{"__ignoreMap":32},[96,4443,4445],{"id":4444},"utilisation-courante","Utilisation courante",[12,4447,4448,4449,4292],{},"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 ",[16,4450,4367],{},[113,4452,4455],{"className":4453,"code":4454,"language":264},[262],"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",[50,4456,4454],{"__ignoreMap":32},[12,4458,4459,4460],{},"et à partir de la commande suivante si vous utilisez ",[16,4461,4367],{},[113,4463,4466],{"className":4464,"code":4465,"language":264},[262],"cryptsetup luksOpen \u002Fdev\u002Fdebian\u002Fsecure-close secure-open\nmount -t ext3 \u002Fdev\u002Fmapper\u002Fsecure-open \u002Fmnt\n",[50,4467,4465],{"__ignoreMap":32},[12,4469,4470],{},"Le démontage de la partition est identique :",[113,4472,4475],{"className":4473,"code":4474,"language":264},[262],"umount \u002Fmntcryptsetup remove secure-open\n",[50,4476,4474],{"__ignoreMap":32},[12,4478,4479],{},"ou",[113,4481,4484],{"className":4482,"code":4483,"language":264},[262],"umount \u002Fmntcryptsetup luksClose secure-open\n",[50,4485,4483],{"__ignoreMap":32},[96,4487,4489],{"id":4488},"changement-de-mot-de-passe","Changement de mot de passe",[12,4491,4492],{},"Quand vous souhaitez changer de mot de passe, vous pouvez utiliser la\ncommande suivante :",[12,4494,4495,4496],{},"Sans ",[16,4497,4367],{},[113,4499,4502],{"className":4500,"code":4501,"language":264},[262],"echo `openssl enc -d -aes-256-ecb -in \u002Fhome\u002Fsecure_close.key` | openssl aes-256-ecb > \u002Fhome\u002Fsecure_close.key\n",[50,4503,4501],{"__ignoreMap":32},[12,4505,4506,4507],{},"Avec ",[16,4508,4367],{},[113,4510,4513],{"className":4511,"code":4512,"language":264},[262],"cryptsetup luksDump \u002Fdev\u002Fdebian\u002Fsecure-close\n",[50,4514,4512],{"__ignoreMap":32},[12,4516,4517],{},"pour voir quels sont les slots utilisés.puis",[113,4519,4522],{"className":4520,"code":4521,"language":264},[262],"cryptsetup luksAddKey \u002Fdev\u002Fdebian\u002Fsecure-closecryptsetup luksDelKey [ancien slot]\n",[50,4523,4521],{"__ignoreMap":32},[96,4525,4527],{"id":4526},"un-script-pour-le-montage-et-le-démontage-automatique","Un script pour le montage et le démontage automatique",[12,4529,4530,4531,4292],{},"Voici un script que vous pouvez utiliser en root ou à l'aide de la\ncommande sudo pour monter et démonter vos partitions chiffrer",[24,4532,4533],{},[27,4534,819],{"href":816,"ariaDescribedBy":4535,"dataFootnoteRef":32,"id":818},[31],[113,4537,4539],{"className":115,"code":4538,"language":117,"meta":32,"style":32},"#!\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",[50,4540,4541,4545,4549,4562,4575,4592,4609,4613,4625,4636,4650,4654,4659,4682,4697,4707,4711,4728,4757,4775,4786,4803,4816,4824,4828],{"__ignoreMap":32},[121,4542,4543],{"class":123,"line":124},[121,4544,1520],{"class":778},[121,4546,4547],{"class":123,"line":135},[121,4548,1233],{"emptyLinePlaceholder":1173},[121,4550,4551,4553,4555,4557,4560],{"class":123,"line":143},[121,4552,1630],{"class":789},[121,4554,1633],{"class":381},[121,4556,1636],{"class":517},[121,4558,4559],{"class":381}," \u002Fdev\u002Fmapper\u002Fsecure-open ] ; ",[121,4561,1642],{"class":789},[121,4563,4564,4567,4570,4573],{"class":123,"line":151},[121,4565,4566],{"class":127},"        umount",[121,4568,4569],{"class":131}," \u002Fhome\u002Fsecure",[121,4571,4572],{"class":381}," 2> ",[121,4574,3159],{"class":131},[121,4576,4577,4579,4581,4583,4586,4588,4590],{"class":123,"line":326},[121,4578,2224],{"class":789},[121,4580,1633],{"class":381},[121,4582,3172],{"class":917},[121,4584,4585],{"class":517}," !=",[121,4587,3177],{"class":285},[121,4589,1698],{"class":381},[121,4591,1642],{"class":789},[121,4593,4594,4597,4600,4603,4606],{"class":123,"line":335},[121,4595,4596],{"class":127},"                kdialog",[121,4598,4599],{"class":285}," --title",[121,4601,4602],{"class":131}," KSecure",[121,4604,4605],{"class":285}," --error",[121,4607,4608],{"class":131}," \"Impossible de démonter le périphérique\"\n",[121,4610,4611],{"class":123,"line":343},[121,4612,2300],{"class":789},[121,4614,4615,4617,4619,4621,4623],{"class":123,"line":352},[121,4616,2224],{"class":789},[121,4618,1633],{"class":381},[121,4620,1636],{"class":517},[121,4622,4559],{"class":381},[121,4624,1642],{"class":789},[121,4626,4627,4630,4633],{"class":123,"line":484},[121,4628,4629],{"class":127},"                \u002Fsbin\u002Fcryptsetup",[121,4631,4632],{"class":131}," remove",[121,4634,4635],{"class":131}," secure-open\n",[121,4637,4638,4640,4642,4644,4647],{"class":123,"line":504},[121,4639,4596],{"class":127},[121,4641,4599],{"class":285},[121,4643,4602],{"class":131},[121,4645,4646],{"class":285}," --msgbox",[121,4648,4649],{"class":131}," \"Suppression du périphérique accomplie\"\n",[121,4651,4652],{"class":123,"line":514},[121,4653,2300],{"class":789},[121,4655,4656],{"class":123,"line":521},[121,4657,4658],{"class":789},"    else\n",[121,4660,4661,4664,4666,4668,4671,4673,4676,4679],{"class":123,"line":532},[121,4662,4663],{"class":1243},"        password",[121,4665,1247],{"class":517},[121,4667,1822],{"class":131},[121,4669,4670],{"class":127},"kdialog",[121,4672,4599],{"class":285},[121,4674,4675],{"class":131}," KSecure ",[121,4677,4678],{"class":285},"--password",[121,4680,4681],{"class":131}," \"Clé de déchiffrement\"`\n",[121,4683,4684,4686,4688,4690,4693,4695],{"class":123,"line":542},[121,4685,2224],{"class":789},[121,4687,1633],{"class":381},[121,4689,1906],{"class":517},[121,4691,4692],{"class":1243}," $password",[121,4694,1698],{"class":381},[121,4696,1642],{"class":789},[121,4698,4699,4702,4704],{"class":123,"line":552},[121,4700,4701],{"class":1243},"                password",[121,4703,1247],{"class":517},[121,4705,4706],{"class":131},"\"nopassword\"\n",[121,4708,4709],{"class":123,"line":562},[121,4710,2300],{"class":789},[121,4712,4713,4715,4717,4720,4722,4725],{"class":123,"line":572},[121,4714,2115],{"class":517},[121,4716,1909],{"class":131},[121,4718,4719],{"class":1243},"$password",[121,4721,1740],{"class":131},[121,4723,4724],{"class":381}," | ",[121,4726,4727],{"class":517},"\\\n",[121,4729,4730,4733,4736,4738,4741,4744,4747,4750,4753,4755],{"class":123,"line":1350},[121,4731,4732],{"class":127},"        openssl",[121,4734,4735],{"class":131}," enc",[121,4737,3413],{"class":285},[121,4739,4740],{"class":285}," -aes-256-ecb",[121,4742,4743],{"class":285}," -in",[121,4745,4746],{"class":131}," ~\u002Fcompte\u002Fsecure.cle",[121,4748,4749],{"class":285}," -kfile",[121,4751,4752],{"class":131}," \u002Fdev\u002Fstdin",[121,4754,4724],{"class":381},[121,4756,4727],{"class":517},[121,4758,4759,4762,4765,4768,4771,4773],{"class":123,"line":1361},[121,4760,4761],{"class":127},"        \u002Fsbin\u002Fcryptsetup",[121,4763,4764],{"class":131}," create",[121,4766,4767],{"class":131}," secure-open",[121,4769,4770],{"class":131}," \u002Fdev\u002Fdebian\u002Fsecure-close",[121,4772,4572],{"class":381},[121,4774,3159],{"class":131},[121,4776,4777,4780,4782,4784],{"class":123,"line":1372},[121,4778,4779],{"class":127},"        mount",[121,4781,4569],{"class":131},[121,4783,4572],{"class":381},[121,4785,3159],{"class":131},[121,4787,4788,4790,4792,4794,4796,4799,4801],{"class":123,"line":1383},[121,4789,2224],{"class":789},[121,4791,1633],{"class":381},[121,4793,3172],{"class":917},[121,4795,1692],{"class":517},[121,4797,4798],{"class":285},"  0",[121,4800,1698],{"class":381},[121,4802,1642],{"class":789},[121,4804,4805,4807,4809,4811,4813],{"class":123,"line":1389},[121,4806,4596],{"class":127},[121,4808,4599],{"class":285},[121,4810,4602],{"class":131},[121,4812,4605],{"class":285},[121,4814,4815],{"class":131}," \"Clé incorrecte\"\n",[121,4817,4818,4820,4822],{"class":123,"line":1400},[121,4819,4629],{"class":127},[121,4821,4632],{"class":131},[121,4823,4635],{"class":131},[121,4825,4826],{"class":123,"line":1405},[121,4827,2300],{"class":789},[121,4829,4830],{"class":123,"line":1411},[121,4831,1676],{"class":789},[1058,4833,4835,4838],{"className":4834,"dataFootnotes":32},[1061],[1063,4836,1067],{"className":4837,"id":31},[1066],[225,4839,4840,4851,4857],{},[43,4841,4842,4843,4847,4848],{"id":1083},"Les différentes commandes sont inspirés du site ",[27,4844,4845],{"href":4845,"rel":4846},"http:\u002F\u002Fdocisland.blogspot.com\u002F",[77],". ",[27,4849,1080],{"href":1087,"ariaLabel":1077,"className":4850,"dataFootnoteBackref":32},[1079],[43,4852,4853,4854],{"id":1072},"Attention, cela détruira le contenu de la partition que vous assainissez. ",[27,4855,1080],{"href":1076,"ariaLabel":1088,"className":4856,"dataFootnoteBackref":32},[1079],[43,4858,4859,4860,4862,4863],{"id":1092},"Vous pourrez trouver un script pour le format ",[16,4861,4367],{}," dans les commentaires ou dans la partie Script du site. ",[27,4864,1080],{"href":1096,"ariaLabel":1097,"className":4865,"dataFootnoteBackref":32},[1079],[1109,4867,4868],{},"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":32,"searchDepth":135,"depth":135,"links":4870},[4871,4872,4874,4875,4876,4877,4878],{"id":4228,"depth":143,"text":4229},{"id":4268,"depth":143,"text":4873},"Préparation de la partition1",{"id":4314,"depth":143,"text":4315},{"id":4444,"depth":143,"text":4445},{"id":4488,"depth":143,"text":4489},{"id":4526,"depth":143,"text":4527},{"id":31,"depth":135,"text":1067},"2006-08-24",{"type":9,"value":4881},[4882,4884,4886],[12,4883,4219],{},[12,4885,4222],{},[12,4887,4225],{},{},"\u002Fpost\u002Fchiffrer-une-partition-d-un-disque",{"title":4214,"description":4219},"chiffrer-une-partition-d-un-disque","posts\u002FSysAdmin\u002F2006-08-24-chiffrer-une-partition-d-un-disque",[1179,4210],"MUqfUdlUG9slFHhhsbdUUZar_gs50vY5m24eDEqwL4Q",{"id":4896,"title":4897,"author":7,"body":4898,"category":1120,"categorySlug":1121,"date":6998,"description":6999,"excerpt":7000,"extension":1170,"location":1171,"meta":7010,"navigation":1173,"path":7011,"published":1173,"seo":7012,"slug":7013,"stem":7014,"tags":7015,"timeToRead":335,"__hash__":7016},"posts\u002Fposts\u002FSysAdmin\u002F2006-08-20-script-linux.md","Script Linux",{"type":9,"value":4899,"toc":6988},[4900,4911,4914,4918,4928,5004,5017,5021,5024,5083,5087,5106,5415,5419,5422,5542,5546,5553,5844,5848,5862,5992,5996,6016,6347,6351,6364,6985],[12,4901,4902,4903,4906,4907,4910],{},"Ce billet est consacré au script Linux. J'ai écrit divers script pour\n\"automatiser\" certaines commandes, ",[16,4904,4905],{},"même si je dois exécuter ces\nscripts manuellement",". Je pourrais, quand bien même, appeler ces scripts\ndans un ",[50,4908,4909],{},"cron"," si je le souhaitais.",[12,4912,4913],{},"Vous trouverez, donc, dans la suite, différents scripts, différentes\nidées, à améliorer, à récupérer.",[96,4915,4917],{"id":4916},"liste-des-paquets","Liste des paquets",[12,4919,4920,4921,4924,4925,660],{},"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 ",[16,4922,4923],{},"unstable"," et moyennant le dossier ",[50,4926,4927],{},"\u002Fvar",[113,4929,4931],{"className":115,"code":4930,"language":117,"meta":32,"style":32},"liste=`dpkg -l | tail +6 | cut -d\\  -f3`\nfor i in $liste ; do\n    echo \"$i        install\"\ndone\n",[50,4932,4933,4969,4986,4999],{"__ignoreMap":32},[121,4934,4935,4938,4940,4942,4945,4947,4949,4952,4955,4958,4960,4962,4964,4967],{"class":123,"line":124},[121,4936,4937],{"class":1243},"liste",[121,4939,1247],{"class":517},[121,4941,1822],{"class":131},[121,4943,4944],{"class":127},"dpkg",[121,4946,3424],{"class":285},[121,4948,3396],{"class":381},[121,4950,4951],{"class":127}," tail",[121,4953,4954],{"class":131}," +6 ",[121,4956,4957],{"class":381},"|",[121,4959,3406],{"class":127},[121,4961,3413],{"class":285},[121,4963,3416],{"class":517},[121,4965,4966],{"class":285}," -f3",[121,4968,1834],{"class":131},[121,4970,4971,4974,4977,4979,4982,4984],{"class":123,"line":135},[121,4972,4973],{"class":789},"for",[121,4975,4976],{"class":1243}," i",[121,4978,3571],{"class":789},[121,4980,4981],{"class":1243}," $liste",[121,4983,3597],{"class":381},[121,4985,3600],{"class":789},[121,4987,4988,4991,4993,4996],{"class":123,"line":143},[121,4989,4990],{"class":517},"    echo",[121,4992,1909],{"class":131},[121,4994,4995],{"class":1243},"$i",[121,4997,4998],{"class":131},"        install\"\n",[121,5000,5001],{"class":123,"line":151},[121,5002,5003],{"class":789},"done\n",[12,5005,5006],{},[675,5007,5008,5009,5012,5013,5016],{},"La commande ",[50,5010,5011],{},"dpkg --get-selections"," peut très bien remplacer le\nscript ci-dessus. Merci à ",[16,5014,5015],{},"mx"," pour sa remarque.",[96,5018,5020],{"id":5019},"purge-des-paquets","Purge des paquets",[12,5022,5023],{},"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.",[113,5025,5027],{"className":115,"code":5026,"language":117,"meta":32,"style":32},"for i in `dpkg -l | grep -e '^rc.*' | cut -f3 -d\\ ` ; do dpkg -P $i ; done\n",[50,5028,5029],{"__ignoreMap":32},[121,5030,5031,5033,5035,5037,5039,5041,5043,5045,5047,5050,5053,5055,5057,5059,5061,5063,5065,5067,5070,5073,5076,5079,5081],{"class":123,"line":124},[121,5032,4973],{"class":789},[121,5034,4976],{"class":1243},[121,5036,3571],{"class":789},[121,5038,3574],{"class":131},[121,5040,4944],{"class":127},[121,5042,3424],{"class":285},[121,5044,3396],{"class":381},[121,5046,3399],{"class":127},[121,5048,5049],{"class":285}," -e",[121,5051,5052],{"class":131}," '^rc.*' ",[121,5054,4957],{"class":381},[121,5056,3406],{"class":127},[121,5058,4966],{"class":285},[121,5060,3413],{"class":285},[121,5062,3416],{"class":517},[121,5064,1822],{"class":131},[121,5066,3597],{"class":381},[121,5068,5069],{"class":789},"do",[121,5071,5072],{"class":127}," dpkg",[121,5074,5075],{"class":285}," -P",[121,5077,5078],{"class":1243}," $i",[121,5080,3597],{"class":381},[121,5082,5003],{"class":789},[96,5084,5086],{"id":5085},"sécurisation-des-données","Sécurisation des données",[12,5088,5089,5090,5093,5094,5097,5098,5101,5102,5105],{},"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 ",[50,5091,5092],{},"$DISK-close",". Il crée à\nla suite le ",[16,5095,5096],{},"device-mapper"," (en supposant qu'il a été créé à l'aide de\n",[16,5099,5100],{},"LUKS",") du nom de ",[50,5103,5104],{},"$DISK-open",".S'il trouve ce \"device-mapper\", il le\ndémonte et le supprime.",[113,5107,5109],{"className":115,"code":5108,"language":117,"meta":32,"style":32},"#!\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",[50,5110,5111,5115,5119,5130,5145,5159,5163,5181,5193,5209,5226,5230,5246,5256,5275,5279,5283,5307,5321,5329,5333,5347,5367,5379,5395,5407,5411],{"__ignoreMap":32},[121,5112,5113],{"class":123,"line":124},[121,5114,1520],{"class":778},[121,5116,5117],{"class":123,"line":135},[121,5118,1233],{"emptyLinePlaceholder":1173},[121,5120,5121,5124,5126],{"class":123,"line":143},[121,5122,5123],{"class":1243},"DISK",[121,5125,1247],{"class":517},[121,5127,5129],{"class":5128},"s_ZVi","$1\n",[121,5131,5132,5135,5137,5139,5142],{"class":123,"line":151},[121,5133,5134],{"class":1243},"DISKOPEN",[121,5136,1247],{"class":517},[121,5138,1740],{"class":131},[121,5140,5141],{"class":1243},"$DISK",[121,5143,5144],{"class":131},"-open\"\n",[121,5146,5147,5150,5152,5154,5156],{"class":123,"line":326},[121,5148,5149],{"class":1243},"DISKCLOSE",[121,5151,1247],{"class":517},[121,5153,1740],{"class":131},[121,5155,5141],{"class":1243},[121,5157,5158],{"class":131},"-close\"\n",[121,5160,5161],{"class":123,"line":335},[121,5162,1233],{"emptyLinePlaceholder":1173},[121,5164,5165,5167,5169,5171,5174,5177,5179],{"class":123,"line":343},[121,5166,1630],{"class":789},[121,5168,1633],{"class":381},[121,5170,1636],{"class":517},[121,5172,5173],{"class":381}," \u002Fdev\u002Fmapper\u002F",[121,5175,5176],{"class":1243},"$DISKOPEN",[121,5178,1698],{"class":381},[121,5180,1642],{"class":789},[121,5182,5183,5185,5187,5189,5191],{"class":123,"line":352},[121,5184,4566],{"class":127},[121,5186,5173],{"class":131},[121,5188,5176],{"class":1243},[121,5190,4572],{"class":381},[121,5192,3159],{"class":131},[121,5194,5195,5197,5199,5201,5203,5205,5207],{"class":123,"line":484},[121,5196,2224],{"class":789},[121,5198,1633],{"class":381},[121,5200,3172],{"class":917},[121,5202,4585],{"class":517},[121,5204,3177],{"class":285},[121,5206,1698],{"class":381},[121,5208,1642],{"class":789},[121,5210,5211,5213,5215,5217,5219,5222,5224],{"class":123,"line":504},[121,5212,4596],{"class":127},[121,5214,4599],{"class":285},[121,5216,4602],{"class":131},[121,5218,4605],{"class":285},[121,5220,5221],{"class":131}," \"Impossible de démonter le péripherique ",[121,5223,5141],{"class":1243},[121,5225,1749],{"class":131},[121,5227,5228],{"class":123,"line":514},[121,5229,2300],{"class":789},[121,5231,5232,5234,5236,5238,5240,5242,5244],{"class":123,"line":521},[121,5233,3217],{"class":789},[121,5235,1633],{"class":381},[121,5237,1636],{"class":517},[121,5239,5173],{"class":381},[121,5241,5176],{"class":1243},[121,5243,1698],{"class":381},[121,5245,1642],{"class":789},[121,5247,5248,5250,5253],{"class":123,"line":532},[121,5249,4629],{"class":127},[121,5251,5252],{"class":131}," luksClose",[121,5254,5255],{"class":1243}," $DISKOPEN\n",[121,5257,5258,5261,5263,5265,5267,5270,5272],{"class":123,"line":542},[121,5259,5260],{"class":127},"                                kdialog",[121,5262,4599],{"class":285},[121,5264,4602],{"class":131},[121,5266,4646],{"class":285},[121,5268,5269],{"class":131}," \"Suppression du péripherique ",[121,5271,5141],{"class":1243},[121,5273,5274],{"class":131}," accomplie\"\n",[121,5276,5277],{"class":123,"line":552},[121,5278,3254],{"class":789},[121,5280,5281],{"class":123,"line":562},[121,5282,1655],{"class":789},[121,5284,5285,5287,5289,5291,5293,5295,5297,5299,5302,5304],{"class":123,"line":572},[121,5286,4663],{"class":1243},[121,5288,1247],{"class":517},[121,5290,1822],{"class":131},[121,5292,4670],{"class":127},[121,5294,4599],{"class":285},[121,5296,4675],{"class":131},[121,5298,4678],{"class":285},[121,5300,5301],{"class":131}," \"Cle de déchiffrement de ",[121,5303,5141],{"class":1243},[121,5305,5306],{"class":131},"\"`\n",[121,5308,5309,5311,5313,5315,5317,5319],{"class":123,"line":1350},[121,5310,2224],{"class":789},[121,5312,1633],{"class":381},[121,5314,1906],{"class":517},[121,5316,4692],{"class":1243},[121,5318,1698],{"class":381},[121,5320,1642],{"class":789},[121,5322,5323,5325,5327],{"class":123,"line":1361},[121,5324,4701],{"class":1243},[121,5326,1247],{"class":517},[121,5328,4706],{"class":131},[121,5330,5331],{"class":123,"line":1372},[121,5332,2300],{"class":789},[121,5334,5335,5337,5339,5341,5343,5345],{"class":123,"line":1383},[121,5336,2115],{"class":517},[121,5338,1909],{"class":131},[121,5340,4719],{"class":1243},[121,5342,1740],{"class":131},[121,5344,4724],{"class":381},[121,5346,4727],{"class":517},[121,5348,5349,5351,5354,5357,5360,5363,5365],{"class":123,"line":1389},[121,5350,4629],{"class":127},[121,5352,5353],{"class":131}," luksOpen",[121,5355,5356],{"class":131}," \u002Fdev\u002Fdebian\u002F",[121,5358,5359],{"class":1243},"$DISKCLOSE",[121,5361,5362],{"class":1243}," $DISKOPEN",[121,5364,4572],{"class":381},[121,5366,3159],{"class":131},[121,5368,5369,5371,5373,5375,5377],{"class":123,"line":1400},[121,5370,4779],{"class":127},[121,5372,5173],{"class":131},[121,5374,5176],{"class":1243},[121,5376,4572],{"class":381},[121,5378,3159],{"class":131},[121,5380,5381,5383,5385,5387,5389,5391,5393],{"class":123,"line":1405},[121,5382,3217],{"class":789},[121,5384,1633],{"class":381},[121,5386,3172],{"class":917},[121,5388,1692],{"class":517},[121,5390,4798],{"class":285},[121,5392,1698],{"class":381},[121,5394,1642],{"class":789},[121,5396,5397,5399,5401,5403,5405],{"class":123,"line":1411},[121,5398,5260],{"class":127},[121,5400,4599],{"class":285},[121,5402,4602],{"class":131},[121,5404,4605],{"class":285},[121,5406,4815],{"class":131},[121,5408,5409],{"class":123,"line":1422},[121,5410,3254],{"class":789},[121,5412,5413],{"class":123,"line":1433},[121,5414,1676],{"class":789},[96,5416,5418],{"id":5417},"apprentissage-du-spam","Apprentissage du spam",[12,5420,5421],{},"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.",[113,5423,5425],{"className":115,"code":5424,"language":117,"meta":32,"style":32},"#!\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",[50,5426,5427,5432,5436,5464,5492,5496,5518],{"__ignoreMap":32},[121,5428,5429],{"class":123,"line":124},[121,5430,5431],{"class":778},"#!\u002Fbin\u002Fbash\n",[121,5433,5434],{"class":123,"line":135},[121,5435,1233],{"emptyLinePlaceholder":1173},[121,5437,5438,5441,5443,5446,5449,5452,5455,5458,5461],{"class":123,"line":143},[121,5439,5440],{"class":127},"sa-learn",[121,5442,286],{"class":285},[121,5444,5445],{"class":285}," --no-sync",[121,5447,5448],{"class":285}," --spam",[121,5450,5451],{"class":285}," --mbox",[121,5453,5454],{"class":131}," \u002Fhome\u002Fphoenix\u002FMail\u002FIndésirable",[121,5456,5457],{"class":517},"\\ \\(",[121,5459,5460],{"class":131},"Spam",[121,5462,5463],{"class":517},"\\)\n",[121,5465,5466,5468,5470,5472,5475,5477,5480,5482,5485,5487,5490],{"class":123,"line":151},[121,5467,5440],{"class":127},[121,5469,286],{"class":285},[121,5471,5445],{"class":285},[121,5473,5474],{"class":285}," --ham",[121,5476,5451],{"class":285},[121,5478,5479],{"class":131}," \u002Fhome\u002Fphoenix\u002FMail\u002FDésirable",[121,5481,5457],{"class":517},[121,5483,5484],{"class":131},"Non",[121,5486,3416],{"class":517},[121,5488,5489],{"class":131},"spam",[121,5491,5463],{"class":517},[121,5493,5494],{"class":123,"line":326},[121,5495,1233],{"emptyLinePlaceholder":1173},[121,5497,5498,5501,5504,5506,5509,5512,5514,5516],{"class":123,"line":335},[121,5499,5500],{"class":127},"bogofilter",[121,5502,5503],{"class":285}," -N",[121,5505,926],{"class":285},[121,5507,5508],{"class":381}," \u003C ",[121,5510,5511],{"class":131},"\u002Fhome\u002Fphoenix\u002FMail\u002FIndésirable",[121,5513,5457],{"class":517},[121,5515,5460],{"class":131},[121,5517,5463],{"class":517},[121,5519,5520,5522,5525,5527,5529,5532,5534,5536,5538,5540],{"class":123,"line":343},[121,5521,5500],{"class":127},[121,5523,5524],{"class":285}," -S",[121,5526,2210],{"class":285},[121,5528,5508],{"class":381},[121,5530,5531],{"class":131},"\u002Fhome\u002Fphoenix\u002FMail\u002FDésirable",[121,5533,5457],{"class":517},[121,5535,5484],{"class":131},[121,5537,3416],{"class":517},[121,5539,5489],{"class":131},[121,5541,5463],{"class":517},[96,5543,5545],{"id":5544},"création-de-lien","Création de lien",[12,5547,5548,5549,5552],{},"Permet à partir d'une liste de fichier identique générée par ",[16,5550,5551],{},"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.",[113,5554,5556],{"className":115,"code":5555,"language":117,"meta":32,"style":32},"#!\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",[50,5557,5558,5562,5566,5575,5586,5603,5633,5642,5652,5667,5684,5694,5698,5727,5753,5774,5778,5782,5802,5806,5810,5819,5823,5832,5836],{"__ignoreMap":32},[121,5559,5560],{"class":123,"line":124},[121,5561,1520],{"class":778},[121,5563,5564],{"class":123,"line":135},[121,5565,1233],{"emptyLinePlaceholder":1173},[121,5567,5568,5570,5572],{"class":123,"line":143},[121,5569,1660],{"class":517},[121,5571,2210],{"class":285},[121,5573,5574],{"class":131}," \"|\"\n",[121,5576,5577,5580,5583],{"class":123,"line":151},[121,5578,5579],{"class":517},"read",[121,5581,5582],{"class":285}," -r",[121,5584,5585],{"class":131}," line\n",[121,5587,5588,5591,5593,5595,5597,5599,5601],{"class":123,"line":326},[121,5589,5590],{"class":789},"while",[121,5592,1633],{"class":381},[121,5594,3172],{"class":917},[121,5596,3729],{"class":517},[121,5598,3177],{"class":285},[121,5600,1698],{"class":381},[121,5602,3600],{"class":789},[121,5604,5605,5608,5610,5612,5614,5617,5619,5622,5624,5627,5630],{"class":123,"line":335},[121,5606,5607],{"class":1243},"        line",[121,5609,1247],{"class":517},[121,5611,1822],{"class":131},[121,5613,1660],{"class":517},[121,5615,5616],{"class":1243}," $line",[121,5618,3396],{"class":381},[121,5620,5621],{"class":127}," sed",[121,5623,5049],{"class":285},[121,5625,5626],{"class":131}," \"s\u002F",[121,5628,5629],{"class":517},"\\\\\\\\\\\\",[121,5631,5632],{"class":131}," \u002F@\u002Fg\"`\n",[121,5634,5635,5638,5640],{"class":123,"line":343},[121,5636,5637],{"class":1243},"        index",[121,5639,1247],{"class":517},[121,5641,3486],{"class":131},[121,5643,5644,5647,5649],{"class":123,"line":352},[121,5645,5646],{"class":1243},"        principal",[121,5648,1247],{"class":517},[121,5650,5651],{"class":131},"\"\"\n",[121,5653,5654,5656,5659,5661,5663,5665],{"class":123,"line":484},[121,5655,3814],{"class":789},[121,5657,5658],{"class":1243}," chemin",[121,5660,3571],{"class":789},[121,5662,5616],{"class":1243},[121,5664,3597],{"class":381},[121,5666,3600],{"class":789},[121,5668,5669,5671,5673,5676,5678,5680,5682],{"class":123,"line":504},[121,5670,3217],{"class":789},[121,5672,1633],{"class":381},[121,5674,5675],{"class":1243},"$index",[121,5677,3729],{"class":517},[121,5679,3177],{"class":285},[121,5681,1698],{"class":381},[121,5683,1642],{"class":789},[121,5685,5686,5689,5691],{"class":123,"line":514},[121,5687,5688],{"class":1243},"                        principal",[121,5690,1247],{"class":517},[121,5692,5693],{"class":1243},"$chemin\n",[121,5695,5696],{"class":123,"line":521},[121,5697,3307],{"class":789},[121,5699,5700,5703,5705,5707,5709,5712,5714,5716,5718,5721,5724],{"class":123,"line":532},[121,5701,5702],{"class":1243},"                        a",[121,5704,1247],{"class":517},[121,5706,1822],{"class":131},[121,5708,1660],{"class":517},[121,5710,5711],{"class":1243}," $principal",[121,5713,3396],{"class":381},[121,5715,5621],{"class":127},[121,5717,5049],{"class":285},[121,5719,5720],{"class":131}," \"s\u002F@\u002F",[121,5722,5723],{"class":517},"\\\\",[121,5725,5726],{"class":131}," \u002Fg\"`\n",[121,5728,5729,5732,5734,5736,5738,5741,5743,5745,5747,5749,5751],{"class":123,"line":542},[121,5730,5731],{"class":1243},"                        b",[121,5733,1247],{"class":517},[121,5735,1822],{"class":131},[121,5737,1660],{"class":517},[121,5739,5740],{"class":1243}," $chemin",[121,5742,3396],{"class":381},[121,5744,5621],{"class":127},[121,5746,5049],{"class":285},[121,5748,5720],{"class":131},[121,5750,5723],{"class":517},[121,5752,5726],{"class":131},[121,5754,5755,5758,5760,5762,5765,5767,5769,5772],{"class":123,"line":552},[121,5756,5757],{"class":127},"                        ln",[121,5759,911],{"class":285},[121,5761,1909],{"class":131},[121,5763,5764],{"class":1243},"$a",[121,5766,1740],{"class":131},[121,5768,1909],{"class":131},[121,5770,5771],{"class":1243},"$b",[121,5773,1749],{"class":131},[121,5775,5776],{"class":123,"line":562},[121,5777,3254],{"class":789},[121,5779,5780],{"class":123,"line":572},[121,5781,1233],{"emptyLinePlaceholder":1173},[121,5783,5784,5787,5789,5791,5793,5796,5798,5800],{"class":123,"line":1350},[121,5785,5786],{"class":1243},"                index",[121,5788,1247],{"class":517},[121,5790,1822],{"class":131},[121,5792,2492],{"class":127},[121,5794,5795],{"class":1243}," $index",[121,5797,2498],{"class":131},[121,5799,34],{"class":285},[121,5801,1834],{"class":131},[121,5803,5804],{"class":123,"line":1361},[121,5805,4156],{"class":789},[121,5807,5808],{"class":123,"line":1372},[121,5809,1233],{"emptyLinePlaceholder":1173},[121,5811,5812,5814,5816],{"class":123,"line":1383},[121,5813,2115],{"class":517},[121,5815,2210],{"class":285},[121,5817,5818],{"class":131}," \"=\"\n",[121,5820,5821],{"class":123,"line":1389},[121,5822,1233],{"emptyLinePlaceholder":1173},[121,5824,5825,5828,5830],{"class":123,"line":1400},[121,5826,5827],{"class":517},"        read",[121,5829,5582],{"class":285},[121,5831,5585],{"class":131},[121,5833,5834],{"class":123,"line":1405},[121,5835,5003],{"class":789},[121,5837,5838,5840,5842],{"class":123,"line":1411},[121,5839,1660],{"class":517},[121,5841,2210],{"class":285},[121,5843,5574],{"class":131},[96,5845,5847],{"id":5846},"renumérotation","Renumérotation",[12,5849,5850,5851,5854,5855,5858,5859],{},"Permet de renuméroté une liste d'image d'un dossier, du style\n",[50,5852,5853],{},"1 10 11 12 13 2 3 4..."," en une suite précédé d'un ",[50,5856,5857],{},"0"," :\n",[50,5860,5861],{},"01 02 03 04 05 06 ...",[113,5863,5865],{"className":115,"code":5864,"language":117,"meta":32,"style":32},"#!\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",[50,5866,5867,5871,5875,5894,5898,5911,5915,5923,5927,5954,5962,5966,5973,5977,5984,5988],{"__ignoreMap":32},[121,5868,5869],{"class":123,"line":124},[121,5870,1520],{"class":778},[121,5872,5873],{"class":123,"line":135},[121,5874,1233],{"emptyLinePlaceholder":1173},[121,5876,5877,5879,5882,5884,5886,5888,5890,5892],{"class":123,"line":143},[121,5878,4973],{"class":789},[121,5880,5881],{"class":1243}," DIR",[121,5883,3571],{"class":789},[121,5885,3574],{"class":131},[121,5887,3577],{"class":127},[121,5889,1822],{"class":131},[121,5891,3597],{"class":381},[121,5893,3600],{"class":789},[121,5895,5896],{"class":123,"line":151},[121,5897,1233],{"emptyLinePlaceholder":1173},[121,5899,5900,5902,5904,5907,5909],{"class":123,"line":326},[121,5901,4990],{"class":517},[121,5903,2210],{"class":285},[121,5905,5906],{"class":131}," \"Change directory ",[121,5908,3128],{"class":1243},[121,5910,3354],{"class":131},[121,5912,5913],{"class":123,"line":335},[121,5914,1233],{"emptyLinePlaceholder":1173},[121,5916,5917,5920],{"class":123,"line":343},[121,5918,5919],{"class":517},"    cd",[121,5921,5922],{"class":1243}," $DIR\n",[121,5924,5925],{"class":123,"line":352},[121,5926,1233],{"emptyLinePlaceholder":1173},[121,5928,5929,5932,5934,5936,5938,5940,5942,5944,5947,5949,5951],{"class":123,"line":484},[121,5930,5931],{"class":1243},"    CMD",[121,5933,1247],{"class":517},[121,5935,1822],{"class":131},[121,5937,3577],{"class":127},[121,5939,3396],{"class":381},[121,5941,5621],{"class":127},[121,5943,5049],{"class":285},[121,5945,5946],{"class":131}," 's\u002F\\(.*\\)_\\([1-9]\\)\\.jpg\u002Fmv \\1_\\2.jpg \\1_0\\2.jpg ;\u002Fg' ",[121,5948,4957],{"class":381},[121,5950,3399],{"class":127},[121,5952,5953],{"class":131}," \"mv \"`\n",[121,5955,5956,5959],{"class":123,"line":504},[121,5957,5958],{"class":517},"    eval",[121,5960,5961],{"class":1243}," $CMD\n",[121,5963,5964],{"class":123,"line":514},[121,5965,1233],{"emptyLinePlaceholder":1173},[121,5967,5968,5970],{"class":123,"line":521},[121,5969,5919],{"class":517},[121,5971,5972],{"class":131}," ..\n",[121,5974,5975],{"class":123,"line":532},[121,5976,1233],{"emptyLinePlaceholder":1173},[121,5978,5979,5981],{"class":123,"line":542},[121,5980,4990],{"class":517},[121,5982,5983],{"class":131}," \"Ok\"\n",[121,5985,5986],{"class":123,"line":552},[121,5987,1233],{"emptyLinePlaceholder":1173},[121,5989,5990],{"class":123,"line":562},[121,5991,5003],{"class":789},[96,5993,5995],{"id":5994},"génération-de-playlist","Génération de playlist",[12,5997,5998,5999,6002,6003,6006,6007,6010,6011,660],{},"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 ",[16,6000,6001],{},"m3u"," à chaque fois qu'il trouve un fichier\nmultimédia. Il remplace le début du dossier par un lien ",[16,6004,6005],{},"http",".Je\nrajoute qu'il existe un très bon site contenant de la musique\n",[231,6008,6009],{},"libre"," : ",[27,6012,6015],{"href":6013,"rel":6014},"http:\u002F\u002Fwww.jamendo.org\u002Ffr\u002F",[77],"Jamendo",[113,6017,6019],{"className":115,"code":6018,"language":117,"meta":32,"style":32},"#!\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",[50,6020,6021,6025,6029,6043,6047,6059,6075,6080,6084,6088,6101,6119,6123,6135,6139,6155,6179,6194,6199,6203,6207,6218,6232,6236,6260,6279,6295,6324,6328,6332,6336],{"__ignoreMap":32},[121,6022,6023],{"class":123,"line":124},[121,6024,1520],{"class":778},[121,6026,6027],{"class":123,"line":135},[121,6028,1233],{"emptyLinePlaceholder":1173},[121,6030,6031,6034,6036,6038,6041],{"class":123,"line":143},[121,6032,6033],{"class":1243},"OLD",[121,6035,1247],{"class":517},[121,6037,1822],{"class":131},[121,6039,6040],{"class":517},"pwd",[121,6042,1834],{"class":131},[121,6044,6045],{"class":123,"line":151},[121,6046,1233],{"emptyLinePlaceholder":1173},[121,6048,6049,6052,6054,6057],{"class":123,"line":326},[121,6050,6051],{"class":517},"cd",[121,6053,1909],{"class":131},[121,6055,6056],{"class":5128},"$1",[121,6058,1749],{"class":131},[121,6060,6061,6063,6065,6067,6069,6071,6073],{"class":123,"line":335},[121,6062,1630],{"class":789},[121,6064,1633],{"class":381},[121,6066,3172],{"class":917},[121,6068,1692],{"class":517},[121,6070,3177],{"class":285},[121,6072,1698],{"class":381},[121,6074,1642],{"class":789},[121,6076,6077],{"class":123,"line":343},[121,6078,6079],{"class":517},"    exit\n",[121,6081,6082],{"class":123,"line":352},[121,6083,1676],{"class":789},[121,6085,6086],{"class":123,"line":484},[121,6087,1233],{"emptyLinePlaceholder":1173},[121,6089,6090,6093,6095,6097,6099],{"class":123,"line":504},[121,6091,6092],{"class":1243},"THIS",[121,6094,1247],{"class":517},[121,6096,1822],{"class":131},[121,6098,6040],{"class":517},[121,6100,1834],{"class":131},[121,6102,6103,6106,6108,6110,6112,6114,6117],{"class":123,"line":514},[121,6104,6105],{"class":1243},"BASE",[121,6107,1247],{"class":517},[121,6109,1822],{"class":131},[121,6111,3612],{"class":127},[121,6113,1909],{"class":131},[121,6115,6116],{"class":1243},"$THIS",[121,6118,5306],{"class":131},[121,6120,6121],{"class":123,"line":521},[121,6122,1233],{"emptyLinePlaceholder":1173},[121,6124,6125,6127,6130,6133],{"class":123,"line":532},[121,6126,1660],{"class":517},[121,6128,6129],{"class":131}," \"Ouverture de ",[121,6131,6132],{"class":1243},"$BASE",[121,6134,1749],{"class":131},[121,6136,6137],{"class":123,"line":542},[121,6138,1233],{"emptyLinePlaceholder":1173},[121,6140,6141,6143,6146,6148,6151,6153],{"class":123,"line":552},[121,6142,4973],{"class":789},[121,6144,6145],{"class":1243}," path",[121,6147,3571],{"class":789},[121,6149,6150],{"class":131}," *",[121,6152,3597],{"class":381},[121,6154,3600],{"class":789},[121,6156,6157,6160,6162,6164,6166,6168,6170,6173,6175,6177],{"class":123,"line":562},[121,6158,6159],{"class":789},"    if",[121,6161,1633],{"class":381},[121,6163,3545],{"class":517},[121,6165,1909],{"class":131},[121,6167,6116],{"class":1243},[121,6169,239],{"class":131},[121,6171,6172],{"class":1243},"$path",[121,6174,1740],{"class":131},[121,6176,1698],{"class":381},[121,6178,1642],{"class":789},[121,6180,6181,6184,6186,6188,6190,6192],{"class":123,"line":572},[121,6182,6183],{"class":5128},"        $0",[121,6185,1909],{"class":131},[121,6187,6116],{"class":1243},[121,6189,239],{"class":131},[121,6191,6172],{"class":1243},[121,6193,1749],{"class":131},[121,6195,6196],{"class":123,"line":1350},[121,6197,6198],{"class":789},"    fi\n",[121,6200,6201],{"class":123,"line":1361},[121,6202,5003],{"class":789},[121,6204,6205],{"class":123,"line":1372},[121,6206,1233],{"emptyLinePlaceholder":1173},[121,6208,6209,6211,6214,6216],{"class":123,"line":1383},[121,6210,1660],{"class":517},[121,6212,6213],{"class":131}," \"Traitement de ",[121,6215,6132],{"class":1243},[121,6217,1749],{"class":131},[121,6219,6220,6222,6225,6228,6230],{"class":123,"line":1389},[121,6221,908],{"class":127},[121,6223,6224],{"class":1243}," $BASE",[121,6226,6227],{"class":131},".m3u",[121,6229,4572],{"class":381},[121,6231,3159],{"class":131},[121,6233,6234],{"class":123,"line":1400},[121,6235,1233],{"emptyLinePlaceholder":1173},[121,6237,6238,6240,6242,6244,6247,6250,6253,6256,6258],{"class":123,"line":1405},[121,6239,4973],{"class":789},[121,6241,6145],{"class":1243},[121,6243,3571],{"class":789},[121,6245,6246],{"class":131}," *.mp3",[121,6248,6249],{"class":131}," *.ogg",[121,6251,6252],{"class":131}," *.wma",[121,6254,6255],{"class":131}," *.avi",[121,6257,3597],{"class":381},[121,6259,3600],{"class":789},[121,6261,6262,6264,6267,6269,6272,6275,6277],{"class":123,"line":1411},[121,6263,4990],{"class":517},[121,6265,6266],{"class":1243}," $path",[121,6268,4724],{"class":381},[121,6270,6271],{"class":127},"grep",[121,6273,6274],{"class":517}," \\*",[121,6276,3156],{"class":381},[121,6278,3159],{"class":131},[121,6280,6281,6283,6285,6287,6289,6291,6293],{"class":123,"line":1422},[121,6282,6159],{"class":789},[121,6284,1633],{"class":381},[121,6286,3172],{"class":917},[121,6288,3729],{"class":517},[121,6290,1695],{"class":285},[121,6292,1698],{"class":381},[121,6294,1642],{"class":789},[121,6296,6297,6299,6302,6304,6306,6308,6311,6313,6316,6319,6321],{"class":123,"line":1433},[121,6298,2115],{"class":517},[121,6300,6301],{"class":1243}," $THIS",[121,6303,239],{"class":131},[121,6305,6172],{"class":1243},[121,6307,4724],{"class":381},[121,6309,6310],{"class":127},"sed",[121,6312,5049],{"class":285},[121,6314,6315],{"class":131}," \"s\u002F\\\u002Fmedia\\\u002Fmusic\u002Fhttp\\:\\\u002F\\\u002F192\\.168\\.101\\.7\\:8001\u002Fg\"",[121,6317,6318],{"class":381}," >> ",[121,6320,6132],{"class":1243},[121,6322,6323],{"class":131},".m3u\n",[121,6325,6326],{"class":123,"line":1444},[121,6327,6198],{"class":789},[121,6329,6330],{"class":123,"line":1455},[121,6331,5003],{"class":789},[121,6333,6334],{"class":123,"line":1460},[121,6335,1233],{"emptyLinePlaceholder":1173},[121,6337,6338,6340,6343,6345],{"class":123,"line":1466},[121,6339,1660],{"class":517},[121,6341,6342],{"class":131}," \"Sortie de ",[121,6344,6132],{"class":1243},[121,6346,1749],{"class":131},[96,6348,6350],{"id":6349},"script-pour-gérer-les-documents-latex","Script pour gérer les documents latex",[12,6352,6353,6354,6357,6358,6361,6362,660],{},"Ce script date de quelques temps quand je devais générer des documents\ndifférents à partir d'un même document ",[16,6355,6356],{},"LaTeX",".Il utilise différentes\ncommandes pour cela, et permet aussi de nettoyer le dossier. Une sorte\nde ",[16,6359,6360],{},"Makefile"," à la mode ",[16,6363,117],{},[113,6365,6367],{"className":115,"code":6366,"language":117,"meta":32,"style":32},"#!\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",[50,6368,6369,6373,6377,6394,6401,6410,6414,6418,6426,6436,6440,6450,6457,6473,6480,6493,6500,6514,6521,6534,6541,6554,6561,6599,6606,6616,6625,6634,6643,6652,6663,6670,6681,6688,6698,6709,6716,6725,6736,6743,6751,6762,6769,6789,6796,6805,6815,6822,6839,6846,6855,6865,6872,6880,6894,6901,6910,6918,6928,6935,6944,6954,6961,6970,6980],{"__ignoreMap":32},[121,6370,6371],{"class":123,"line":124},[121,6372,1520],{"class":778},[121,6374,6375],{"class":123,"line":135},[121,6376,1233],{"emptyLinePlaceholder":1173},[121,6378,6379,6381,6383,6385,6387,6390,6392],{"class":123,"line":143},[121,6380,1630],{"class":789},[121,6382,1633],{"class":381},[121,6384,1689],{"class":917},[121,6386,4585],{"class":517},[121,6388,6389],{"class":285}," 2",[121,6391,1698],{"class":381},[121,6393,1642],{"class":789},[121,6395,6396,6398],{"class":123,"line":151},[121,6397,4990],{"class":517},[121,6399,6400],{"class":131}," \"Il faut le nom du fichier et de la sortie\"\n",[121,6402,6403,6406,6408],{"class":123,"line":326},[121,6404,6405],{"class":517},"    exit",[121,6407,1695],{"class":285},[121,6409,2589],{"class":381},[121,6411,6412],{"class":123,"line":335},[121,6413,1676],{"class":789},[121,6415,6416],{"class":123,"line":343},[121,6417,1233],{"emptyLinePlaceholder":1173},[121,6419,6420,6422,6424],{"class":123,"line":352},[121,6421,3844],{"class":1243},[121,6423,1247],{"class":517},[121,6425,5129],{"class":5128},[121,6427,6428,6431,6433],{"class":123,"line":484},[121,6429,6430],{"class":1243},"DEST",[121,6432,1247],{"class":517},[121,6434,6435],{"class":5128},"$2\n",[121,6437,6438],{"class":123,"line":504},[121,6439,1233],{"emptyLinePlaceholder":1173},[121,6441,6442,6445,6448],{"class":123,"line":514},[121,6443,6444],{"class":789},"case",[121,6446,6447],{"class":1243}," $DEST",[121,6449,3901],{"class":789},[121,6451,6452,6455],{"class":123,"line":521},[121,6453,6454],{"class":1243},"    cleanPDF",[121,6456,3910],{"class":381},[121,6458,6459,6462,6464,6467,6470],{"class":123,"line":532},[121,6460,6461],{"class":127},"        rm",[121,6463,911],{"class":285},[121,6465,6466],{"class":1243}," $NAME",[121,6468,6469],{"class":131},".pdf",[121,6471,6472],{"class":381}," ;;\n",[121,6474,6475,6478],{"class":123,"line":542},[121,6476,6477],{"class":1243},"    cleanTXT",[121,6479,3910],{"class":381},[121,6481,6482,6484,6486,6488,6491],{"class":123,"line":552},[121,6483,6461],{"class":127},[121,6485,911],{"class":285},[121,6487,6466],{"class":1243},[121,6489,6490],{"class":131},".txt",[121,6492,6472],{"class":381},[121,6494,6495,6498],{"class":123,"line":562},[121,6496,6497],{"class":1243},"    cleanPS",[121,6499,3910],{"class":381},[121,6501,6502,6504,6506,6508,6511],{"class":123,"line":572},[121,6503,6461],{"class":127},[121,6505,911],{"class":285},[121,6507,6466],{"class":1243},[121,6509,6510],{"class":131},".ps",[121,6512,6513],{"class":381},"  ;;\n",[121,6515,6516,6519],{"class":123,"line":1350},[121,6517,6518],{"class":1243},"    cleanDVI",[121,6520,3910],{"class":381},[121,6522,6523,6525,6527,6529,6532],{"class":123,"line":1361},[121,6524,6461],{"class":127},[121,6526,911],{"class":285},[121,6528,6466],{"class":1243},[121,6530,6531],{"class":131},".dvi",[121,6533,6472],{"class":381},[121,6535,6536,6539],{"class":123,"line":1372},[121,6537,6538],{"class":1243},"    cleanHTML",[121,6540,3910],{"class":381},[121,6542,6543,6545,6547,6549,6552],{"class":123,"line":1383},[121,6544,6461],{"class":127},[121,6546,911],{"class":285},[121,6548,6466],{"class":1243},[121,6550,6551],{"class":131},".html",[121,6553,6472],{"class":381},[121,6555,6556,6559],{"class":123,"line":1389},[121,6557,6558],{"class":1243},"    cleanTEX",[121,6560,3910],{"class":381},[121,6562,6563,6565,6567,6569,6572,6574,6577,6579,6582,6584,6587,6589,6592,6594,6597],{"class":123,"line":1400},[121,6564,6461],{"class":127},[121,6566,911],{"class":285},[121,6568,6150],{"class":917},[121,6570,6571],{"class":131},".log",[121,6573,6150],{"class":917},[121,6575,6576],{"class":131},".toc",[121,6578,6150],{"class":917},[121,6580,6581],{"class":131},".htoc",[121,6583,6150],{"class":917},[121,6585,6586],{"class":131},".aux",[121,6588,6150],{"class":917},[121,6590,6591],{"class":131},".haux",[121,6593,6150],{"class":917},[121,6595,6596],{"class":131},"~",[121,6598,6472],{"class":381},[121,6600,6601,6604],{"class":123,"line":1405},[121,6602,6603],{"class":1243},"    clean",[121,6605,3910],{"class":381},[121,6607,6608,6611,6613],{"class":123,"line":1411},[121,6609,6610],{"class":127},"        glatex.sh",[121,6612,6466],{"class":1243},[121,6614,6615],{"class":131}," cleanTEX\n",[121,6617,6618,6620,6622],{"class":123,"line":1422},[121,6619,6610],{"class":127},[121,6621,6466],{"class":1243},[121,6623,6624],{"class":131}," cleanDVI\n",[121,6626,6627,6629,6631],{"class":123,"line":1433},[121,6628,6610],{"class":127},[121,6630,6466],{"class":1243},[121,6632,6633],{"class":131}," cleanPS\n",[121,6635,6636,6638,6640],{"class":123,"line":1444},[121,6637,6610],{"class":127},[121,6639,6466],{"class":1243},[121,6641,6642],{"class":131}," cleanTXT\n",[121,6644,6645,6647,6649],{"class":123,"line":1455},[121,6646,6610],{"class":127},[121,6648,6466],{"class":1243},[121,6650,6651],{"class":131}," cleanPDF\n",[121,6653,6654,6656,6658,6661],{"class":123,"line":1460},[121,6655,6610],{"class":127},[121,6657,6466],{"class":1243},[121,6659,6660],{"class":131}," cleanHTML",[121,6662,6472],{"class":381},[121,6664,6665,6668],{"class":123,"line":1466},[121,6666,6667],{"class":1243},"    mrproper",[121,6669,3910],{"class":381},[121,6671,6672,6674,6676,6679],{"class":123,"line":1477},[121,6673,6610],{"class":127},[121,6675,6466],{"class":1243},[121,6677,6678],{"class":131}," clean",[121,6680,6472],{"class":381},[121,6682,6683,6686],{"class":123,"line":1488},[121,6684,6685],{"class":1243},"    _dvi",[121,6687,3910],{"class":381},[121,6689,6690,6693,6695],{"class":123,"line":1499},[121,6691,6692],{"class":127},"        pslatex",[121,6694,6466],{"class":1243},[121,6696,6697],{"class":131},".tex\n",[121,6699,6700,6702,6704,6707],{"class":123,"line":1721},[121,6701,6692],{"class":127},[121,6703,6466],{"class":1243},[121,6705,6706],{"class":131},".tex",[121,6708,6472],{"class":381},[121,6710,6711,6714],{"class":123,"line":1726},[121,6712,6713],{"class":1243},"    xdvi",[121,6715,3910],{"class":381},[121,6717,6718,6720,6722],{"class":123,"line":1732},[121,6719,6610],{"class":127},[121,6721,6466],{"class":1243},[121,6723,6724],{"class":131}," _dvi\n",[121,6726,6727,6730,6732,6734],{"class":123,"line":1752},[121,6728,6729],{"class":127},"        xdvi",[121,6731,6466],{"class":1243},[121,6733,6531],{"class":131},[121,6735,6472],{"class":381},[121,6737,6738,6741],{"class":123,"line":1769},[121,6739,6740],{"class":1243},"    dvi",[121,6742,3910],{"class":381},[121,6744,6745,6747,6749],{"class":123,"line":1786},[121,6746,6610],{"class":127},[121,6748,6466],{"class":1243},[121,6750,6724],{"class":131},[121,6752,6753,6755,6757,6760],{"class":123,"line":1803},[121,6754,6610],{"class":127},[121,6756,6466],{"class":1243},[121,6758,6759],{"class":131}," cleanTEX",[121,6761,6472],{"class":381},[121,6763,6764,6767],{"class":123,"line":1808},[121,6765,6766],{"class":1243},"    _html",[121,6768,3910],{"class":381},[121,6770,6771,6774,6777,6780,6783,6785,6787],{"class":123,"line":1814},[121,6772,6773],{"class":127},"        hevea",[121,6775,6776],{"class":285}," -francais",[121,6778,6779],{"class":285}," -fix",[121,6781,6782],{"class":285}," -noiso",[121,6784,6466],{"class":1243},[121,6786,6706],{"class":131},[121,6788,6472],{"class":381},[121,6790,6791,6794],{"class":123,"line":1837},[121,6792,6793],{"class":1243},"    html",[121,6795,3910],{"class":381},[121,6797,6798,6800,6802],{"class":123,"line":1856},[121,6799,6610],{"class":127},[121,6801,6466],{"class":1243},[121,6803,6804],{"class":131}," _html\n",[121,6806,6807,6809,6811,6813],{"class":123,"line":1875},[121,6808,6610],{"class":127},[121,6810,6466],{"class":1243},[121,6812,6759],{"class":131},[121,6814,6472],{"class":381},[121,6816,6817,6820],{"class":123,"line":1894},[121,6818,6819],{"class":1243},"    _txt",[121,6821,3910],{"class":381},[121,6823,6824,6826,6828,6830,6833,6835,6837],{"class":123,"line":1899},[121,6825,6773],{"class":127},[121,6827,6776],{"class":285},[121,6829,6779],{"class":285},[121,6831,6832],{"class":285}," -text",[121,6834,6466],{"class":1243},[121,6836,6706],{"class":131},[121,6838,6472],{"class":381},[121,6840,6841,6844],{"class":123,"line":1921},[121,6842,6843],{"class":1243},"    txt",[121,6845,3910],{"class":381},[121,6847,6848,6850,6852],{"class":123,"line":1929},[121,6849,6610],{"class":127},[121,6851,6466],{"class":1243},[121,6853,6854],{"class":131}," _txt\n",[121,6856,6857,6859,6861,6863],{"class":123,"line":1937},[121,6858,6610],{"class":127},[121,6860,6466],{"class":1243},[121,6862,6759],{"class":131},[121,6864,6472],{"class":381},[121,6866,6867,6870],{"class":123,"line":1942},[121,6868,6869],{"class":1243},"    _ps",[121,6871,3910],{"class":381},[121,6873,6874,6876,6878],{"class":123,"line":1947},[121,6875,6610],{"class":127},[121,6877,6466],{"class":1243},[121,6879,6724],{"class":131},[121,6881,6882,6885,6888,6890,6892],{"class":123,"line":1958},[121,6883,6884],{"class":127},"        dvips",[121,6886,6887],{"class":285}," -Ppdf",[121,6889,6466],{"class":1243},[121,6891,6531],{"class":131},[121,6893,6472],{"class":381},[121,6895,6896,6899],{"class":123,"line":1974},[121,6897,6898],{"class":1243},"    ps",[121,6900,3910],{"class":381},[121,6902,6903,6905,6907],{"class":123,"line":1995},[121,6904,6610],{"class":127},[121,6906,6466],{"class":1243},[121,6908,6909],{"class":131}," _ps\n",[121,6911,6912,6914,6916],{"class":123,"line":2000},[121,6913,6610],{"class":127},[121,6915,6466],{"class":1243},[121,6917,6624],{"class":131},[121,6919,6920,6922,6924,6926],{"class":123,"line":2006},[121,6921,6610],{"class":127},[121,6923,6466],{"class":1243},[121,6925,6759],{"class":131},[121,6927,6472],{"class":381},[121,6929,6930,6933],{"class":123,"line":2012},[121,6931,6932],{"class":1243},"    _pdf",[121,6934,3910],{"class":381},[121,6936,6937,6940,6942],{"class":123,"line":2018},[121,6938,6939],{"class":127},"        pdflatex",[121,6941,6466],{"class":1243},[121,6943,6697],{"class":131},[121,6945,6946,6948,6950,6952],{"class":123,"line":2024},[121,6947,6939],{"class":127},[121,6949,6466],{"class":1243},[121,6951,6706],{"class":131},[121,6953,6472],{"class":381},[121,6955,6956,6959],{"class":123,"line":2029},[121,6957,6958],{"class":1243},"    pdf",[121,6960,3910],{"class":381},[121,6962,6963,6965,6967],{"class":123,"line":2035},[121,6964,6610],{"class":127},[121,6966,6466],{"class":1243},[121,6968,6969],{"class":131}," _pdf\n",[121,6971,6972,6974,6976,6978],{"class":123,"line":2041},[121,6973,6610],{"class":127},[121,6975,6466],{"class":1243},[121,6977,6759],{"class":131},[121,6979,6472],{"class":381},[121,6981,6982],{"class":123,"line":2047},[121,6983,6984],{"class":789},"esac\n",[1109,6986,6987],{},"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":32,"searchDepth":135,"depth":135,"links":6989},[6990,6991,6992,6993,6994,6995,6996,6997],{"id":4916,"depth":143,"text":4917},{"id":5019,"depth":143,"text":5020},{"id":5085,"depth":143,"text":5086},{"id":5417,"depth":143,"text":5418},{"id":5544,"depth":143,"text":5545},{"id":5846,"depth":143,"text":5847},{"id":5994,"depth":143,"text":5995},{"id":6349,"depth":143,"text":6350},"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":9,"value":7001},[7002,7008],[12,7003,4902,7004,4906,7006,4910],{},[16,7005,4905],{},[50,7007,4909],{},[12,7009,4913],{},{},"\u002Fpost\u002Fscript-linux",{"title":4897,"description":6999},"script-linux","posts\u002FSysAdmin\u002F2006-08-20-script-linux",[1179,4210],"qYYuAxXiRSKJnYilIVY9b-rBpo_YbAqe2w9ZkHlKm6k",1777849586949]