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