{"id":177,"date":"2009-06-05T10:17:30","date_gmt":"2009-06-05T08:17:30","guid":{"rendered":"http:\/\/bjoern-b.de\/wordpress\/?p=177"},"modified":"2009-06-11T20:42:31","modified_gmt":"2009-06-11T18:42:31","slug":"backup-script-mit-dar","status":"publish","type":"post","link":"https:\/\/www.bjoern-b.de\/wordpress\/?p=177","title":{"rendered":"Backup Script mit DAR"},"content":{"rendered":"<div class=\"twoclick_social_bookmarks_post_177 social_share_privacy clearfix 1.6.4 locale-de_DE sprite-de_DE\"><\/div><div class=\"twoclick-js\"><script type=\"text\/javascript\">\/* <![CDATA[ *\/\njQuery(document).ready(function($){if($('.twoclick_social_bookmarks_post_177')){$('.twoclick_social_bookmarks_post_177').socialSharePrivacy({\"txt_help\":\"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter, Flattr, Xing, t3n, LinkedIn, Pinterest oder Google eventuell ins Ausland \\u00fcbertragen und unter Umst\\u00e4nden auch dort gespeichert. N\\u00e4heres erfahren Sie durch einen Klick auf das <em>i<\\\/em>.\",\"settings_perma\":\"Dauerhaft aktivieren und Daten\\u00fcber-tragung zustimmen:\",\"info_link\":\"http:\\\/\\\/www.heise.de\\\/ct\\\/artikel\\\/2-Klicks-fuer-mehr-Datenschutz-1333879.html\",\"uri\":\"https:\\\/\\\/www.bjoern-b.de\\\/wordpress\\\/?p=177\",\"post_id\":177,\"post_title_referrer_track\":\"Backup+Script+mit+DAR\",\"display_infobox\":\"on\"});}});\n\/* ]]> *\/<\/script><\/div><p>Vor einiger Zeit habe ich ein kleines Backup Script geschrieben, welches sich des sch\u00f6nen Programmes <a href=\"http:\/\/dar.linux.free.fr\/\">DAR<\/a> bedient.<\/p>\n<p>Das Script ist so gedacht, dass ganze Verzeichnisse in .dar Dateien zusammengefasst und verschl\u00fcsselt werden. Diese werden zuerst in einem lokalen Verzeichnis zwischengespeichert und nach der Fertigstellung auf einen FTP-Server hochgeladen. Nach erfolgreichem Transfer wird die lokale Datei gel\u00f6scht.<\/p>\n<p>Ab dem zweiten Durchlauf, also Start des Scripts, werden &#8222;differentielle&#8220; Backups erstellt. Anhand des vorher angelegten &#8222;Catalogues&#8220;, welcher, im Gegensatz zur eigentlichen Backup Datei, noch lokal im Dateisystem belassen wird, ensteht eine neue Backup Datei die nur noch die Unterschiede zur Vorherigen enth\u00e4lt.<\/p>\n<pre lang=\"bash\">#!\/bin\/bash\r\n\r\nKEY=\"foobar\"\r\nDIRS=\"\/etc \/home\/bjoern\"\r\nBACKUP_DIR=\"\/backup\/ftp-raw\"\r\nBACKUP_TEMP=\"\/backup\/temp\"\r\nBACKUP_CATALOGUES=\"\/backup\/catalogues\"\r\nDATE_STRING=`date +\"%Y-%m-%d-%H-%M\"`\r\n\r\nFTP_USER=\"foo\"\r\nFTP_PASS=\"bar\"\r\nFTP_IP=\"123.123.123.123\"\r\n\r\ndate\r\n\r\nif ! test -e $BACKUP_DIR;then\r\n\u00a0\u00a0\u00a0\u00a0mkdir -p $BACKUP_DIR\r\nfi\r\n\r\nif ! test -e $BACKUP_TEMP;then\r\n\u00a0\u00a0\u00a0\u00a0mkdir -p $BACKUP_TEMP\r\nfi\r\n\r\nif ! test -e $BACKUP_CATALOGUES;then\r\n\u00a0\u00a0\u00a0\u00a0mkdir -p $BACKUP_CATALOGUES\r\nfi\r\n\r\nfor i in $DIRS\r\ndo\r\n\u00a0\u00a0\u00a0\u00a0echo \"Backing up $i\"\r\n\u00a0\u00a0\u00a0\u00a0NAME=`echo $i | sed -s \"s\/\\\/\/_\/g\"`\r\n\u00a0\u00a0\u00a0\u00a0LATEST=`ls $BACKUP_CATALOGUES\/*.1.dar 2>\/dev\/null | grep $NAME | tail -n1| sed -s \"s\/\\.1\\.dar\/\/\"`\r\n\u00a0\u00a0\u00a0\u00a0if [[ $LATEST ]];then\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NAME_NEW=\"$NAME-$DATE_STRING-diff\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Latest was $LATEST\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dar -K bf:$KEY -R $i -c $BACKUP_TEMP\/$NAME_NEW -A $LATEST -X *.log\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if [[ $? -eq 0 || $? -eq 11 ]];then\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Backup of $i done.\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Backup failed.\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0continue\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fi\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dar -J bf:$KEY -C $BACKUP_CATALOGUES\/$NAME_NEW-catalogue -A $BACKUP_TEMP\/$NAME_NEW\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if [[ $? -eq 0 || $? -eq 11 ]];then\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Catalogue created.\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0continue\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Catalogue failed.\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fi\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0lftp ftp:\/\/$FTP_USER:$FTP_PASS@$FTP_IP\/ -e \"put $BACKUP_TEMP\/$NAME_NEW.1.dar;exit\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if [[ $? -eq 0 ]];then\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0rm -f $BACKUP_TEMP\/$NAME_NEW.1.dar\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fi\r\n\u00a0\u00a0\u00a0\u00a0else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NAME_NEW=\"$NAME-$DATE_STRING\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"No previous backup found\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dar -K bf:$KEY -R $i -c $BACKUP_TEMP\/$NAME_NEW -X *.log\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if [[ $? -eq 0 || $? -eq 11 ]];then\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Backup of $i done.\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Backup failed.\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0continue\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fi\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dar -J bf:$KEY -C $BACKUP_CATALOGUES\/$NAME_NEW-catalogue -A $BACKUP_TEMP\/$NAME_NEW\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if [[ $? -eq 0 || $? -eq 11 ]];then\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Catalogue created.\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0continue\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Catalogue failed.\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fi\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0lftp ftp:\/\/$FTP_USER:$FTP_PASS@$FTP_IP\/ -e \"put $BACKUP_TEMP\/$NAME_NEW.1.dar;exit\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if [[ $? -eq 0 ]];then\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0rm -f $BACKUP_TEMP\/$NAME_NEW.1.dar\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fi\r\n\u00a0\u00a0\u00a0\u00a0fi\r\ndone<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Vor einiger Zeit habe ich ein kleines Backup Script geschrieben, welches sich des sch\u00f6nen Programmes DAR bedient. Das Script ist so gedacht, dass ganze Verzeichnisse in .dar Dateien zusammengefasst und verschl\u00fcsselt werden. Diese werden zuerst in einem lokalen Verzeichnis zwischengespeichert &hellip; <a href=\"https:\/\/www.bjoern-b.de\/wordpress\/?p=177\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-177","post","type-post","status-publish","format-standard","hentry","category-computer"],"_links":{"self":[{"href":"https:\/\/www.bjoern-b.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/177","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bjoern-b.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bjoern-b.de\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bjoern-b.de\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bjoern-b.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=177"}],"version-history":[{"count":10,"href":"https:\/\/www.bjoern-b.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/177\/revisions"}],"predecessor-version":[{"id":210,"href":"https:\/\/www.bjoern-b.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/177\/revisions\/210"}],"wp:attachment":[{"href":"https:\/\/www.bjoern-b.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bjoern-b.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=177"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bjoern-b.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}