 Okay, fangen wir mal an. Also, ich möchte euch heute was über Ethik erzählen. Ethik ist eine Back-up-Software und der Spruch, was da drunter steht, The Holy Grail of Back-up-Software, das ist also nicht von mir, denn habe ich einen Blog-Eintrag von einem Griechen namens Davros gefunden. Also, ich finde das Ding recht erstaunlich und er hat es wohl auch recht erstaunlich gefunden. Es ist allerdings noch nicht so bekannt, deshalb habe ich gedacht, mache ich mal hier ein Talk drüber. Mein Name ist Thomas Waldmann, Hackerspace Stuttgart, Shack Space. Ja, ich programmiere recht vielen Pfeifen und daher, weil das in Pfeifen ist, die Software habe ich mir die auch genauer angeschaut. Zum Featureset vielleicht mal. Das ist immer so recht wichtig bei Back-up-Software, kann die alles, was ich überhaupt will. Und Back-up ist natürlich so ein besonders heikles Thema, wer braucht schon Back-up, jeder braucht immer nur Restor. Und von daher ist es halt wichtig, dass eine Back-up-Software halt irgendwie simpel ist und auch irgendwie schnell geht oder so, sobald es irgendwie kompliziert wird und man da irgendwelche Mühen damit hat, dann macht es halt keiner. Und dann steht man halt blöd da, wenn man mal so ein Restor braucht. Was auch sehr nützlich ist, wenn ich keine Daten irgendwie unbeabsichtigt doppelt abspeiche, es reicht eigentlich, wenn ich eine bestimmte Version einer Datei genau einmal von meinem Back-up-Medium wieder runter kriege, die muss dort nicht zehnmal liegen. Und ich will sogar vielleicht die Deplication noch ein bisschen feinkranularer haben. Also nicht nur so komplette Dateien erkennen, wenn sie gleich sind, sondern auch praktisch, wenn die Dateien nur so minimal verändert wurde, dass ich dann erkennen kann, okay, das meiste von diesen 100 Gigabyte ist immer noch das gleiche und nur dieses eine Megabyte hat sich geändert. Also man will De-duplicierung haben. Außerdem natürlich Kompression, wenn ich dann auf ein Text Dateien habe, die kann ich in der Regel so auf die Hälfte oder auf ein Drittel komprimieren. Will ich natürlich auch nicht in der entpackten Form speichern, sondern komprimiert. Und so als Kryptonerts will man natürlich auch Encryption haben. Also das Zeug soll verschlüsselt sein, dass falls mal irgendwie das Back-up-Medium in die Hände von Fremden kommt, also das keine USB-Plate sein, die irgendwo verloren wird. Das kann aber auch irgendwo ein Server, irgendwo in der Cloud sein oder bei einem Provider. Ich will natürlich, dass da keiner in meine Back-ups rankommt, der nicht den Key hat. Also das soll nur ich dran kommen oder jeder, der den Key hat. Das Authenticated by Authenticated Encryption, das bedeutet auch noch zusätzlich, dass mir keiner irgendwo an dem Cypher-Text irgendwie rumfingern kann, um mich damit irgendwie reinzulegen. Also es wird praktisch zusätzlich noch signiert. Hanno hat es ja vorhin auch erwähnt, also dass man praktisch erst verschlüsselt und dann nochmal eine Signatur drüber macht, dass einem keiner irgendwie im Cypher-Text rumfingert. Hat bei Back-ups natürlich auch noch die Auswirkung, dass falls mein Back-up Server mal irgendwie so ein Plattenproblem hat und mein Back-up eigentlich gar nicht mehr in Ordnung ist, dass ich das erkennen kann, dass ich nicht so BitRot habe und ich merke es gar nicht. Ich merke es dann erst, wenn ich es restore draufgespielt habe und merke halt, hoppla, die Daten sind nicht mehr so, gar nicht mehr so, wie ich sie erwartet habe. Dann, was wohl auch noch durchaus ein besonderes Feature ist, im Vergleich zu anderer Back-up Software, man kann also alte Back-ups auch löschen. Ich habe kürzlich erfahren, dass es irgendeine durchaus gute Back-up Software gibt, die da gerade ein Problem damit hat, dass man irgendwie alte Back-ups nicht so einfach löschen kann, dass man dann irgendwie den Ordner irgendwie umbenennen muss und in den Neuen dann reinbacken muss und dann erst mal irgendwie alles doppelt hat und dann erst später den Alten wegschmeißt. Und das ist also keine Ural-Software, sondern durchaus moderne und auch recht gute, die eigentlich ansonsten ähnliche Features hat. Also, wie gesagt, das Etik kann auch alte Back-ups ausdünnen. Ich mache praktisch jeden Tag mein Back-up, aber so, wenn ich ein paar Monate zurückgehe, reicht mir eigentlich, wenn ich jeden Monat dann eins habe und wenn ich Jahre zurückgehe, reicht es vielleicht, wenn ich alle drei Monate eins habe. Das ist ja nur so für den Fall der Fälle, dass ich mal irgendwas noch brauche, wo ich früher mal hatte. Ansonsten will man eigentlich immer eher die neuen Back-ups haben. Was auch nur ein nettes Feature ist, das Etik hat recht simple Backend-Struktur. Also, es ist im Prinzip ein Key-Value-Store. Ich tue eigentlich ganz einfach nur in einem bestimmten Schlüsselwert ein bestimmtes Datenpaket wegspeichern. Und das sieht man also so im Bereich NoSQL und Cloud Storage. Sieht man das ja relativ oft, dass da diese Key-Value Semantik implementiert wird, weil das halt so schön einfach ist. Und momentan implementiert ist also für lokales File-System so ein Store und ich kann auch über SSH auf einem Remote-Server in so ein Storage reinspeichern. Es wäre aber durchaus denkbar, dass man da auch andere Backends noch macht. Zum Featureset noch weiteres. Es ist frei, ein Open-Source-Software, BSD-License. Also, man kann so ziemlich alles damit anstellen, was man will. Es hat recht brauchbare Dokumentation. Wenn der irgendwo danach googelt nach Ethic und er findet irgendeinen Blog-Post von wegen der Doku, wäre schlecht. Das stimmt nicht mehr so ganz, als die Doku ist deutlich erweitert worden. Ihr findet es allerdings noch nicht im Master-Repository. Da ist immer noch ein Pull-Request offen. Wenn ihr aber in den einsten anderen Repos reinguckt, die ich nachher erwähne, da findet ihr also die Doku, wo schon gemirrt ist. Dann der Platform-Support ist relativ gut. Also so die ganzen POSIX-Plattformen, die sollten eigentlich entweder schon recht gut tun oder einfach zum Laufen zu bringen sein. Also Linux, BSDs, MacOS X und so sollte eigentlich recht gut funktionieren. Bei Windows hagelts vielleicht noch ein bisschen. Da müsste sich vielleicht mal jemand, der das braucht, sich draufstürzen. Mit Cygwin allerdings sollte es auch schon recht gut funktionieren. Allerdings nicht die Original-Version, auch in diesem anderen Repo. Auch noch sehr nett. Ich habe Extended Attribute-Support und ACL-Support. Also wenn ihr diese Spezialfeatures auf euren Dateisystemen benutzt, also auch das wird gesichert und auch wieder gleich restored. Ich habe auch View-Support, also ein Userspace-File-System, dass ich ein Backup, wo ich mal irgendwo gemacht habe, dass ich das quasi einfach mounten kann und dann mit meinem ganz normalen File-Manager einzelne Dateien oder Direktoris taggen kann und einfach rauskopieren kann und nicht das Ding darauf Kommando-Zelle zehnmal aufrufen muss. Also es ist auch sehr bequem. Bei Fuse muss man dazu sagen, das ist vor allem unter Linux gut brauchbar. Ich weiß nicht, vielleicht auch unter BSD. Unter MacOS X gibt es das Problem des OS X Fuse. Also die Fuse-Implementierung auf OS X, die ist schon ein paar Jahre hinten rein, was den Fuse-Standard angeht. Also das tut leider noch nicht, das liegt aber nicht am Attic, sondern mehr an dem OS X Fuse. Also wenn der anderen Draht dazu hat, dann sollte man vielleicht auch mal ein bisschen modernisieren, dann würde auch das unter MacOS X funktionieren. Zum Code-Kurz, das Ding ist so 91% in Python. Also ich habe mal Lock-Count drauf losgelassen. Also 91% Python 3 wohl gemerkt, nicht Python 2.x. Das ist also eines der wenigen Projekte, wo nur mit 3 funktioniert. Und der Glue-Code Richtung C ist in Siphon geschrieben. Also ähnlich gut lesbar wie Python, aber halt so ein bisschen mehr Low-Level. Und 9% sind C-Code. Das ist so der performancekritische Anteil. Also zum Beispiel dieser sogenannte Chunker, wo das Zeug in Häppchen zu hackt, da will man natürlich ein bisschen Speed haben. Insgesamt hat das Ding 6000 Code-Zahlen. Was für das, was es alles kann eigentlich erstaunlich wenig ist, aber das liegt halt in Python, weil das relativ High-Level ist alles. Und auch die C-Komponenten sieht man ja nicht so arg viel. Dependencies hat es auch nicht viele. Also Message-Pack zum Beispiel braucht man, aber das wird einfach halt mit draufgezogen. OpenSSL ist jetzt auch nicht so ungewöhnlich. Also das ist eigentlich kein Problem. Es gibt recht viele Unitests und Continuous Integration, also sobald er einen Pull-Request macht oder irgendwas sich im Repo ändert, wird es auch automatisch durchgetestet. Also das ist eigentlich ganz ordentlich so. Zur Security. Ich habe es vorhin schon erwähnt. Das Ding rechnet praktisch überall Signaturen drüber. Wenn man genau nachguckt, sind sogar zwei Signaturen im Spiel. Also einmal über den Plaintext und einmal über den Cyphertext. Also es ist extrem unwahrscheinlich, dass ich da nur ein Bit irgendwo verbiegen kann, ohne dass ihr es merkt. Also ihr wisst, ob euer Backup in Ordnung ist oder nicht. Das dient auch zur Authentifizierung, also dass man weiß, dass sich da nicht nur aus Versehen was geändert hat, man weiß auch, da hat keiner dran rumgefingert irgendwie. Einzige Ausnahme ist natürlich, wenn ihr das jetzt auf den Remote Host bei irgendeinem Provider Backup, wenn natürlich der Rechner unter dem Saal einer physikalischen Kontrolle ist, der kann natürlich den Rechner abklemmen oder euer Backup löschen. Aber das könnt ihr natürlich grundsätzlich nicht vermeiden. Sonst müsst ihr da nochmal ein Backup von eurem Backup machen. Also das hat prinzipielle Gründe. Aber es ist ausgeschlossen, dass irgendeiner an euren Dateien umfingert und da irgendwelche anderen Zahlen reinschreibt oder irgendwie sowas. Oder einfach nur auch liest, was da drin steht. Das Ganze verschlüsselt auch sehr gut. Also Vertraulichkeit ist auch sichergestellt. Ihr habt kein Problem, wenn euch ein Backup-Server oder eine Backup-Latte verloren geht, solange ihr es gerade in dem Moment nicht braucht. Obensoftware in Python, also das Ding kann reviewed werden. Wenn jemand da Lust drauf hat, wäre es auch toll, wenn das jemand reviewen würde. Also ein paar Leute haben schon ein bisschen drauf geschaut, aber ich denke mal, wir sind alles nicht Krypto-Spezialisten und auch nicht Pentest oder irgendwas. Also wenn da jemand draufschauen könnte auf die Krypto, auf die Security von dem Projekt, das wäre sicher positiv. Python hat so als Grundeigenschaft, aber zum Beispiel auch, dass da keine Buffer-Overflows gibt. Also mit dieser Art von Fehlern müsst ihr eigentlich nicht rechnen. Eine kleine Ausnahme sind natürlich diese 9% C-Code. Aber da das so recht übersichtlich ist, das sind ja nur 600, 700 Zeilen, ist das wahrscheinlich relativ sicher, dass da nichts Schlimmes passiert. Zur sonstigen Sicherheit, das Ding ist recht robust designt. Also wenn der praktisch neue Daten in den Backup-Repository reinspeichert, dann versucht er in der Regel so append only zu machen. Also er hängt Daten immer nur hinten ran. Also was er praktisch schon vorher gespeigert hatte, kann nicht plötzlich korrupt werden, weil der irgendwie einen Schreibvorgang abgebrochen wurde oder eine Internetverbindung abbrach oder irgendwie sowas. Und er macht auch Transaktionen. Also er macht ein paar Dinge und erst wenn er fertig ist, dann quasi wird das komplett in einen neuen Zustand überführt. Ansonsten habt er halt den letzten gültigen Zustand. Er macht auch alle fünf Minuten einen sogenannten Checkpoint. Also wenn ihr jetzt zum Beispiel ein Backup macht, über den langsamen DSL-Abstream irgendwo und die Leitung bricht euch weg, dann verliert ihr nicht die Daten, was er die letzten fünf Stunden gesichert hatte, sondern wahrscheinlich nur halt das, was die letzten fünf Minuten gesichert wurde. Das könnt ihr vielleicht verlieren. Aber die knapp fünf Stunden, die bleiben euch erhalten. Eine kleine Zusatzbemerkung muss man machen. Es wird allerdings nur zwischen Dateien gecheckpointed. Also wenn ihr eine große Datei mit dem Terabyte habt, da wird während die Datei gebackupt, wird leider kein Checkpoint momentan gemacht. Müsste man sich auch mal angucken, ob man das vielleicht besser machen kann. Aber solange eure Dateien nicht so wahnsinnig groß sind, ist es vielleicht auch ganz gut jetzt schon. Das Ethik verwendet eine Library, wo Messagepack heißt. Ist vielleicht nicht so bekannt, aber JSON kennen wahrscheinlich die meisten. Mit JSON kann man eine Datenstruktur einfach serialisieren. Und Messagepack ist sehr ähnlich, nur dass es mehr binary ist. Ich pack einfach eine Datenstruktur rein und das Ding serialisiert mit die. Da muss man natürlich beim Auspacken ein bisschen aufpassen, dass wenn da je einer umgefingert dran hätte, dass das Ding nicht sagt, jetzt kommen vier Milliarden Integers oder so, dass man dann der Speicher auf einmal explodiert. Also der Unpacker ist so gemacht, dass der genau weiß, ah, da können NU10-Werte kommen und der akzeptiert das dann nicht, wenn der einer ansagt, dass jetzt vier Milliarden oder so kommen. Also ich habe keine Memory-Denial-of-Service-Probleme. Zu den Cryptokies noch. Also das Ding macht auf Kleinzeit die Verschlüsselung, nicht erst auf dem Server. Also keine Daten verlassen euren Rechner ohne Verschlüsselung. Und es werden sowohl die Daten als auch die Metadaten verschlüsselt. Also man kann nicht in euer Backup reingucken und sehen, ah, die Datei heißt so, die Datei heißt so, Directory-Namen oder irgendwas. Man sieht da rein gar nichts. Man sieht im Prinzip nur durchnummerierte Dateien mit fast gleicher Länge und oben ist so eine kleine Konfig-Datei drin, wo ein paar banale Sachen drin stehen, aber eigentlich nichts wirklich Interessantes. Es werden auch mehrere Keys angelegt für verschiedene Zwecke. Also der hat einen Key für die Krypto, das ist AES. Der hat einen separaten Key für die Message Authentication Codes. Und er hat nochmal ein Key, was war das, ich glaube, für die ID-Hashes. Also der versucht sogar so, Seiteneffekte zu vermeiden, dass wenn ich vielleicht den gleichen Key für verschiedene Dinge benutzen würde und was blöd laufen, dass man da Rückschlüsse ziehen könnte, selbst das wird vermieden, indem einfach getrennte Keys verwendet werden. Merkt ihr normalerweise nicht, weil ihr eigentlich nur eine Passphrase eingebt und mit der Passphrase werden dann entweder diese drei Keys erzeugt oder es wird ein Key-Fall praktisch entschlüsselt. So ähnlich also wie wenn ihr euren SSH-Key mit einer Passphrase aufschaltet. Man kann also entweder sagen, dass wir kein Key haben, also ohne Verschlüsselung arbeiten, das wird natürlich auch unterstützt. Das ist übrigens auch der Default, also ein bisschen aufpassen. Also wenn ihr Krypto haben wollt, müsst ihr sagen, dass ihr es haben wollt. Man kann sagen, Passphrase only. Dann wird aus der Passphrase mit PBK.TF2 direkt praktisch ein Random Key erzeugt. Ist ein bisschen ungünstig, falls ihr irgendwie in einem Jahr später mal die Passphrase ändern wollt. Das würde dann nicht funktionieren. Wenn ihr dieses Passphrase protected Key-Fall zu verwenden, dann könnt ihr eure Passphrase auch ändern und die Keys in dem Key-Fall bleiben trotzdem gleich. Also ihr kennt vielleicht die Methode von Lux. Da wird es auch so ähnlich gemacht. Da wird praktisch ein Key verschlüsselt in diesem Lux-Sektor abgespeichert. Und eure Passphrase könnt ihr austauschen. Zu der Krypto, die verwendet wird, das sind also sogenannte IAAD-Seifers, authenticated encryption, additional or associated data. Also es besteht praktisch aus einem verschlüsselten Teil und einem Teil Daten, wo ich noch zusätzlich habe, die ich aber auch praktisch signieren will, dass mir keiner darin rumbastelt. Und es wird auch die empfohlene Reihenfolge verwendet, also erst verschlüsseln und dann praktisch die Prüfe somit rüber rechnen, also den Authentication Code, das mir keiner an den Kryptobits rumspielt. Es wird zwei Hauptverfahren. Also es ist immer AIS256, was verwendet wird. Das ist also bei AIS die stärkere Bitstärke. Oft wird ja auch AIS128 verwendet, aber hier in diesem Tool eigentlich immer gleich das 256er. Also da brauchen wir sich so nach normalem Ermessen heutzutage keine Sorgen machen, dass es irgendwie gebrochen wird. Und der eine Mode, das ist GCM, also Galua-Accounter-Mode. Das hat auch der Hannoverin ja erwähnt, dass das praktisch einer der besten schrittlichsten Modes ist. Mit einer kleinen Einschränkung, es gibt da so ein Paper, wo drinsteht, dass wenn man ein Key generiert und es ganz, ganz unglücklich läuft, dann gibt es wohl da irgendwelche Vorbehalte. Aber sagen wir so, das ist, wenn ich es recht gesehen habe, relativ unwahrscheinlich, dass dieser Fall eintritt. Also es ist leider nicht so ganz gold. Also streng genommen müsste man da nicht ein bisschen checken, wie der Key aussieht, ob das so einer ist oder nicht. G-Hash ist praktisch dieser Hash- beziehungsweise Message-Authentication-Code, der in diesem GCM-Verfahren verwendet wird. Der wird also auch einzeln wie eine Art Mac oder Hash verwendet. Der etwas altmodischere Seifer, was verwendet wird, ist AIS im Counter-Mode. Und praktisch zusätzlich in dem zweiten Pass wird dann auch eine H-Mack drüber gerechnet. Das ist praktisch halt, wenn man so ein IAD-Seifer von Hand zusammen baut, dass man halt erst Krypto macht und dann signiert. GCM macht das beides in einem Durchgang, ist also auch etwas schneller. Was mir sehr gut gefallen hat, ich habe mir den Source Code ein bisschen durchgeguckt und die Krypto hat eigentlich sehr gut ausgesehen. Also er hat nicht die Krypto selber gebaut, die kommt aus OpenSSL, also von daher starr schon mal keine besondere Gefahr, sag ich mal da, also unter der Voraussetzung ist halt das AIS in OpenSSL irgendwie richtig funktioniert. Aber er hat halt auch so Details beachtet, wie zum Beispiel, dass dieser Counter oder das schlechtzeitig der Initialisierungs-Vektor, der darf sich im Counter-Mode natürlich nie wiederholen. Sonst hat man ein Problem. Und in dem Ethik wird also der Counter praktisch nach dem Backup abgespeichert und beim Next Backup wird er praktisch dann weitergezählt. Also der fängt nicht wieder bei null an. Also selbst so je Feinheiten sind auch sehr gut beachtet worden. Er benutzt OpenSSL, also von daher, wenn es dann Probleme gibt, ist man nicht alleine wenigstens und das wird auch gefixt. Ein anderer Effekt von OpenSSL ist natürlich, das ist eine C-Implementierung, also die ist recht schnell und zusätzlich OpenSSL steuert auch eure Hardware-Krypto an, wenn ihr welche habt. Also wenn ihr zum Beispiel die Intel oder AMD-CPU so der letzten Jahre habt, dann wird also dieses AIS-NI benutzt und auch dieses etwas komische Ding mit dieser Abkürzung. Das sind also zwei Sachen, die man beispielsweise für diesen Galua-Counter-Mode braucht, dass der halt effizient gerechnet werden kann. Und dann ist also diese Krypto auch nicht eine Bremse irgendwo, sondern ihr könnt die einfach einschalten und das Ding läuft immer noch fast genauso schnell. Also sind zwei CPU-Instruktionen praktisch, wo das Ganze beschleunigen. Kompressionen habe ich vorhin drauf, gibt es auch noch und sagen wir so, der Mode, der im originalen Ethik implementiert ist, ist die normale Z-Lib-Kompression aus der Python-Standard-Bibliothek. Wenn ihr das originale Ethik ausprobiert, wundert euch nicht, das macht dann vielleicht ein bisschen so einen langsamen Eindruck. Das liegt daran, dass der einfach Z-Lib-Kompress aufruft und nicht sagt, welcher Kompressionslevel. Und der Default ist halt Level 6, also schon eine relativ starke Kompression und wenn ihr da ein Thera bei Daten durchschiebt, da wird es halt seine Zeit. In den Modifikationen, was ich gemacht habe, kann man das alles einstellen und da kann man dann auch sagen, also gar nicht komprimieren oder nur mit Level 1, dann geht es deutlich schneller. Also das ist nur eine Frage der Einstellungen. Was ich auch noch hinzugefügt habe, ist LCA-Modus. Allerdings vorsichtig sein, da wird es noch langsamer. Also das lohnt sich nur dann, wenn ihr zum Beispiel über den DSL abstrieben halt eure Backups macht und wenn ihr praktisch auf Teufel kommen raus, halt das komprimieren wollt, weil er dann halt Übertragungszeit auf der DSL-Leitung spart. Aber nicht für lokale Backups, wenn da ist das viel zu langsam. Dann habe ich noch vor einer Woche oder so eine Library entdeckt. Die kommt irgendwie so aus einem wissenschaftlichen Bereich, dieses BLOSC-BLOSC. Und die hat also doch eine recht interessante Ansage. Die haben also faster than Memcopy auf ihrer Homepage stehen. Also für die, die es nicht wissen, Memcopy ist praktisch so auf aller unterster Ebene. Ich will einfach ein paar Bytes im Rahmen von A nach B schieben, möglichst effizient mit der CPU. Also normalerweise denkt man, dass eine Kompression oder die Kompression ja nie schneller sein kann, weil die ja doch zusätzlich deutlich viel rechnen muss. Die haben das aber wirklich geschafft und denen ihr Problem war, wir haben da ganz viele Daten im Ramm liegen. Und unser Bottleneck ist praktisch der Bus zwischen CPU und Ramm. Also die wollten durch die Kompression praktisch diesen Bottleneck überwinden, um die Daten schneller in den Second-Level-Cache zu kriegen. Also da merkt man schon mal, da geht es um andere Dinge, wie wenn ich jetzt Zipp nehme und irgendwas zusammenpack. Und das Ding ist ja auch interessell. Und das Ding ist ja auch interessell. Und das Ding ist ja auch intern multithreaded. Das kommt da mit Python natürlich entgegen, weil mit Python ist das mit Multien so immer so ein bisschen ein Problem. Und die haben LZ4 implementiert. Das ist so einer der nettesten, schnellen Kompressionsalgorithmen, die es gerade so gibt. Und damit kann man also selbst auf etwas älteren CPUs durchaus 400 Megabyte pro Sekunde durchjagen. Und das merkt man also auch, wenn man da interaktiv damit rumspielt, dass der Standardbibliothek, das dauert halt so ein paar Sekunden. Und mit dem Blossgezeug, der 3UV-Änderungsmacht, Fuppo ist fertig, also ist deutlich schneller. Außer LZ4 gibt es auch noch LZ4-HC, also wie High-Compression. Das lässt sich dann halt ein kleines bisschen mehr Zeit, ist aber immer noch ziemlich schnell, komprimiert dafür besser. Und was sie auch drin haben ist ZLIP, also das Gleiche, wie oben in der Standardbibliothek, nur halt eine schnellere Implementierung. Da gibt es ja so verschiedene Ansätze und auch verschiedene Probleme. Wenn ihr zum Beispiel diese Ersing-Methode benutzt, mit Hardlings und so, dann habt ihr vielleicht festgestellt, wenn ihr eine virtuelle Maschine habt, also Windows oder whatever, ja, ihr startet die einmal, dann ist ihr halt immer gleich auf dem Backup wieder drauf, weil die Datei halt nicht mehr die gleiche war. Und das sind immer gleich mal 20 Gigabyte, was da wieder weg sind. Und eigentlich hat man also die Vorstellung, vielleicht ein Megabyte geändert hat und nicht alles. Und ist also in Etik kein Problem, damit kann man also auch solche VM-Images recht gut back-upen. Ein kleines Manko momentan noch ist, es gibt kein Spars-File-Support. Also wenn ihr quasi Löcher in der Datei habt, wo nur Nullen gelesen werden, dann würde das Etik momentan auch wirklich diese Nullen lesen und komprimieren und deduplizieren und erst dann wegspeichern. Und wenn ihr die Datei wieder zurück holt, würde das die Nullen auch wirklich euch auf die Platte schreiben. Also da noch ein bisschen vorsichtig sein, aber ich habe das mal im Isliotrecker eingetragen. Und das nächste, was ich machen werde, ist Spars-File zu implementieren, weil man es sonst als VM-House zu wirklichen Problem hat, wenn man nicht genug Plattenplatz für die ganzen Maschinen hat. Man kann es einfach machen, Backup und man kriegt es nicht mehr drauf, weil es dann quasi aufgeblasen wird. Diskimages, also einfach Def-SDA oder STB-Durchjagen geht. Also es kann von Standard in lesen auch auf Standard out schreiben. Man kann auch Verzeichnisse renamen, also wenn ihr diese Ersing-Methode kennt und ihr stellt euch einfach mal vor, ich habe da so ein Bilderortner in meinem Home-Verzeichnis und ich nenne den jetzt einfach um auf Pictures. Wenn ihr diese Ersing-Methode benutzt, klatscht es euch den kompletten Ortner noch mal auf die Platte, weil es halt die Übereinstimmung der Dateiname nicht mehr findet. Hat Etik kein Problem, weil es nicht mit den Dateinamen arbeitet. Dann gibt es bei der Detuplizierung natürlich verschiedene Fälle. Es kann sein, dass ihr manche Daten einfach doppelt auf eurer Platte habt. Das wollt ihr dann vielleicht detuplizieren. Das wäre natürlich auch was, was man vielleicht aufräumen will, aber gut, wenn es das Backup-Programm detupliziert, ist das natürlich auch eine feine Sache. Dann gibt es noch diese historische Detuplizierung, also ich habe gestern ein Backup gemacht, ich mache heute nochmal eins mit den Daten immer noch die gleichen und können eigentlich wegdetupliziert werden. Ich will nur noch die Unterschiede mehr oder weniger speichern. Ein dritter Fall, wenn ich verschiedene Maschinen back up und da ist immer ein Linux drauf und immer ein Windows drauf oder sonst irgendwas, diese Betriebssysteme an Teilen ist natürlich meistens auch immer irgendwie das gleiche. Wenn ich da fünf Debian-Maschinen habe, der Betriebssystem Teil ist im Prinzip immer der gleiche. Also auch das könnte ich gerade zwischen den Maschinen wegdetuplizieren. Dann mische ich es gerade ein bisschen assinnig roten hier. Ich muss glaube mal da direkt dran. Ah ja, so geht es besser. Die Verbindung da hat wohl gerade ein Problem, der hier zeigt was ganz anderes an. Also wie die Detuplizierung funktioniert ist auch recht interessant. Also der guckt nicht einfach nur, der guckt auch nicht, ist der Block das erste Megabyte und das zweite Megabyte und das dritte Megabyte irgendwie gleich, sondern was der macht, ist ein sogenanntes Content-Defined-Junking. Also ich habe praktisch ein Hash und sogenannte Rolling-Hash und der wird praktisch einfach mal in einer bestimmten Windowgröße ab beiden Null berechnet und hat einen bestimmten Wert. Dann wird er ein Bite weitergeschoben, nochmal berechnet. Das geht effizient. Also ich muss nicht den kompletten Hash nochmal rechnen, ich muss nur das erste Beid rausrechnen und das nächste Beid reinrechnen, also es geht recht schnell. Und was dann gemacht wird, ist der Hash hat also z.B. 32 Bit und ich gucke mir einfach die unteren 16 Bit davon an und die nehmen dann halt irgendwelche Hash-Werte an, so mehr oder weniger zufällig halt je nach Daten und da wird dann einfach mal so ein Trigger gesetzt, wenn die unteren 16 Bit schneidig quasi. Und deshalb tut er praktisch das Zeug so zu hacken, wie es der Inhalt quasi diktiert. Und wenn ihr also den gleichen Inhalt praktisch in der anderen Datei, einem anderen Offset habt, würde der da genauso hacken. Und dadurch entstehen dann praktisch Brocken, die dann gleiche Länge und gleichen Inhalt haben, gleichen Hash-Wert haben und die dann dadurch dedupliziert werden. Also das ist ein besseres Verfahren einfach nur auf die Gesamtdatei schauen. Nennt sich Bass Hash, kann dich vorher auch nicht, könnt ihr in der WGPD ja mal nachgucken. Das ist also ein effizienter Hash wo auch mit wenig komplizierten CPU Instruktionen zu implementieren ist. Und wie viele Bit sich da anguckt kann ich natürlich variieren, wenn ich 16 Bit angucke. 2 hoch 16 sind 64K. Das wird quasi so statistisch immer ein 64K haben. Kann mal mehr mal weniger sein, hängt halt vom Inhalt ab. Ich definiere dann auch ein kleinem Minimal und eine Maximalgröße, dass man es nicht zu klein und nicht zu groß wird. Aber da kriege ich meist ein Stückchen raus. Ich könnte auch 20 Bit nehmen, dann hätte ich zum Beispiel eine Megabyte große haben im Schnitt. Was man vermeiden will, ist, dass man den Hash immer gleich rechnet also auch verschiedenen Maschinen in verschiedenen Backups. Deshalb wird der Hash gesiedet. Das ist praktisch wie diese drei Keys im kiefalischen See drin. Dass nicht jemand praktisch an der Länge der Stückchen erkennen kann, was ich da gerade gebackupt habe. Sonst könnt ihr ja zum Beispiel irgendwie mal gucken irgendein Film, wo vielleicht selber besitzt, was das für Stückchen ergibt. Und mal gucken ob ähnlich lange Stückchen in eurem Backup drin liegen. Aha, ihr habt den Film auch. Diese Stückchen, also diese Chancen werden dann abgespeichert. Und was er dann macht fürs Abspeichern, ist da einfach so ein kryptografischem richtigen Hash zu berechnen, also SHA256 zum Beispiel. Oder wenn er ein Key hat, rechnet er sogar eine Mac aus, also wo quasi gleichzeitig nochmal signiert. Und unter dieser ID wird das dann in diesen Key-Values reingespeichert, also dieses eine Stückchen. So, momentaner Zustand von dem Projekt ist, dass es so im Prinzip funktioniert. Also ich habe es schon einige Male ausprobiert. Es gibt dann also keine größeren Feldfunktionen, aber halt ein bisschen nicht sein. Das Ding ist noch als Beta deklariert. Also testet es vielleicht einfach selber. Insbesondere gilt natürlich der Hinweis auf den neusten, tollsten Code aus Git. Da kann sich natürlich durchaus mal was ändern. Also wenn ich da irgendwas Neues einbauen, mir fällt 30 Tage später ein besseres Verfahren, eine ändere ich das einfach. Also ich mache jetzt keinen Support von Git-Version X nach Git-Version Y, dass es immer super kompatibel ist. Das ist natürlich auch zu den alten Versionen, also zu den Releases kompatibel zu sein, aber jetzt nicht von heute auf morgen oder so. Also da bitte testen, aber bitte vorsichtig sein, vor allem wenn er die Backups in drei Jahren auch noch lesen können wollte. Die letzte Release ist vom Dezember 0.14. Bitte nichts Älderes benutzen, also in Debian, Ubuntu und Arch und whatever, hat es teilweise 0.10, 0.11 und so weiter drin, aber die ist ein Fehler. Also 0.14 ist so die neueste Release und das ist also das Minimum, was er benutzen solltet. Selbst in der 0.14 hat so kleine Probleme noch drin. Also von daher mindestens die oder vielleicht sogar was aus Git. Zu den Repositoris ist also alles auf Git hab. Der Original Autor heißt Jonas Bergström, also J. Berg auf Git also da liegt der offizielle Master Repository das Problem ist grad Jonas hat grad Nachwuchsglick kriegt, zwei kleine Babys also da kommt grad irgendwie zu nix und deshalb stapeln sich da grad so etwas die Pull Request und die Tickets und so weiter und ich hab deshalb einfach mal ein zweites Repo gemacht auch im Hinblick auf mehr Kollaboration, also ich hab eine Ethic Organization gemacht mit Git hab und dort gibt's ein Merch Repository und das ist so über 100 Komits schon weiter wie der Master und das sind also diese ganzen tollen neuen Features, was er noch sehen werde drin. Wichtig ist in diesem Merch Repo der Master ist genau das gleiche wie beim Original Autor. Also nicht wundern wenn sie das nicht anders verhält, was sie benutzen wollt oder testen wollt ist also der Merch Branche das sind nur konservative Merches drin also wenn ich irgendein Back oder DoCoo gemirkt hab oder irgendwas ist es in Merch drin also da sollte eigentlich nix passieren wenn er das benutzt im Gegenteil da habt er wahrscheinlich weniger Bugs wie im Original Merch All ist nicht konservativ, da sind also auch neue Funktionen drin die vielleicht aber auch ganz nett sind ich hab grad erzählt also das ist grad ein bisschen so ein Problem in dem Hauptprojekt gibt's so ein Bussfaktor Problem der Hauptautor hat grad keine Zeit und man weiß es auch nicht so grad wenn er wieder Zeit haben wird ich hab dann gedacht, dass es mit dieser Organisation eine ganz nette Idee ist weil es gab einige Pull Request auch von anderen Leuten, nicht nur von mir und ich hab da dann so ein Issue aufgemacht so von wegen Jahr mehr Kollaboration ermöglichen und so weiter könnte ich ja mal selber durchlesen ist die Nummer 217 der Originalautor hat sich da aber so ein bisschen geistert, geäußert, er hat gemeint er schreibt lieber den ganzen Code selber als irgendwie Code Review zu machen und Pull Request zu merken also es wird man dann noch sehen müssen ich will das jetzt nicht überstürzen aber ich denke mal entweder wir kommen dann alle mal zusammen und machen das gemeinsam weiter oder ich folge das Ding halt und mach's dann halt mein Ding weiter also lieber wärmer es natürlich wenn das gemeinsam weiter ginge aber das ist ja sehr gut so die Ziele in der extra Zukunft ist halt die Skalierbarkeit vielleicht noch ein bisschen zu verbessern wenn ihr den Originalcode nehmt kann es momentan sein, dass es wenn ihr extrem viele Dateien oder extrem viele Chancs habt dass dann der Speicherverbrauch relativ hoch ist das kann dann ein Problem sein wenn eure Maschine so ein bisschen asymmetrisch ist, sag ich jetzt mal im EU aber TheraBytes ein Speicher dran dann kann es manchmal Probleme geben Zuverlässigkeit natürlich auch immer Security vielleicht auch noch verbessern vielleicht gibt's da mal ein Review oder sowas das Ding arbeitet momentan im Push-Modus das hat natürlich ausser seine prinzipiellen Probleme vielleicht will man irgendwann mal einen Pull-Modus haben also dass der Backup Server die Backups zieht die Maschine oder zumindest so ein Modus wo ich sagen kann ich kann nur Backups hinzufügen ich kann keine Backups löschen stellt euch einfach vor eure Produktionsmaschine wird gehackt und die push normalerweise die Backups auf den Backup Server wo das Ding hackt könnt ihr natürlich auch sagen löscht die Backups und dann habt ihr weder Produktion noch Backup mehr man kann es umgehen wenn man vielleicht Snapshots auf den Backup Server macht aber das kann man vielleicht noch ein bisschen verbessern dann wie schon erwähnt sparse files würden wir euch supporten vielleicht noch etwas besseres Logging besseres Exception Handling diverse Backends noch vielleicht für diverse Cloud Storages ihr habt ja kein Problem das in die Cloud zu speichern das ist alles sehr gut verschlüsselt also kann man hin speichern eigentlich wo man will andere Plattformen vielleicht noch zumindest mal testen oder halt bei Windows vielleicht auch den fehlenden Code noch schreiben und was euch sonst noch so einfällt generell ihr könnt helfen also einfach das Ding mal ausprobieren vor allem wenn ihr irgendwo Terabytes an Daten und Terabytes an Storage Platz habt das hat nicht jeder Developer also wenn ihr große Datenmengen habt lasst es einfach mal laufen auf Github halt Bugs einwerfen, Feature Requests einwerfen wenn in der Dooku irgendwas findet Dooku verbessern, Code by Steuern weiter sagen wenn es euch gefällt und wenn ihr irgendwie Packages für Debian Ubuntu sonst was machen könnt wo es noch keins gibt vielleicht auch Packages machen Link nochmal Original Homepage Ethic-Backup.org auf Github in der Ethic-Organisation liegt also das noch inoffizielle Zeug drin auf Renote gibt es ein Erich Chat Kanal und ja wenn ihr noch Fragen habt können wir uns direkt noch eine Fragerunde machen ich habe danach aber auch noch so ein bisschen Demo und Workshop also wenn ihr einen Laptop zur Hand habt könnt ihr auch gleich das ausprobieren machen wir vielleicht erstmal die Fragerunde wenn ihr was habt einfach fragen Hallo, bei der Krypto du hast gesagt der Account wird gespeichert von AS wird er auch Integritätsgesichert noch mal, wo wird er gesichert wird er auch Integritätsgesichert also wird in irgendeiner Form gesichert dass wenn sich dieser Account unautorisiert verändert dass er das anerkannt wird ich glaube der ist in diesem so genannten Repository Manifest drin und es wird wie jedes andere Datenhäppchen auch in diesen Key Value Store reingespeichert und wie üblich eine Prüfzumme und so gerechnet also soweit ich mich erinnern kann ja aber wir können es nochmal gucken auch mich würde interessieren wie das ist wenn so ein Bit flippt ist es doch meistens auch dadurch dass man Komprimierung einsetzt gleich der ganze Chunk kaputt oder ist es nicht immer so spielt im Prinzip keine Rolle er sagt Integrity Error und lässt also sobald man irgendwo Datenmodifikationen haben gibt es also da eine Fehlermeldung und dann würde man wahrscheinlich einfach das Backup vorhernehmen weil man weiß dann im Prinzip nicht genau ist da jetzt ein Bit geflippt oder hat mir da jemand also aber da müsste man vielleicht auch nochmal genauer checken ob man das irgendwie noch so ein bisschen optimieren kann ich glaube momentan bricht es einfach ab und sagt Integrity Error vielleicht könnte man das so machen dass man alle Dateien die danach kein Integrity Error haben oder alle Chunks dass man die doch auch wieder haben kann und das ist halt nur in diesem einen Block dann halt irgendwie was was ich in Nullen reinspeichert es gibt übrigens eine Ethic Check in der Situation wo auch Versuchten Repositori zu fixen also ich denke mal wenn der irgendwo eine Integrity Error findet ich glaube ich habe da Code gesehen dass er einfach Nullen reinspeichert und dadurch den Fehler praktisch behebt dann würde man das Archiv ganz normal wieder herstellen können noch fragen ja ich habe eine Frage du machst halt ein Backup von einem Verzeichnis in ein anderes Bank das heißt ich habe ein Verzeichnis das wird ein anderes Gebackup wenn ich jetzt zum Beispiel von dem System vom Wurzelknoten aus ein Backup abwärts machen will will aber halt nicht das ganze System sichern sondern will nur bestimmte Verzeichnisse will ich das so machen dass ich dann sage machen Backup vom gesamten System aber mach nur es sind alle Dateien ausgeschlossen außer die die inkludiert sind was kann man das machen also man kann Excludes machen ich kann auch sagen so was One-File System mit relativen Pfaden da gibt es noch so ein kleines Manko da müsste man mal den Original-Auto fragen also wenn man z.B. was unter MNT gemountet hat und man sagt man will das Backup dann hat man nachher im Backup die kompletten Pfade erstmal drin stehen man kann aber beim Restore sagen stirbt mir zwei Ebenen wieder weg dann habe ich wieder das was ich vielleicht dann sehen wollte es ist aber nicht so dass er sofort das stirbt und nur die relativen Pfade abspeichert aber man kann es beim Restore dann machen kann man dann auch mehrere Versionen vorhalten so bei R Snapshot also man kann so viele Backups machen wie man will und er depliziert die halt automatisch also das würde man auch nachher sehen nur das erste Backup ist so richtig aufwendig und dann ziemlich schnell und locker also man hat die gleiche Funktion mit diesen Hardlings wie bei R Snapshot ja sogar noch besser eigentlich wie bei diesen Tools weil die Deplizierung halt besser funktioniert und auch V-Images und so nicht so ein großes Problem also ich kenne das von R-Diff Backup jetzt zum Beispiel so dass immer die aktuellste Version von dem Backup die liegt tatsächlich einfach als Datei im Verzeichnisbaum und die Variationen sind dann Diffs davon das ist nicht so toll wenn du weit in die Vergangenheit willst dann bächen der halt hierisch rum das ist richtig, aber da ist natürlich der Scham dabei ist halt du kannst eben auf die letzte Version vom Backup weil das ist ja eine Regel die interessanteste auf die man dann zugreifen will beim Restore auf die kann man dann einfach mit dem Dateimanager zugreifen das heißt man bindet seinen Backup-Medium eben ein und zieht sich halt die Files vielleicht drüber das ist dann nicht den Weg gehen über das Backup-Tool hier hab ich jetzt so verstanden du hast quasi alles als also die Daten sind die Daten liegen nicht irgendwie du kommst an die Daten immer nur über das Tool dran ja also es gibt wie gesagt diesen Fuse-Modus das ist natürlich aber irgendwo auch Teil des Tools wenn man so will aber ich kann sagen Ethic-Mount so und so und dann kann ich quasi das Backup-Archiv mounten und es sieht dann aus wie ein loader 1-Letartain ich kann mit einem ganz normalen File-Manager dann arbeiten aber ich brauche halt diesen Fuse-Teil von Ethic dazu ich kann nicht direkt in das Backup reingehen und mir da Dateien rausziehen das geht nicht ja klar aber ich kann es aber so transparent quasi wieder darstellen dass ich auch mit normalen Teil-Operationen halt auf das Backup zugreifen kann oder auf die letzte Version dann ne auf alle mit Fuse das geht ohne Probleme also wenn sonst nichts ist das ist so der Talk erst mal gewesen ich habe jetzt noch so ein bisschen Demo Workshop wie liegt man denn in der Zeit 2012 also glaubt danach ist ja nichts mehr also ich würde sagen wer es eigentlich hat kann gehen wer noch ein Workshop und Demo sehen will kann bleiben die Installation ist natürlich so wie ich vorhin gesagt habe jetzt ein bisschen schwierig ich habe gesagt da gibt es diese Release eine Linux Pakete also das Einfachste was ihr machen könnt einfach sagen abget install Ethic dann habt ihr irgendein Ethic auf der Plade Waschreich Version 013 vielleicht auch 014 je nachdem wie frisch euer Debianer der Ubuntu ist ihr könnt auch die Binary Releases von der Homepage nehmen das sind also diese C-Anteile und dieses Seifenzeug ist da praktisch vorkompiliert und ihr braucht euch das im Prinzip nur runterladen wenn ihr den Verzeichnis auspacken dann habt ihr quasi alles was da dafür benötigt wird also das ist so die Einfachste Methode wie man es irgendwie zum Laufen kriegt ich will euch jetzt aber eigentlich die etwas schwierigere Methode zeigen weil ihr dann halt wirklich mit einem aktuellen Code aus dem Git arbeiten könnt wir brauchen so ein paar Sachen halt als Grundlage also das habe ich schon erwähnt Python 3.x und x sollte größer gleich 2 sein aber sagen wir so ältere die nicht mehr nehmt einfach also das neuste was ihr einfach kriegen könnt 3.3 wäre nett muss aber nicht unbedingt sein die Development Headers weil man halt zu diverses C-Zeug durch ein Compiler jagen wollen was auch mit Python redet also daher dieses MinusDev-Paket und Python PIP PIP ist so ein Package Manager dass ich einfach sagen kann PIP install so und so und dann installiert ihr mir preisch Python Pakete dann OpenSSL braucht ihr mindestens Version 1.0.0 also keine Antiquitäten und weil es halt auch durch den Compiler gejagt wird LibSSL Dev das sind also diese C-Header-Files für OpenSSL dann ACL-Support ist im Attic drin also Access-Ctrl-Lists deshalb halt LibACL1-Dev und ich glaube das zieht sogar automatisch dann die LibACL1 auch drauf falls nicht müsst ihr es halt eingeben wenn ihr noch gar keinen Compiler oder Make oder sonst was jemals benutzt habt auf eurem Gerät halt auch vielleicht noch so was wie Build Essentials installieren dass ihr also ein GCC habt dass ihr ein Make habt und so die übliche Grundausstattung wenn ihr das ist jetzt optional wenn ihr dieses Fuse benutzen wollt also dass ihr einfach so ein Backup mounten könnt und da da teilweise raus kopieren könnt dann braucht ihr dieses Low Level Fuse das Ding für Python 3 also Python 3 minus LL Fuse und dadurch das Fuse an sich auch und wenn ihr die Unitests laufen lassen wollt dann noch Fake Route kurze Frage versucht es jemand jetzt parallel mitzumachen ja dann können wir es vielleicht gleich mal ausprobieren weil ich hatte es mehr so aus der Dokone aus dem Kopf zusammengeschrieben aber ich denke mal ich habe alles abget install das alte Paket drauf zu ziehen aber dafür könnt ihr dann halt auch wenn ihr irgendwelche Bugs fixen wollt oder die neuen Features ausprobieren wollt würde das dann halt auch funktionieren ist übrigens auch in der Original-Doku mehr oder weniger drin allerdings leider so ein bisschen verstreut nicht ganz so kompakt wie ich es jetzt hier beschrieben habe das ist eine gute Idee vielleicht ja also ja, die Frage war ob abget abget BuildDep Ethic ob das nicht sinnvoller wäre also ich denke mal die Dependency ist wo 014 hatte, die reichen auch für den aktuellen Gitcode so mehr oder weniger zumindest kann man so ein paar Sachen sparen also abget BuildDep Ethic aber ich könnte vermute dass es Fake Route vielleicht dann nicht dabei ist weil man das nur zum Unitesting braucht könnte vielleicht passieren als Finks ist für die Doku muss man haben oder auch nicht also wenn du die Doku nicht selber bauen willst brauchst du nicht ist noch jemand am Tippen oder kann ich weiter drücken okay dann die allereinfachste methodisch halt das System weit zu installieren dann sage ich einfach sudo pipinstack dann lädt sich der das Ethic-Paket von Pipy runter also nicht von Debian oder Ubuntu sondern von diesem Python-Package-Index und würde dann einfach die Version 014 bauen also die neue Sterelease je nach System wo ihr habt kann auch sein dass ihr Pip 3 sagen müsst um die Python 3 Version von Pip aufzurufen das habe ich gemerkt das ist wohl ein bisschen unterschiedlich also damit kriegt ihr den Originalcode so wie letzte Release halt wenn ihr das Zeug aus Git verwenden wollt wird es ein bisschen komplizierter dann müsst ihr euch halt ein Verzeichnis machen das Git-Repo, Reinklonen also Ethic-Organisation und dann Merge.Git wichtig ist ja nicht vergessen den Branch zu wechseln weil sonst kriegt ihr halt den ganz normalen Releasecode und wundert euch dass es alles gleich ist wenn ihr es konservativ haben wollt keine neuen Features lieber nur Debug fixes dann halt nicht Merge All Name sondern nur Merge die nächste Zelle mit diesem Update Install Python Virtual N für Start zu gut Python Virtual N für quasi so ein Tool was so ein Verzeichnis macht mit so einer Minimalumgebung für Python wo man praktisch seine Dependencies für ein bestimmtes Paket in dieses Verzeichnis reininstalliert ohne dass man die jetzt systemweit installieren muss das ist ja auch nett wenn man verschiedene Sachen hat wo das eine Bibliotheken Version X braucht und das andere braucht die gleiche Bibliotheken Version Y dann kann man das schön auseinanderhalten also es ist keine komplette virtuelle Maschine sondern nur so ein paar Hecks praktisch um das entsprechend hin zu biegen und dann sagt man halt Virtual Enf Minus Minus Python gleich Python 3 also dem halt explizit sagen er soll bitte Python 3 in dieses Virtual Environment reinbauen nicht Python 2 7 vielleicht wie es standardmäßig machen würde und das Enf dahinter das ist dann das Verzeichnis das er erzeugt wo er dann dieses Python und die ganzen Dependencies reininstalliert dann Source Enf bin Activate Source heißt ja praktisch nimm diese Datei die ich sage und lese quasi in die Bash so rein wie wenn ich das alles eingetippt hätte also die gleiche Bash bleibt laufen er macht keine Neue aber liest halt praktisch dieses Script ein da wird er halt verschiedene Pfade umgesetzt, Python path neu definiert und man sieht dann ah, ich bin jetzt in diesem Virtual Enf drin und es ist auch wichtig wenn ihr dann später das Ethik nochmal benutzen wollt, müsst ihr dieses Environment aktivieren weil sonst fällt dem Ethik diese ganzen Dependencies dies halt hat dann in das Repository Work Directory reinwechseln also wenn er es genauso eingetippt hat heißt das Ding Merge da reingehen also in den Checkout und dann reininstallieren Python ist wie gesagt was dass man relativ komfortabel programmieren kann so Glucode Richtung C richtig, ja, stimmt, das muss man umsortieren ja, also das CD Merge geht eigentlich weiter oben hin also Python reininstallieren dann falls ihr den Unitests laufen lassen wollt Tox Tox ist ein sehr beliebtes Python Unitesting Tool in Tox kann ich einfach sagen okay, ich würde gern testen hier und das schreibe ich in so eine Kontrolldatei rein Tox.ini und dann sage ich einfach nur noch Tox und Enter und der spielt mir diese ganzen Tasches mit jeder Python Version durch und sagt mir am Schluss ob alles funktioniert hat also es ist etwas weniger mühsam wie wenn ich das von Hand mache das Tool braucht aber nur wenn er die Unitests laufen lassen wollt das braucht er nicht wenn er normal nur Ethik benutzen wollt und dann der wichtigste Befehle links das ist dass er sich das Bloss aus dem Git repo von dem Projekt holt nicht die letzte Release die reicht leider nicht ganz und minus E-Punkt heißt einfach dieses Projekt wo ich gerade in dem Checkout drin bin, das bitte installieren und zwar installiert er das so dass ich in dem Git repo ganz normal den Code editieren kann und dass der Code nicht irgendwo anders in dieses Environment reinkopiert wird also der macht quasi in das Environment was da ist auf meinen Work Directory dass ich quasi das editierbar hab und wenn ich deinen Fehler finde gleich ein Komet draus machen kann und nicht irgendwie an zwei Stellen arbeiten muss ja wenn er es ausprobieren wollt ob das Ganze funktioniert hat können der FakeRoot-U-Tox machen das führt also wie gesagt gerade diese Unitests aus dauert dann ein paar Minuten wenn der Schluss dann halt dreimal grün steht alles hat geklappt dann ist es okay so, das war jetzt alles ein bisschen kompliziert zum Glück ist das Tool an sich nicht so kompliziert also wenn man Repository machen wollt, also Repository im Sinne von Ethik ist einfach eine Stelle wo ihr eure Backups hin speichert eigentlich nur ein Verzeichnis wo halt so eine Unit-Datei drin ist wo so ein paar Kontrollinformationen drin stehen also ihr sagt einfach Ethik-Init gibt ein Pfad an und ab da habt ihr genau an der Stelle ein Backup-Speicher wenn man dann Backup erzeugen will halt mit Ethik-Create genau den gleichen Pfad wieder angeben dann zwei Doppelpunkte und dann könnt ihr euch irgendein Namen ausdenken wie euer Backup heißen soll also ich hab's jetzt hier auch mal First, Second, Third genannt ihr könnt auch einfach mit Date euch was aus dem aktuellen Datum und Urzeit zusammenbasteln, da wisst ihr auch immer genau wann das war vielleicht noch den Haustname mit reinnehmen irgendwie sowas, dass er halt wiedererkennt was das Ganze war er tut das Datum, wir beginnen's auch noch mal extra erfassen also das ist nicht zwingend dass das Datum irgendwie mit drin steht und der dritte Parameter ist dann halt natürlich das was ihr Backupen wollt ich hab ja auch einfach mal meinen Desktop Verzeichnis genommen also normalerweise wer das halt holen oder was auch immer ihr Backupen wollt wenn das natürlich Dateien hat wo ihr mit euren Rechten nicht rankommen das ist klar, dann müsst ihr es noch nicht als Ruht laufen lassen sonst könnt ihr die Dateien nicht lesen also so in dieser Form ohne Sudo natürlich nur innerhalb von eurem Home Verzeichnis wenn ihr das so abdrückt dauert es, ja Ich hab das jetzt grad mal Spaß halber gemacht und er sagt auch spontan schon dass ich ohne Encryption arbeiten würde jetzt und dass ich das doch bitte als Kommando Zahlenoption mit übergeben will Encryption gleich Passphrase Achso, er sagt ja nur gleich Passphrase er will nicht die Passphrase haben Stresse oder Kiefer? Das ist nur rein informativ der hat trotzdem ein Backup gemacht aber da weißt du halt darauf hin dass das ganze Zeug jetzt unencrypted im Backup rumliegt das ist nur informativ das ist also kein fataler Fehler das ist nur ein Hinweis quasi müsst ihr mir vielleicht auch noch mal überlegen ob man diesen Default vielleicht ändern will dass Encryption Default ist und dass man sagen muss wenn man es nicht Encrypted haben will aber gut es ist vielleicht Geschmackssache weil ich gerade gemerkt das hat im Prinzip außer diesen Warnings gar nichts gesagt wenn man ein bisschen mehr Infos haben will kann man mit diesem Merge Allcode dann auch sagen Minus Minus Progress Minus Minus Dats und dann zeigt er halt so ein bisschen seinen Fortschritt an und am Schluss zeigt er eine Statistik an wie viel er komprimiert hat wie viel er detubliziert hat und so weiter und wenn man es noch genauer haben will das übliche Minus V oder Minus Minus Verbose jeder einzelnen Datei und vorne links noch ein Buchstabe ob die jetzt unverändert war oder modifiziert war oder ob es ein Sim-Link war oder ein Device-File oder was auch immer das habe ich deshalb gemacht dass man mit Crap dann arbeiten kann und sich mit Crap die Sachen rausholen kann wo ein wirklich interessieren ich mache das vielleicht gerade mal also wie gesagt nicht erstmal um das Repo anzulegen das ist dieser informative Hinweis dass halt es jetzt ohne Verschlüsselung ist so und wenn man den Initiat macht mal sein erstes Backup dann mit Create gibt dem Ding irgendein Name und sagt halt dann was man Backupen will zum Beispiel das aktuelle Verzeichnis diesen Cash macht er nur das erste Mal und das war es jetzt auch schon ich war jetzt also gerade in Source Code vom Attic Backup man sieht es geht relativ schnell aber man hat nichts gesehen ich mache jetzt nochmal ein neues Backup dann sieht man dann wird es deutlich gesprächiger und U heißt halt jetzt zum Beispiel Unchanged D heißt Directory und so weiter und man hat es natürlich gesehen die meisten Teilen haben sich jetzt nicht geändert in dieser einen Sekunde wo ich gewartet habe mit dem zweiten Backup ich mache mal diesen Statistik-Mode noch dazu so ja man muss sich einen neuen Namen nehmen klar und jetzt sieht man zum Beispiel schon mal den ersten interessanten Effekt hier also das ist die Summe aller drei Backups die ich gemacht habe wie viel es eigentlich hätte verbrauchen müssen das ist die Kompression die ich nicht verwendet habe und das hier ist die deduplizierte Größe man sieht es ist schon deutlich kleiner weil das halt immer das gleiche war was ich Backup habe und die obere Zeile ist das aktuelle Backup also es hat gerade nur 140 Kilobyte hinzugefügt weil sie halt gar nichts geändert hat also es sind nur so ein paar kleine Metadaten also der hat aus 68 Megabyte vom letzten Backup 100 Kilobyte gemacht so dann gibt es natürlich Befehle um eine Repositorie aufzulisten also diese Oberstückkommando-Zeile listet mir einfach mal eine Backups auf die ich gemacht habe also diese sogenannten Archive und wenn ich dann weiß wie das Archiv heißt das ich sehen will dann sage ich einfach halt mit double.double.archivname und dann liste der mir das komplette Archiv auf was da alles für Datain drin sind oder ich kann natürlich auspacken mit Extract dann lebe ich einfach den Archivname an ich kann als dritten Parameter noch natürlich angeben was ich genau extrahieren will wenn ich nichts angebe packt dann einfach komplett alles aus wichtig ist man sollte vorher ein Verzeichnis machen wo man das Zeug hinpacken will weil er packt es einfach immer ins aktuelle Verzeichnis aus das ist auch noch ein Ticket was offen ist dass man Zielverzeichnis angeben kann also es ist kein Problem man kann ja immer dort hinwechseln wo man es haben will vielleicht für Skripting sollte man das noch haben wenn man nicht wirklich auspacken will sondern einfach nur mal testen will ob das tun würde sagt man einfach minus minus dry run dann tut er praktisch alles was er auch beim extrahieren tun würde aber er schreibt es halt nicht wirklich auf Platte es ist gut wenn man wissen will ob sein Restor überhaupt funktionieren würde man kann auch so ein repo checkup und zoom mal machen da macht er praktisch übers komplette repositorien Konsistenz check die ganzen max und so weiter alles noch stimmen etic info geht so ein bisschen statistik aus also so wie vorhin am Schluss vom backup dass er halt sagt insgesamt die Größe wie viel komprimiert, wie viel dedupliziert und so weiter man kann backups auch löschen insbesondere kann man auch das erste backup und das letzte backup löschen also es ist nicht so wie vorhin erwähnt dass der irgendwelche rückwärtsdifferenzen oder vorwärtsdifferenzen irgendwie rechnet jedes backup ist für sich genommen selbstständig also ich kann alles löschen was ich will solange ich das noch übrig habe was ich übrig haben will, habe ich kein Problem also es gibt kein vollbackup und kein incrementelles backup es ist quasi jedes logisch vollständig die letzte zeit ist so etwas mit Vorsicht zu genießen das löscht das komplette repo der fragt auch nochmal ob man das wirklich ernst meint aber wenn man dann halt ja sagt sind dann halt alle Archive in diesem repo weg das war bis vor kurzem nicht implementiert wahrscheinlich genau aus diesem Grund ich habe gedacht, sollte man vielleicht trotzdem anbieten aber halt da überlegen ob man das haben will gute frage müsste man mal ausprobieren kann sein, dass es das noch nicht gibt aber gut, es ist einfach zu machen wenn man das haben will so ich habe bisher noch gar keine Kompression noch gar keine Krypto verwendet da wird es auch ein bisschen komplizierter deshalb auch der Hinweis mit minus minus help kriegt mit einem schönen Hilfe was so alles geht und momentan ist es also so dass man die Kompressionsalgorithmen und die Cyphers dass man die alles einfach über eine bestimmte Zahl selektiert also da gibt es noch keine sprechenden Namen dafür weil im Endeffekt müsste man eh nachschlagen wie das Ding jetzt genau heißt deshalb habe ich es momentan einfach durchnummeriert und man muss halt die Nummer angeben nur so als Beispiel 21 bei der Kompression wäre es zwischen LZ4 mit Level 1 also was super schnelles es komprimiert nicht ganz so gut wie jetzt LZMA oder ZLIP aber es ist dafür halt ziemlich schnell fertig und die empfohlene Geschichte für die Krypto ist wie gesagt so ein Keyfile zu benutzen weil man halt sonst seine Passphrase nicht ändern kann also daher minus e wie in Kryptchen und dann halt sagen ich will ein Keyfile benutzen wichtig ist, ihr müsst natürlich das Keyfile sichern und zwar nicht nur in das verschlüsselte Backup rein weil sonst kriegt das nicht mehr raus wenn ihr es nicht mehr habt dann ist das Keyfile vielleicht separat da bin ich auch noch ein bisschen im überlegen aber vielleicht zwei Modi anbieten will dass im einen Modus das Keyfile lokal liegt und im anderen Modus das Keyfile vielleicht schon auf dem Backup Server liegt das ist noch nicht so ein bisschen Geschmackssache das ist verschlüsselt also kein direktes Problem aber sagen wir so, wenn der Angreifer den Key schon hat dann muss er natürlich nur noch die Krypto überwinden dann könnt dann euer Backup ran wenn er den Key nicht hat muss er erst mal den Key kriegen also von daher gibt es da keine eindeutig gute oder eindeutig bessere Lösung das ist etwas Geschmackssache wenn ihr längsame Leidung habt übrigens so ein KBBW fünf Megabit abstrieben Hochzus, Backupenvolt dann vielleicht Compression 69 verwenden das ist also Zlib mit Level 9 also das maximale was Zlib hergibt ist immer noch so halbwegs schnell also nicht ganz so langsam wie LZM aber komprimiert halt besser wie LZ4 und ansonsten nach diesem Init könnt ihr alles genauso machen wie vorhin also genauso create genauso extract im Init legt man praktisch die Parameterfest die man dann in Zukunft verwenden will was auch geht seither war praktisch alles immer lokal verfügbares Verzeichnis also entweder eine USB-Plate oder eine andere Platte oder ein lokal gemountetes Fallsystem es könnte übrigens auch ein lokal gemountetes Remote Fallsystem sein allerdings dann halt ein bisschen aufpassen Locking und so ist dann manchmal nicht so toll was aber auch geht ist, dass man einfach über SSH Remote geht setzt natürlich voraus, dass auf der anderen Seite auch ein Ethik ist, der dann mit diesem lokalen Ethik spricht über diesen SSH-Verbindung und dann muss ich dieses syntax verwenden einfach ssh username athost Doppelpunkt, wenn man will, den Port noch 21 kann man natürlich auch weglassen und dann halt dort das Verzeichnis wo das Repository halt sein soll ist im Prinzip, das ist übrigens im Vergleich zu einem SSHFS oder so schneller weil SSHFS einen gewissen Overhead hat oder SFTP hat auch so kleine Paketchen das ist alles nicht so wahnsinnig effizient also diese Methode da ist deutlich effizienter wie diese Methode mit Fallsystem-Mounten also Detuplicierung Krypto-Kompression ist alles immer auf der lokalen Kiste weil es verlässt nichts unverschlüsselt den Rechner also was die Remote Ethik macht, ist einfach nur das Key-Valuezeug da irgendwo hinspeichern also wie gesagt, Locking und Performance da ein bisschen beachten, v.a. wenn er irgendwie NFS, FTPFS, SSHFS irgendwas verwendet dann halt sicherstellen vielleicht gleichzeitig mit mehreren Backups drauf geht ok, so viel zur Demo hier nochmal die Links ansonsten wenn ihr Fragen habt entweder gleich oder ihr könnt mich auch irgendwann einfach greifen, ich bin alle Tage da also wenn ich jetzt 2 Repos auf der Kiste hätte die sind unabhängig voneinander dann also Repos untereinander haben nichts miteinander zu tun aber es hindert dich niemand daran das gleiche Repo zu schieben du kannst einfach einen Namen angeben wo der Hostname mit drin ist dann siehst du ja welches Backup von welchem Haus war und wenn das 100 Debian-Rechner sind, sind halt diese 100 Debians dann komplett detupliciert weil sie im Prinzip immer das gleiche war genauso wie bei Windows diese 10, 20, 30 GB was da gerne mal so auf der Platte von Windows liegen die werden dann natürlich auch weg wenn man übrigens diesen Standard-in-Standard-Out-Modus verwendet, kann ich sogar ein komplettes Platten-Image da durchschieben und der Zahakt ist genauso in Stückchen und würde genauso die gleichen Stückchen zwischen verschiedenen Platten-Images finden also ich werde es in Zukunft vielleicht sogar auch so für Image-Backups verwenden, halt von einem Linux-System gebudet, aber das Gebackup-System wäre dann möglicherweise halt auch mal ein Windows-System oder so noch fragen ja ok, wenn jemand sonst noch Fragen hat oder was ausprobieren will mit mir zusammen ich bin da einfach ansprechen ansonsten, danke für die Aufmerksamkeit