Revision 551: Restic – Backups, aber richtig

Mit Gast Alexander Neumann (Github), seines Zeichens Entwickler der FOSS-Backup-Software Restic quatschen wir über Backups, Backup-Strategien und Backup-Fails.
Schaunotizen
- [00:00:58] Backups!
- Unsere Einstiegsfrage ist: Was ist überhaupt ein Backup? Ist Backup gleich Backup? Wir beleuchten unterschiedliche Backup-Strategien (für den Alltag und für Spezialfälle wie Datenbanken) und kommen über den Vergleich von Restic mit der Konkurrenz vom morschen Obstbaum zu technischen Praxisfragen rund ums Backup. Über Fragen des Wie und Warum von inkrementellen Backups kommen wir zu Themen rund ums Backup-Rückgrat – Content Defined Chunking (im Falle von Restic via chunker), den Volume Shadow Copy Service, ZFS, etc. Jenseits der schieren Technik ist bei Backups aber auch der Faktor Mensch relevant und wir kommen nicht umhin, Restore-Complacency und Backup-auch-wirklich-machen-Strategien zu besprechen. Konkret am Beispiel von Restic sprechen für über Überlegungen zu Verschlüsselung und Sicherheit, Redundanz, Forward Error Correction, Kompression und Multi-Device-Backups. Zum Schluss geht’s natürlich auch ein wenig um OSS-Themen wie die Zukunftsplanung von Restic und das Community-Management.
Transkript
WEBVTT 00:00.000 --> 00:02.000 Working-Draft-Revision 551. 00:30.000 --> 00:35.000 Diese Revision von Working-Draft wird euch präsentiert von Hörerinnen und Hörern wie euch. 00:35.000 --> 00:39.000 Auf patreon.com slashworkingdraft könnt ihr uns ein paar Euro in den Hut werfen. 00:39.000 --> 00:46.000 Aus euren Beiträgen und unseren gelinglichen Werbeeinnahmen bezahlen wir allerlei teure Software-Abus und das Honorar unserer Audio-Producerin. 00:46.000 --> 00:51.000 Wenn ihr euch auch beteiligen wollt, könnt ihr das unter patreon.com slashworkingdraft sehr gerne machen. 00:51.000 --> 00:54.000 Wir danken euch tausendfach für die Unterstützung und fürs weitere Zuhören. 00:54.000 --> 01:02.000 Hallo und herzlich willkommen zu Working-Draft Nummer 551. 01:02.000 --> 01:04.000 Heute sind am Start der Hans. 01:04.000 --> 01:05.000 Ja, hallo. 01:05.000 --> 01:10.000 Meine Wenigkeit der Peter und wir haben einen Gast zu Gast, nämlich den Alex. Moin Alex. 01:10.000 --> 01:12.000 Moin zusammen. 01:12.000 --> 01:15.000 Alex, du bist zum ersten Mal hier in der Sendung. 01:15.000 --> 01:18.000 Das heißt, du hast die Ehre, dich unserer zahllosen Hörerschaft mal eben kurz vorzustellen. 01:18.000 --> 01:20.000 Wer bist du? Was machst du dir? Wer hat dich reingelassen? 01:20.000 --> 01:26.000 Ich bin Alexander Neumann. Ich wohne in Aachen und ich habe mir 2014 mal überlegt, dass es eigentlich mal ganz cool wäre, 01:26.000 --> 01:28.000 einen gescheites Backup-Programm zu haben. 01:28.000 --> 01:32.000 Und weil es da nichts gescheites gab, habe ich eins implementiert. 01:32.000 --> 01:37.000 Es gab kein einziges gescheites Backup-Programm, diesseits der Baikal-Amur-Magistrale. 01:37.000 --> 01:40.000 Das dachte ich zumindest früher. 01:40.000 --> 01:44.000 Mittlerweile habe ich herausgefunden, es hätte eines gegeben und hätte ich gesucht. 01:44.000 --> 01:46.000 Ordentlich hätte ich das wahrscheinlich auch gefunden. 01:46.000 --> 01:48.000 Das hieß Ethik damals. 01:48.000 --> 01:54.000 Aber es gibt viele Backup-Programme und jedes hat seine eigenen Spezialitäten und Vor- und Nachteile. 01:54.000 --> 01:58.000 Und ich habe zwischendurch auch seit 2014 mal gesammelt, was es alles am Backup-Programm gibt. 01:58.000 --> 02:00.000 Das ist eine riesen Liste mittlerweile. 02:00.000 --> 02:02.000 Und es gibt nichts, was es nicht gibt. 02:02.000 --> 02:04.000 Aber damals gab es nichts gescheites, dachte ich. 02:04.000 --> 02:06.000 Okay. 02:06.000 --> 02:10.000 Dann wollen wir doch einfach mal so bei den Basics anfangen, oder? 02:10.000 --> 02:13.000 Also, weil wenn ich jetzt mal so mich so umgucke in meiner Umgebung hier. 02:13.000 --> 02:16.000 Und ich frage irgendwie so die ersten fünf Leute, die mir mal weglaufen. 02:16.000 --> 02:18.000 Jo, was hältst du von Backups? 02:18.000 --> 02:20.000 Dann sagen die, aha, ja. 02:20.000 --> 02:24.000 Vor zwei Monaten habe ich hier mal irgendwie die wichtigsten Dokumente auf diesen USB-Stick gezogen. 02:24.000 --> 02:26.000 Zählt das tatsächlich schon als Backup? 02:26.000 --> 02:28.000 Oder ist das mehr so eine Verzweiflungstat? 02:28.000 --> 02:30.000 Was würdest du sagen? 02:30.000 --> 02:32.000 Das Verzweiflungstat klappt schon ganz gut. 02:32.000 --> 02:39.000 Ich hatte auch schon im Bekannten- und Familienkreis Leute, die ihre Masterarbeit wirklich nur auf einer Festplatte eines Laptops abgespeichert haben. 02:39.000 --> 02:41.000 Und dann war die plötzlich weg. 02:41.000 --> 02:43.000 Und das war ein Riesendrama. 02:43.000 --> 02:45.000 So ähnlich ist das ja dann da auch. 02:45.000 --> 02:50.000 Also das Problem an Backup ist, dass ja eigentlich eigentlich niemand Backup, alle wollen Restore. 02:50.000 --> 02:55.000 Weil das Backup ist ja das nervige, was alle immer versuchen, möglichst weit von sich wegzuschieben. 02:55.000 --> 02:58.000 Aber wenn ich es dann mal brauche, das ist dann der Punkt, wo es interessant wird. 02:58.000 --> 03:01.000 Und da ist dein USB-Stick von vor drei Monaten. 03:01.000 --> 03:03.000 Wo ist denn der? 03:03.000 --> 03:05.000 Kann man die Daten noch lesen? 03:05.000 --> 03:09.000 Hast du eine Ahnung, welche Revision deines Dokuments das denn ist, die da drauf ist? 03:09.000 --> 03:13.000 Ist in den letzten drei Monaten irgendetwas Relevantes passiert, möglicherweise? 03:13.000 --> 03:16.000 Ja, genau. Hast du weitergeschrieben? Hast du nicht weitergeschrieben? 03:16.000 --> 03:19.000 War das bevor du den Kaffee über deinen Laptop gekippt hast? 03:19.000 --> 03:20.000 Oder danach? 03:20.000 --> 03:22.000 Oder bevor die Katze über die Tastatur gelaufen ist? 03:22.000 --> 03:24.000 Das sind alles so Fragen. 03:24.000 --> 03:27.000 Da muss man sich schon ein bisschen mit beschäftigen. 03:27.000 --> 03:30.000 Und das geht uns am Ende des Tages, geht uns IT-Worker das irgendwie alle an. 03:30.000 --> 03:35.000 Und ja, klar kann man sagen, wenn ich jetzt hier meinen Code entwickelt, dann habe ich ein Gitre-Pository. 03:35.000 --> 03:39.000 Aber wenn ich das Lösche noch nicht gepusht habe, dann ist das trotzdem ungünstig. 03:39.000 --> 03:43.000 Weil das wäre jetzt tatsächlich so mein erster Ansatz. 03:43.000 --> 03:47.000 Ich tatsächlich betrachte diese Gitre-Positories in meiner persönlichen Backup-Strategie, 03:47.000 --> 03:50.000 also zumindest mal ein Baustein. 03:50.000 --> 03:55.000 Also ich habe halt so ein ganz normales Backup, wo mir halt so das in Ubuntu eingebaute Dingen 03:55.000 --> 03:58.000 mehr da was auf eine andere Festplatte spiegelt und so ähnliches. 03:58.000 --> 04:02.000 Aber ich denke halt eben so gemäß des Eichhörnchen-Prinzips ist es ja zumindest nicht verkehrt, 04:02.000 --> 04:08.000 wenn man halt Git und ähnliches hat, um, sagen wir mal, Redundanz einfach sozusagen 04:08.000 --> 04:11.000 jetzt nicht komplett versehentlich herzustellen. 04:11.000 --> 04:16.000 Aber sozusagen dem Zufallsfaktor irgendwo wird sich das dann schon verteilen. 04:16.000 --> 04:19.000 Zumindest Raum gibt und das auch ein bisschen mit einplanet. 04:19.000 --> 04:22.000 Ist das Teil einer validen Backup-Strategie oder bild ich mir was ein? 04:22.000 --> 04:25.000 Nee, auf jeden Fall. Das ist auf jeden Fall Teil einer Backup-Strategie. 04:25.000 --> 04:29.000 Das Problem ist, wenn dein Server gerade nicht erreichbar ist, weil bei OVH das Rechenzentrum abbrennt 04:29.000 --> 04:33.000 und du dann den Kaffee über deinen Laptop kippst, dann ist das trotzdem ungünstig. 04:33.000 --> 04:38.000 Also es gibt da ja immer, das Leben, es gibt nichts, was es nicht gibt, das Leben findet immer einen Weg, 04:38.000 --> 04:41.000 dir im Zweifelsfall den Weg zu deinen Backups zu erschweren. 04:41.000 --> 04:45.000 Und das Projekt, was wir gestartet haben, das heißt RESTIC, 04:45.000 --> 04:49.000 und da haben wir auch so ein bisschen gesammelt, was Leuten schon alles passiert ist. 04:49.000 --> 04:54.000 Und es ist ganz erstaunlich, wie viel hart wer doch kaputt geht, wenn man mal genauer hinschaut. 04:54.000 --> 04:58.000 So die Festplatte, auf die man das vor drei Monaten noch geschoben hat, 04:58.000 --> 05:01.000 wenn die nicht mehr lesbar ist, weil die Festplatte einfach den Geist aufgegeben hat, 05:01.000 --> 05:03.000 dann ist das auch sehr ungünstig. 05:03.000 --> 05:08.000 Ja, also ich glaube, es kennt jeder diesen Anwendungsfall irgendwie, 05:08.000 --> 05:11.000 man hat vermeintlicherweise doch irgendwo ein Backup. 05:11.000 --> 05:15.000 Ich habe das auch noch von irgendeiner, keine Ahnung, Musik von früher, 05:15.000 --> 05:20.000 aber wenn ich jetzt heute die Festplatte anschließe, funktioniert irgendwie gar nichts. 05:20.000 --> 05:23.000 Wir haben jetzt aber über verschiedene Sachen gesprochen. 05:23.000 --> 05:27.000 Einmal so Code, den wir halt über GitHub pflegen 05:27.000 --> 05:34.000 und da mit irgendwie so eine Art Backup by Design oder verteiltes Backup by Design machen irgendwie so. 05:34.000 --> 05:40.000 Wir haben über Files gesprochen, wie jetzt mein Word-Dokument mit der Masterarbeit, 05:40.000 --> 05:47.000 was wir auf die Festplatte, Entschuldigung, oder externe Festplatte oder USB-Stick ziehen. 05:47.000 --> 05:51.000 Und dann fällt mir halt auch noch so was ein, wie Daten in der Datenbank, 05:51.000 --> 05:57.000 die man halt irgendwie auch ständig mal updaten oder Backupen möchte, 05:57.000 --> 06:05.000 um da halt ein valides Datensatz zu haben, den ich im Notfall, was ja schon gesagt, restoring kann. 06:05.000 --> 06:09.000 Jetzt, was ich mich so frage, ist das alles das Gleiche? 06:09.000 --> 06:11.000 Ist Backup gleich Backup? 06:11.000 --> 06:14.000 Oder was sind so da die Unterschiede? 06:14.000 --> 06:16.000 Das ist eigentlich eine sehr gute Frage. 06:16.000 --> 06:18.000 Am Ende des Tages sind es ja alles Daten. 06:18.000 --> 06:23.000 Das Problem ist so ein bisschen, dass unterscheidet sich dann in den Feinheiten dann doch, 06:23.000 --> 06:28.000 weil so eine SQL-Datenbank, da kann ich zwar die Dateien sichern, auf die der SQL Server das geschrieben hat, 06:28.000 --> 06:33.000 manche von diesen Programmen sind aber nicht besonders glücklich, wenn man denen einfach die Dateien wiedergibt. 06:33.000 --> 06:38.000 Da wäre es besser, wenn man erstmal eine SQL-Damp macht, das dann sichert und das dann wiederherstellt. 06:38.000 --> 06:44.000 Bei den Familienfotos ist es eigentlich egal, die sichere ich als Dateien, kann sie als Dateien wiederherstellen. 06:44.000 --> 06:48.000 Da ist eher dann interessant, was sind die Metadaten zu diesen Dateien? 06:48.000 --> 06:50.000 Wann habe ich die gemacht, wann habe ich die verändert? 06:50.000 --> 06:55.000 Das Word-Dokument, das ist die Masterarbeit, das ist dann nochmal so ein bisschen was anderes, 06:55.000 --> 06:59.000 weil das ein einziges Dokument ist, was sich die ganze Zeit verändert. 06:59.000 --> 07:01.000 Es gibt auch noch viel mehr Daten. 07:01.000 --> 07:04.000 Also wenn man jetzt auf einem Linux-System, auf irgendeinem Server mal schaut, 07:04.000 --> 07:09.000 dann hat man ja ganz viele Daten, wo man eigentlich denkt, die wären gar nicht so spannend zu sichern, 07:09.000 --> 07:13.000 weil welche Programme ich da jetzt installiert habe, die kann ich ja jederzeit wieder installieren. 07:13.000 --> 07:15.000 Ist ja überhaupt kein Problem. 07:15.000 --> 07:19.000 Aber wenn ich es dann in der Praxis doch tun muss, dann ist das doch schon ganz schön viel Arbeit. 07:19.000 --> 07:24.000 Also gerade wenn ein Server nicht mehr erreichbar ist und auch nicht mehr wiederhergestellt werden kann, 07:24.000 --> 07:28.000 dann from scratch zu starten, das ist doch schon erheblich aufwendig. 07:28.000 --> 07:33.000 Und am Ende des Tages läuft es immer darauf hinaus, was man sichern müsste, sind dann halt die Daten, 07:33.000 --> 07:35.000 also die Inhalte, aber auch die Metadaten. 07:35.000 --> 07:43.000 Welcher Dateiname, mit welchem Modifikationszeitpunkt, mit welchen Berechtigungen war, in welchem Verzeichnis abgelegt. 07:43.000 --> 07:47.000 Wenn man das nachher nicht mehr hat, das hat jeder kennt das, der schon mal versucht hat, 07:47.000 --> 07:50.000 Fotos von einer kaputten SD-Karte zu kratzen. 07:50.000 --> 07:55.000 Da gibt es Fotorecovery-Software, die stellt aber nur die Inhalte wieder her und nicht die Dateinamen. 07:55.000 --> 07:58.000 Wenn man das dann nachher zuordnen muss, das ist eine heiten Arbeit. 07:58.000 --> 08:00.000 Das will man eigentlich auch nicht. 08:00.000 --> 08:05.000 Das heißt ja eigentlich, für unterschiedliche Szenarien braucht man auch unterschiedliche Strategien, 08:05.000 --> 08:10.000 wie man Daten backup, also was mir so irgendwie sofort in den Sinn kommt. 08:10.000 --> 08:14.000 Ich bin hier Mac-Nutzer, da schließe ich halt mein Time Machine Backup an 08:14.000 --> 08:19.000 und dann im Idealfall musste ich nicht nochmal die ganze Festplatte runterziehen, 08:19.000 --> 08:21.000 sondern macht halt ein inkrementelles Backup. 08:21.000 --> 08:25.000 Das bedeutet gehen wir wahrscheinlich jetzt gleich mal noch drauf ein im Detail, 08:25.000 --> 08:30.000 sodass halt nur die Sachen, die Änderungen sozusagen gespeichert werden. 08:30.000 --> 08:32.000 Wenn ich mir mal angucke, wie ganz viele Moderne, 08:32.000 --> 08:38.000 sagen wir mal online Tools, wo ich irgendwelche Texteschreibe oder ähnliches, Datenbackup, 08:38.000 --> 08:42.000 dann kann ich auch immer durch die, du hast es vorhin schon angesprochen, Revisionen skippen. 08:42.000 --> 08:46.000 Und für meine Datenbank will ich das vielleicht genauso machen, 08:46.000 --> 08:52.000 wo ich das so sage, gibt es überhaupt andere Möglichkeiten oder will ich überhaupt was anderes? 08:52.000 --> 08:56.000 Eigentlich willst du dir ja um Backup möglichst wenig Gedanken machen. 08:56.000 --> 08:58.000 Und das ist eigentlich so der zentrale Kernpunkt, 08:58.000 --> 09:01.000 weil im Endeffekt nachher sind es ja nur Bytes, die du irgendwie sicherst. 09:01.000 --> 09:03.000 Da gibt es cool, da gibt es Metadaten dazu. 09:03.000 --> 09:06.000 Und es sollte vielleicht auch irgendwie Speichereffizient sein, 09:06.000 --> 09:09.000 aber abgesehen davon finde ich es eigentlich das allerwichtigste, 09:09.000 --> 09:12.000 das sollte so automatisiert wie möglich sein. 09:12.000 --> 09:16.000 Weil ich habe mich früher immer, es ist jetzt früher, ist jetzt 2014 aber auch davor, 09:16.000 --> 09:19.000 ich habe mich immer gefragt, wie kann ich das so machen, 09:19.000 --> 09:22.000 dass selbst ich, ich bin faul, da gebe ich zu. 09:22.000 --> 09:24.000 Ich bin nicht sonst Entwickler auch teilweise, 09:24.000 --> 09:26.000 denn wir Entwickler sind ja alle auch immer dazu geneigt, 09:26.000 --> 09:30.000 den Weg des geringsten Widerstands zu gehen, das kennt ihr ja auch sicher. 09:30.000 --> 09:35.000 Und ein Backup muss, das muss flutschen, weil sonst mache ich das nicht. 09:35.000 --> 09:39.000 Und da gehört halt alles Mögliche dazu, da gehört dazu nur die nötigsten Daten zu sichern 09:39.000 --> 09:41.000 und das auf eine Weise, die möglichst effizient ist. 09:41.000 --> 09:44.000 Dazu gehört aber auch, wenn ich irgendwo im Urlaub bin 09:44.000 --> 09:47.000 und am Code Weiter Bastel, das habe ich ja auch schon gemacht, 09:47.000 --> 09:49.000 wenn ich vielleicht irgendwie nur so das schäppige Hotelwifi, 09:49.000 --> 09:52.000 dann soll das vielleicht trotzdem einfach schnell gehen. 09:52.000 --> 09:55.000 Und ich möchte mir gar nicht so viele Gedanken darum machen, 09:55.000 --> 09:57.000 ich möchte jetzt ein Backup machen. 09:57.000 --> 09:59.000 Okay, ich muss diesem Snapshot jetzt einen Namen geben. 09:59.000 --> 10:01.000 Hm, welchen nehme ich denn da? 10:01.000 --> 10:03.000 Das ist zu viel, das muss einfach, das muss einfach flutschen. 10:03.000 --> 10:06.000 Ich starte mein Skript, es sichert das und alles prima 10:06.000 --> 10:09.000 und ich habe nachher trotzdem irgendwie die Metadaten. 10:09.000 --> 10:13.000 Weil wenn man das Backup, wenn der Backup selber als Vorgang zu viel Reibung hat, 10:13.000 --> 10:15.000 dann machen es Leute nicht. 10:15.000 --> 10:18.000 Das heißt, ich bin eigentlich damit gestartet, 10:18.000 --> 10:21.000 wenn man irgendein Programm, irgendein Tool entwickelt, 10:21.000 --> 10:24.000 das muss eigentlich dieser Vorgang Backup, der blöd ist, 10:24.000 --> 10:26.000 der muss so reibungslos wie möglich sein 10:26.000 --> 10:28.000 und der muss so schnell wie möglich sein, 10:28.000 --> 10:30.000 damit es Leute machen. 10:30.000 --> 10:33.000 Weil je mehr Reibung, desto weniger Leute machen das. 10:33.000 --> 10:36.000 Ja, also das ist auch so was, was ich mir denke. 10:36.000 --> 10:39.000 Also am allereinfachsten ist es ja sozusagen, 10:39.000 --> 10:41.000 du musst dir gar keine Gedanken machen, 10:41.000 --> 10:44.000 irgendwo läuft eine Art Skript, wie du sagst, 10:44.000 --> 10:46.000 per Groundjob wird es ausgeführt sozusagen. 10:46.000 --> 10:48.000 Und jetzt nehme ich wieder meinen Time Machine Backup, 10:48.000 --> 10:52.000 wenn ich hier zu Hause bin und schließ halt meine externe Festplatte an, 10:52.000 --> 10:56.000 dann wird das Backup halt gemacht auf diese Platte. 10:56.000 --> 10:58.000 Dann musst du die Platte aber erstmal physisch anschließen 10:58.000 --> 11:00.000 und du musst physisch zu Hause sein. 11:00.000 --> 11:02.000 Das gehört zu deiner Strategie dann dazu. 11:02.000 --> 11:05.000 Genau, und das ist halt ein Riesenproblem, 11:05.000 --> 11:08.000 weil ich habe es in der Vorbesprechung schon kurz gesagt, 11:08.000 --> 11:10.000 die Platte liegt hier neben dem Computer. 11:10.000 --> 11:14.000 Nein, jetzt worst case angenommen, ich gehe raus, 11:14.000 --> 11:16.000 mein Computer wird mit der Platte geklaut 11:16.000 --> 11:20.000 oder es entzündet sich ein kleines Feuer 11:20.000 --> 11:23.000 oder es gibt einen Strom Kurzschluss oder wie auch immer, 11:23.000 --> 11:25.000 und die Geräte gehen kaputt. 11:25.000 --> 11:28.000 Es ist ja sozusagen worst case, ja. 11:28.000 --> 11:30.000 Dann ist ja beides weg. 11:30.000 --> 11:33.000 Genau, d. h. Daten und das Backup. 11:33.000 --> 11:37.000 Genau, d. h. eigentlich ist meine Backup-Strategie 11:37.000 --> 11:40.000 in dem Fall ja überhaupt nicht ausreichend. 11:40.000 --> 11:42.000 Dann könntest du dir ja überlegen, 11:42.000 --> 11:45.000 eine Version deines Backups in die Cloud zu legen. 11:45.000 --> 11:51.000 Irgendwo AWS S3 oder Google Drive oder Dropbox oder sonst was. 11:51.000 --> 11:53.000 Das Problem ist, das willst du ja vielleicht 11:53.000 --> 11:56.000 mit der Masterarbeit, könnte ich mir das gut vorstellen. 11:56.000 --> 11:58.000 Das sind ja meistens keine so wahnsinnig geheimen 11:58.000 --> 12:00.000 Forschungsinformationen, aber wenn es da um 12:00.000 --> 12:02.000 deine privaten Fotos geht, dann willst du das ja 12:02.000 --> 12:04.000 vielleicht nicht unbedingt. 12:04.000 --> 12:06.000 Und das ist so der Punkt, da bin ich damals gestartet. 12:06.000 --> 12:09.000 Ich hatte auch so Festplatten, die ich neben dem Rechner 12:09.000 --> 12:11.000 in so einem Einsteck SATA Gehäuse, 12:11.000 --> 12:13.000 wo man die immer nicht ein- und ausbauen muss. 12:13.000 --> 12:16.000 Und dann habe ich mir überlegt, das ist vielleicht gar nicht so gut, 12:16.000 --> 12:18.000 weil dann, wenn die Festplatte doch mal im Hierunter fällt, 12:18.000 --> 12:20.000 dann ist es ja blöd. 12:20.000 --> 12:22.000 Dann haben wir uns mit mehreren Leuten zusammengetan, 12:22.000 --> 12:23.000 irgendwo einen kleinen Server gemietet, 12:23.000 --> 12:24.000 und dann war halt das Problem. 12:24.000 --> 12:26.000 Da gab es natürlich auch noch andere Leute, 12:26.000 --> 12:27.000 die administrativen Zugriff hatten. 12:27.000 --> 12:30.000 Und dann habe ich mir überlegt, ja, das ist ja vielleicht nicht so schön, 12:30.000 --> 12:32.000 wenn da andere Leute dann Zugriff auf meine Daten haben. 12:32.000 --> 12:35.000 Weil ich will mir ja genau vorher keine Gedanken machen müssen, 12:35.000 --> 12:38.000 welche inkriminierenden Bilder sind denn da jetzt dabei? 12:38.000 --> 12:40.000 Oder habe ich da irgendwie doch mal in meiner Shell History 12:40.000 --> 12:42.000 einen besonders dummen Befehl ausgeführt, 12:42.000 --> 12:44.000 den man nachher dann da sehen könnte. 12:44.000 --> 12:46.000 Und irgendjemand hat da Spaß dran. 12:46.000 --> 12:48.000 Und das ist dann der andere Punkt, 12:48.000 --> 12:50.000 dass ein Backup-Programm so gebaut sein muss, 12:50.000 --> 12:52.000 dass es auf der einen Seite Safety gibt. 12:52.000 --> 12:54.000 Also ich kann meine Daten wiederherstellen. 12:54.000 --> 12:58.000 Und auf der anderen Seite aber auch Security gibt, 12:58.000 --> 13:00.000 dass niemand anders außer mir an diese Daten rankommt, 13:00.000 --> 13:03.000 obwohl das vielleicht in irgendeinem Clouddeals liegt. 13:03.000 --> 13:07.000 Ja, und der Punkt, den du gerade so beiläufig gesagt hast, 13:07.000 --> 13:09.000 dann haben wir uns mal eben so ein Server besorgt. 13:09.000 --> 13:11.000 Ist natürlich jetzt auch was, 13:11.000 --> 13:14.000 dass so die in diesem Call versammelt und sicherlich hinkriegen würden. 13:14.000 --> 13:16.000 Aber da sind wir, glaube ich, die Ausnahme. 13:16.000 --> 13:20.000 Ja, man kann natürlich auch fertige Dienste benutzen. 13:20.000 --> 13:22.000 Also Dropbox zum Beispiel ist ein gutes Beispiel. 13:22.000 --> 13:24.000 Das kann man sich ja einfach fertig klicken. 13:24.000 --> 13:26.000 Und dann macht man da halt seine Backups drauf. 13:26.000 --> 13:28.000 Aber das muss dann auch wieder so sein, 13:28.000 --> 13:30.000 dass das irgendwie in ein Prozess eingebettet ist, 13:30.000 --> 13:32.000 dass man immer sagt, okay, immer abends, 13:32.000 --> 13:35.000 immer top ausmache, da schiebe ich einmal meine Daten in die Dropbox. 13:35.000 --> 13:37.000 So, das könnte man machen. 13:37.000 --> 13:40.000 Aber das sollte idealerweise ja auch automatisiert sein. 13:40.000 --> 13:43.000 Und auch Dropbox ist natürlich als amerikanische Firma. 13:43.000 --> 13:45.000 Die sind natürlich auch, das ist nicht garantiert, 13:45.000 --> 13:47.000 dass da nicht mal jemand anderes Zugriff drauf hat. 13:47.000 --> 13:49.000 Das heißt, eigentlich wäre es cool, wenn man da was hinlegt, 13:49.000 --> 13:51.000 das auch sicher zu verschlüsseln. 13:51.000 --> 13:56.000 Ja, cool beziehungsweise überhaupt durch zu argumentieren. 13:56.000 --> 13:58.000 Also ich sage das hier als in einem Haushalt 13:58.000 --> 14:01.000 mit einer im Medizinbereich tätigen Person sitzen, 14:01.000 --> 14:03.000 die an einer ja nicht Abschlussarbeit, 14:03.000 --> 14:05.000 aber sowas vergleichbaren werkelt. 14:05.000 --> 14:07.000 Und immer wenn ich halt eben sage, ja, Backup, 14:07.000 --> 14:10.000 aufwendig und anstrengend mit dem Computer und so. 14:10.000 --> 14:14.000 Da klickt ihr halt diesem Dienst, kostet nicht viel, ja, aber Datenschutz. 14:14.000 --> 14:16.000 Und das stimmt ja alles auch, 14:16.000 --> 14:18.000 weil das würde ich halt jetzt noch so in diesem Katalog 14:18.000 --> 14:20.000 von Anforderungen dazu packen. 14:20.000 --> 14:22.000 Das muss nicht nur alles so da sein, 14:22.000 --> 14:25.000 im Sinne von verschlüsselt und redundant und was nicht alles, 14:25.000 --> 14:29.000 sondern halt eben auch noch vertrauenswürdig muss es halt sein, 14:29.000 --> 14:31.000 also dir auch glaubt, dass du das bist. 14:31.000 --> 14:33.000 Und das wäre jetzt eben jetzt so, in deinem Szenario, 14:33.000 --> 14:34.000 ich kann dich da jetzt sitzen sehen. 14:34.000 --> 14:36.000 Hinter dir ist jetzt kein Man in Black zu sehen. 14:36.000 --> 14:38.000 Okay, sicherlich. 14:38.000 --> 14:40.000 Aber das ist halt relativ schwierig bei den meisten Softwareprodukten, 14:40.000 --> 14:42.000 die halt ein Landing-Page sind. 14:42.000 --> 14:44.000 Auf jeden Fall, ja. 14:44.000 --> 14:47.000 Da sollte eigentlich das System so im Design das drin haben, 14:47.000 --> 14:50.000 dass du sichere Verschlüsselung da drin hast, 14:50.000 --> 14:53.000 dass du dir da nicht so viel Gedanken drum machen musst, 14:53.000 --> 14:56.000 dass aber auch beim Wiederunterladen von Daten geprüft wird, 14:56.000 --> 14:58.000 sind die unmodifiziert hatte oder hat da irgendjemand dran rumgespielt. 14:58.000 --> 15:01.000 Das gehört alles eigentlich zu der guten Software mit dazu. 15:01.000 --> 15:03.000 Ja, und das wäre ja zum Beispiel so was, 15:03.000 --> 15:05.000 wo ich jetzt, wenn man Apple-Nutzer wäre, 15:05.000 --> 15:07.000 bei so was bei Time Machine sagen würde, 15:07.000 --> 15:09.000 das ist da ja gewährleistet, 15:09.000 --> 15:11.000 weil das kommt ja alles aus einer Hand. 15:11.000 --> 15:13.000 Das macht die Firma, die auch deinen Computer macht. 15:13.000 --> 15:15.000 Das heißt, wenn die dir was übelst will, hast du eh verloren. 15:15.000 --> 15:17.000 Also kannst du davon ausgehen, 15:17.000 --> 15:19.000 dass du diesen Trade-Off schon gemacht hast 15:19.000 --> 15:21.000 und einfach sagst, ja, das geht. 15:21.000 --> 15:23.000 Und das geht ja alles aus einer Hand. 15:23.000 --> 15:25.000 Hans hat ja den Workflow beschrieben. 15:25.000 --> 15:27.000 Das funktioniert ja alles relativ gut. 15:27.000 --> 15:29.000 Und das ist ja jetzt noch besser als Time Machine. 15:29.000 --> 15:33.000 Indem man im Prinzip bei Git abguckt, 15:33.000 --> 15:35.000 so bin ich da zumindest gestartet. 15:35.000 --> 15:38.000 Ich habe mir überlegt, man hat Daten, man hat Metadaten. 15:38.000 --> 15:40.000 Ich möchte ordentliche Verschlüsselung haben 15:40.000 --> 15:42.000 und es soll möglichst gut flutschen. 15:42.000 --> 15:44.000 Es soll möglichst einfach auch sein. 15:44.000 --> 15:46.000 Und da habe ich mir dann 2014 überlegt, 15:46.000 --> 15:48.000 ich wollte Ihnen ein Projekt haben, 15:48.000 --> 15:50.000 um mal die Programmiersprache Go zu lernen. 15:50.000 --> 15:52.000 Nicht das besser, als wenn man dann ein Projekt hat. 15:52.000 --> 15:54.000 Und dachte mir, ich baue mir das jetzt mal 15:54.000 --> 15:56.000 und ich rede auch mal mit meinen Kollegen. 15:56.000 --> 15:58.000 Ich arbeite als Penetrationstester. 15:58.000 --> 16:00.000 Und da ist es immer ganz gut, 16:00.000 --> 16:01.000 wenn man so in der Mittagspause 16:01.000 --> 16:03.000 dann mit ein paar Leuten mal zusammen brainstormt. 16:03.000 --> 16:05.000 Was wäre denn eigentlich nett? 16:05.000 --> 16:07.000 Und im Prinzip bin ich da hergegangen 16:07.000 --> 16:09.000 und habe erst mal gesagt, okay, es gibt Dateien, 16:09.000 --> 16:10.000 die enthalten Daten. 16:10.000 --> 16:12.000 Das ist eigentlich immer das, ob das jetzt ein SQL-Dump ist 16:12.000 --> 16:13.000 oder Familienfotos, 16:13.000 --> 16:15.000 ist eigentlich immer Dateien mit Daten drin. 16:15.000 --> 16:17.000 Es wäre ja eigentlich schon mal ganz schön, 16:17.000 --> 16:19.000 wenn man sich wenig überlegen müsste 16:19.000 --> 16:21.000 und nicht erst immer überlegen müsste, 16:21.000 --> 16:22.000 möchte ich jetzt ein Vollbackup 16:22.000 --> 16:24.000 oder ein inkrementelles Backup machen. 16:24.000 --> 16:26.000 Das ist das, was zu dem Zeitpunkt immer 16:26.000 --> 16:28.000 die Programme so unterschieden haben. 16:28.000 --> 16:30.000 Das heißt, bisher war es dann so, 16:30.000 --> 16:32.000 dass ein Programm ein Backup gemacht hat. 16:32.000 --> 16:34.000 Es hat alle Dateien in der irgendwo gesichert. 16:34.000 --> 16:36.000 Das macht auch Time-Machine so. 16:36.000 --> 16:38.000 Und wenn man das ein zweites Mal anstößt 16:38.000 --> 16:40.000 und sagt, ich will nur die Unterschiede sichern, 16:40.000 --> 16:42.000 dann werden immer nur die Dateien neu gespeichert, 16:42.000 --> 16:44.000 die sich seitdem verändert haben. 16:44.000 --> 16:46.000 Das ist ganz prima, weil es eben Speicherplatz spart. 16:46.000 --> 16:49.000 Ich brauche nicht jedes Mal die kompletten Dateien überall haben. 16:49.000 --> 16:51.000 Das hat den Nachteil aber, 16:51.000 --> 16:53.000 dass es bei einem Restore dann so ist, 16:53.000 --> 16:55.000 dass ich erst das letzte Vollbackup runterladen muss 16:55.000 --> 16:57.000 und dann seitdem alle inkrementellen Backups. 16:57.000 --> 16:59.000 Wenn ich einen Bild habe, 16:59.000 --> 17:01.000 was ich einmal abgespeichert habe, 17:01.000 --> 17:03.000 den nächsten Tag habe ich es bearbeitet, 17:03.000 --> 17:05.000 dann ist da eine Kopie von, dann habe ich es nochmal bearbeitet, 17:05.000 --> 17:07.000 dann ist da wieder eine Kopie davon, 17:07.000 --> 17:09.000 dann muss ich, wenn ich das komplett ein Verzeichnis wiederherstellen will, 17:09.000 --> 17:11.000 erst das Vollbackup runterladen, dann alle Dateien. 17:11.000 --> 17:13.000 Das fand ich irgendwie so konzeptuell. 17:13.000 --> 17:15.000 Das ist zwar schon ein Fortschritt gegenüber 17:15.000 --> 17:17.000 immer einem Vollbackup machen, 17:17.000 --> 17:19.000 aber da muss es ja noch irgendwas Besseres gehen. 17:19.000 --> 17:21.000 Dann habe ich mir überlegt, 17:21.000 --> 17:23.000 wie ist das denn mit Daten an sich? 17:23.000 --> 17:25.000 Die kann ich ja, wenn ich eine große Datei habe, 17:25.000 --> 17:27.000 dann kann ich die ja zum Beispiel in viele kleine Stückchen schneiden 17:27.000 --> 17:29.000 und die Stückchen einzeln abspeichern. 17:29.000 --> 17:31.000 Und wenn ich diese Stückchen irgendwo nochmal wiederfinde, 17:31.000 --> 17:33.000 dann würde ja eigentlich auch eine Referenz 17:33.000 --> 17:35.000 auf diese Stückchen reichen. 17:35.000 --> 17:37.000 Dann habe ich mal so ein bisschen rumgeguckt 17:37.000 --> 17:39.000 und habe einen ziemlich coolen Algorithmus gefunden. 17:39.000 --> 17:41.000 Der ist von einem Herrn namens Rabin 17:41.000 --> 17:43.000 damals entwickelt worden 17:43.000 --> 17:45.000 und das läuft auf sogenanntes Content-Defined-Chunking hinaus. 17:45.000 --> 17:47.000 Das ist jetzt schon mal ein ganz schöner Zungenbrecher. 17:47.000 --> 17:49.000 Die Idee dabei ist, 17:49.000 --> 17:51.000 dass man Dateien nicht als Ganzes sichert, 17:51.000 --> 17:53.000 sondern die in Stückchen auseinanderschneidet 17:53.000 --> 17:55.000 und dann diese Stückchen einzeln sichert. 17:55.000 --> 17:57.000 Und der Clou in der Sache ist, 17:57.000 --> 17:59.000 wenn ich vorne an so eine Datei 5-byte anhänge, 17:59.000 --> 18:01.000 dann ist das in meinem alten Backup-System 18:01.000 --> 18:03.000 mit vollen Inkrementell-Backup 18:03.000 --> 18:05.000 muss ich die Datei komplett nochmal sichern. 18:05.000 --> 18:07.000 Wenn man die Datei statisch 18:07.000 --> 18:09.000 in zum Beispiel ein megabyte große Stückchen teilt, 18:09.000 --> 18:11.000 dann sind alle Stückchen verändert, 18:11.000 --> 18:13.000 weil eben alle Grenzen sich um die 5-byte, 18:13.000 --> 18:15.000 die ich vorher vorne dran gehangen habe, 18:15.000 --> 18:17.000 verschoben haben. 18:17.000 --> 18:19.000 Und wenn man jetzt aber diese Schnittmarken 18:19.000 --> 18:21.000 dynamisch sucht und findet 18:21.000 --> 18:23.000 mit diesem Algorithmus, 18:23.000 --> 18:25.000 dann kann man halt erkennen, 18:25.000 --> 18:27.000 dass da am Anfang zwar 5-byte dazugekommen sind, 18:27.000 --> 18:29.000 aber ein megabyte weiter 18:29.000 --> 18:31.000 hinten diese Schnittmarke, 18:31.000 --> 18:33.000 die ist dann eben um 5-byte verschoben, 18:33.000 --> 18:35.000 da hat sich nur der erste Block geändert. 18:35.000 --> 18:37.000 Und das ist schon die erste Grundlage. 18:37.000 --> 18:39.000 Das heißt, der RESTIC, das Programm, 18:39.000 --> 18:41.000 geht her und schneidet alle Dateien 18:41.000 --> 18:43.000 in diese Stücke und speichert die einzeln ab. 18:43.000 --> 18:45.000 Die werden dann natürlich wieder zu größeren Dateien 18:45.000 --> 18:47.000 zusammen gesammelt 18:47.000 --> 18:49.000 und die werden auch sicher verschlüsselt 18:49.000 --> 18:51.000 und werden dann abgelegt. 18:51.000 --> 18:53.000 Und der zweite Teil, die Metadaten, 18:53.000 --> 18:55.000 werden im Prinzip als 18:55.000 --> 18:57.000 JSON-Dokumente, das kennen die Entwickler unter euch jetzt auch wieder, 18:57.000 --> 18:59.000 da wird dann abgelegt, 18:59.000 --> 19:01.000 da gibt es eine Datei, die heißt Test 19:01.000 --> 19:03.000 und da sind folgende Stückchen drin. 19:03.000 --> 19:05.000 Und dieses Stückchen identifiziert man einfach 19:05.000 --> 19:07.000 anhand der Schad 256-Hash 19:07.000 --> 19:09.000 von dem Inhalt. 19:09.000 --> 19:11.000 Das war jetzt ein bisschen technisch, 19:11.000 --> 19:13.000 aber im Prinzip ist das 19:13.000 --> 19:15.000 ein Interressable Storage. 19:15.000 --> 19:17.000 Das heißt, ich habe Daten, die werden adressiert 19:17.000 --> 19:19.000 aufgrund ihres Inhalts 19:19.000 --> 19:21.000 und dann sage ich einfach, 19:21.000 --> 19:23.000 die Datei besteht aus diesen Stückchen. 19:23.000 --> 19:25.000 Und schon hatten wir ein relativ gutes System, 19:25.000 --> 19:27.000 was gar keinen Unterschied mehr braucht 19:27.000 --> 19:29.000 zwischen Voll- und Inkrementellen-Backup. 19:29.000 --> 19:31.000 Was jedes Mal einfach nur hergeht, 19:31.000 --> 19:33.000 ein Dateibaum durchgeht 19:33.000 --> 19:35.000 und sagt, okay, den muss ich jetzt hier sichern 19:35.000 --> 19:37.000 und guckt, was liegen dafür Dateien drin? 19:37.000 --> 19:39.000 Was sind die Stückchen, 19:39.000 --> 19:41.000 diese Schnipsel dieser Dateien? 19:41.000 --> 19:43.000 Dann muss ich die neu speichern 19:43.000 --> 19:45.000 und anschließend Metadaten schreibt 19:45.000 --> 19:47.000 und sagt, in diesem Verzeichnis 19:47.000 --> 19:49.000 zu diesem Zeitpunkt lagen diese Dateien, 19:49.000 --> 19:51.000 die aus folgenden Schnipseln bestanden. 19:51.000 --> 19:53.000 Ja, das war's. 19:53.000 --> 19:55.000 Und das ist im Prinzip diese Idee. 19:55.000 --> 19:57.000 Dieses Chunking macht doch glaube ich 19:57.000 --> 19:59.000 so Zeug wie Dropbox auch, 19:59.000 --> 20:01.000 oder hat das dann nicht diese floating 20:01.000 --> 20:03.000 Chunkmarker? 20:03.000 --> 20:05.000 Da bin ich mir nicht sicher. 20:05.000 --> 20:07.000 Als ich da mal reingeguckt habe, 20:07.000 --> 20:09.000 haben sie glaube ich so feste Blöcke von, 20:09.000 --> 20:11.000 das ist aber relativ alt, 20:11.000 --> 20:13.000 also R-Sync hat das populär gemacht. 20:13.000 --> 20:15.000 Aber wenn man mit R-Sync eine Datei, 20:15.000 --> 20:17.000 das ist ein Tool auch für Linux Unix, 20:17.000 --> 20:19.000 eine Datei überträgt, wo sich 20:19.000 --> 20:21.000 in der Mitte irgendwas geändert hat, 20:21.000 --> 20:23.000 dann wird R-Sync feststellen 20:23.000 --> 20:25.000 auf beiden Seiten der Übertragung. 20:25.000 --> 20:27.000 Ich habe schon die Daten, ich muss nur das geändert übertragen. 20:27.000 --> 20:29.000 Da kommt ein sehr ähnlicher Algorithmus zum Einsatz. 20:29.000 --> 20:31.000 Wenn du jetzt sagst, dieser Algorithmus 20:31.000 --> 20:33.000 ist schon gut abgehangen. 20:33.000 --> 20:35.000 Was treibt denn andere Backup-Systeme dazu, 20:35.000 --> 20:37.000 den nicht auch zu verwenden? 20:37.000 --> 20:39.000 Das ist eine interessante Frage. 20:39.000 --> 20:41.000 Mittlerweile gibt es eine Reihe 20:41.000 --> 20:43.000 von Backup-Systemen, die das genauso machen. 20:43.000 --> 20:45.000 Die auch erkannt haben, 20:45.000 --> 20:47.000 dass das eine gute Idee ist. 20:47.000 --> 20:49.000 Ein großer Nachteil davon ist natürlich 20:49.000 --> 20:51.000 die etwas erweiterte Komplexität. 20:51.000 --> 20:53.000 Weil eine Datei in ein Megabyte Schnipsel 20:53.000 --> 20:55.000 auseinanderzuschneiden, ist natürlich viel einfacher, 20:55.000 --> 20:57.000 als die erst durchzugehen, 20:57.000 --> 20:59.000 um zu gucken, wo sind meine Schnippmarken. 20:59.000 --> 21:01.000 Das ist natürlich softwares Komplexitätsmäßig, 21:01.000 --> 21:03.000 könnte man sagen, ist das erhöhte Komplexität. 21:03.000 --> 21:05.000 Und es ist natürlich auch etwas 21:05.000 --> 21:07.000 aufwendiger, wenn man so eine Datei durchgeht, 21:07.000 --> 21:09.000 um Schnippmarken zu finden. 21:09.000 --> 21:11.000 Das dauert länger, als wenn man die einfach 21:11.000 --> 21:13.000 in statische Blöcke auseinander teilt. 21:13.000 --> 21:15.000 Aber ich vermute mal, 21:15.000 --> 21:17.000 dass bei so Sachen wie Komplexität 21:17.000 --> 21:19.000 und Performance dir da an der Stelle 21:19.000 --> 21:21.000 auch die Wahl deiner spezifischen 21:21.000 --> 21:23.000 Programmiersprache für das Projekt 21:23.000 --> 21:25.000 ziemlich entgegen kommt. 21:25.000 --> 21:27.000 Das könnte man so sagen, 21:27.000 --> 21:29.000 das hat von Anfang an sehr gut performt. 21:29.000 --> 21:31.000 Auf meiner damaligen Hardware, 21:31.000 --> 21:33.000 X220, Laptop von Lenovo, 21:33.000 --> 21:35.000 da hat das schon, 21:35.000 --> 21:37.000 ohne dass ich das jetzt groß optimiert habe, 21:37.000 --> 21:39.000 hat das schon mehrere hundert Megabyte 21:39.000 --> 21:41.000 Durchsatz gemacht, 21:41.000 --> 21:43.000 allein also dieser Algorithmus, 21:43.000 --> 21:45.000 um diese Schnittmarken zu finden. 21:45.000 --> 21:47.000 Weil das ist ja das, was als Allererstes 21:47.000 --> 21:49.000 immer auf alle Daten drauf muss, 21:49.000 --> 21:51.000 um zu gucken, welche Schnipsel habe ich, 21:51.000 --> 21:53.000 wo muss ich, welche muss ich noch speichern. 21:53.000 --> 21:55.000 Und das ging erstaunlich schnell dafür, 21:55.000 --> 21:57.000 dass das eine garbage-collectede Sprache ist 21:57.000 --> 21:59.000 und dafür, dass sich da auf einem sehr hohen Level 21:59.000 --> 22:01.000 unterwegs sein kann, 22:01.000 --> 22:03.000 um das C implementieren zu müssen. 22:03.000 --> 22:05.000 Weil das war auch ein Ziel, 22:05.000 --> 22:07.000 das auf jeden Fall nicht in C 22:07.000 --> 22:09.000 oder einer Manual Memory Management Sprache 22:09.000 --> 22:11.000 oder sowas zu schreiben. 22:11.000 --> 22:13.000 Also Rust gab es damals noch nicht, 22:13.000 --> 22:15.000 das war noch vor der 1. oder 1. Version von Rust 22:15.000 --> 22:17.000 und Go war gerade raus 22:17.000 --> 22:19.000 und da brutz sich das eigentlich an. 22:19.000 --> 22:21.000 Das hat sich als eine sehr gute Wahl erwiesen. 22:21.000 --> 22:23.000 Das war auch das, worauf ich eigentlich hinaus wollte. 22:23.000 --> 22:25.000 Also Performance, das eine, das andere natürlich auch. 22:25.000 --> 22:27.000 Unter dem Sicherheitsaspekt 22:27.000 --> 22:29.000 möchte man da nicht das Risiko eingehen, 22:29.000 --> 22:31.000 das ist egal, wie kompetent man ist, 22:31.000 --> 22:33.000 einem da irgendwie der Speicherabhanden kommt 22:33.000 --> 22:35.000 und dann kann der Evil Attacker 22:35.000 --> 22:37.000 Gott weiß was lesen. 22:37.000 --> 22:39.000 Ja, interessanterweise ist es auch gar nicht so sehr, 22:39.000 --> 22:41.000 also das, was das Projekt 22:41.000 --> 22:43.000 Rustic das Backup-Programm ausmacht, 22:43.000 --> 22:45.000 ist interessanterweise gar nicht so sehr, 22:45.000 --> 22:47.000 die Sprache. 22:47.000 --> 22:49.000 Ja gut, da wir jetzt Go genommen haben, 22:49.000 --> 22:51.000 das war natürlich sehr nett, 22:51.000 --> 22:53.000 weil man dadurch, dass das jetzt auch ein Hype war, 22:53.000 --> 22:55.000 die letzten Jahre, haben wir natürlich 22:55.000 --> 22:57.000 sehr viele Leute gefunden, die da mit dran entwickeln. 22:57.000 --> 22:59.000 Aber eigentlich, das allerwichtigste 22:59.000 --> 23:01.000 ist diese Spezifikation, 23:01.000 --> 23:03.000 wie sind die Daten abgelegt? 23:03.000 --> 23:05.000 Da gibt es tatsächlich bei uns einen Textdokument, 23:05.000 --> 23:07.000 wo das Repository-Format 23:07.000 --> 23:09.000 wirklich eins zu eins ziemlich ausführlich 23:09.000 --> 23:11.000 dokumentiert ist, außerhalb des Codes. 23:11.000 --> 23:13.000 Weil wenn jetzt in 20 Jahren, 23:13.000 --> 23:15.000 dann gibt es vielleicht Go nicht mehr oder sowas, 23:15.000 --> 23:17.000 wenn in 20 Jahren jemand herkommt und sagt hier, 23:17.000 --> 23:19.000 ich habe von meinem Vater irgendwie so ein Repository, 23:19.000 --> 23:21.000 ich habe da das Passwort noch, die Implementierung gibt es aber nicht mehr, 23:21.000 --> 23:23.000 dann soll der in der Lage sein, 23:23.000 --> 23:25.000 das auch wieder herstellen zu können, ohne die konkrete Implementierung zu haben. 23:25.000 --> 23:27.000 Und das ist auch wieder so ein bisschen, 23:27.000 --> 23:29.000 so eine User-Interface-Sache, 23:29.000 --> 23:31.000 dass wenn jemand sagt, 23:31.000 --> 23:33.000 er möchte ein Backup machen, 23:33.000 --> 23:35.000 dann möchte er eigentlich ja restoring können 23:35.000 --> 23:37.000 und das auch in 20 Jahren noch. 23:37.000 --> 23:39.000 Und da muss man mit dem Format, 23:39.000 --> 23:41.000 mit dem Speicherformat auch sehr vorsichtig sein 23:41.000 --> 23:43.000 und da sehr mit Bedacht ran gehen, 23:43.000 --> 23:45.000 wenn man da Änderungen macht. 23:45.000 --> 23:47.000 Aber das würde natürlich jetzt heißen, 23:47.000 --> 23:49.000 wenn das Repository-Format, also im Prinzip 23:49.000 --> 23:51.000 am Ende das Herz des Backups 23:51.000 --> 23:53.000 so sauber spezifiziert ist, 23:53.000 --> 23:55.000 dann kann ich ja theoretisch hingehen 23:55.000 --> 23:57.000 und mit meinen eigenen Rastic-Kompatiblen 23:57.000 --> 23:59.000 klein basteln, der das spricht und liest 23:59.000 --> 24:01.000 und alles. 24:01.000 --> 24:03.000 Das haben auch Leute schon gemacht, 24:03.000 --> 24:05.000 da gibt es so drei oder vier, 24:05.000 --> 24:07.000 das ist aber hauptsächlich mal so als Fingerübung 24:07.000 --> 24:09.000 oder so. 24:09.000 --> 24:11.000 Ich weiß von mehreren Implementierungen, 24:11.000 --> 24:13.000 die da auch schon mal Daten dann einfach wieder hergestellt haben, 24:13.000 --> 24:15.000 einfach um zu gucken, wie funktioniert denn das. 24:15.000 --> 24:17.000 Da haben wir dann natürlich auch Lücken in der Spezifikation gefunden, 24:17.000 --> 24:19.000 weil ihr kennt das ja, 24:19.000 --> 24:24.000 das ist ja auch so ein Rastic-Kompatibler. 24:24.000 --> 24:26.000 Jetzt denke ich noch mal so in 24:26.000 --> 24:28.000 Use-Cases für mich. 24:28.000 --> 24:31.000 Wir haben jetzt viel am Anfang schon mal gesprochen, 24:31.000 --> 24:33.000 wir haben unsere normalen Files, 24:33.000 --> 24:35.000 die wir irgendwo ablegen, 24:35.000 --> 24:37.000 auch mal dickere Files oder sowas. 24:37.000 --> 24:39.000 Und ich denke halt, 24:39.000 --> 24:41.000 diesen Datenbank-File, den ich vorhin angesprochen habe. 24:41.000 --> 24:43.000 Klar, wir können eine Datenbank 24:43.000 --> 24:45.000 auch die Files nutzen, 24:45.000 --> 24:47.000 da hast du schon auf die Probleme hingewiesen. 24:47.000 --> 24:49.000 Wenn wir die Files auf einen SQL-Datenbank machen, 24:49.000 --> 24:52.000 vielleicht haben wir aber eine relativ große Datenbank, 24:52.000 --> 24:54.000 die halt irgendwie auch noch verteilt 24:54.000 --> 24:57.000 auf mehreren Charts liegt oder so. 24:57.000 --> 25:00.000 Man muss es halt irgendwie die Daten 25:00.000 --> 25:02.000 so redundant halten, 25:02.000 --> 25:04.000 dass du, 25:04.000 --> 25:06.000 dass du halt auch wenn ein Server, 25:06.000 --> 25:08.000 du hast ja den Fall von vorhin auch genannt, 25:08.000 --> 25:11.000 einen Datenzentrum brennt ab oder so. 25:11.000 --> 25:14.000 Und trotzdem wollen wir unsere Daten weiterhin haben. 25:14.000 --> 25:17.000 Könnte ich das mit RESTIC 25:17.000 --> 25:19.000 auch implementieren 25:19.000 --> 25:21.000 oder gibt es dafür schon 25:21.000 --> 25:23.000 Beispiele? 25:23.000 --> 25:25.000 Oder ist das überhaupt sinnvoll? 25:25.000 --> 25:27.000 Was meinst du denn genau, dass du mehrere Charts hast 25:27.000 --> 25:29.000 und die Daten, die ja 25:29.000 --> 25:31.000 auf allen Charts jeweils sicherst, 25:31.000 --> 25:33.000 damit du möglichst viel Redundanz da hast 25:33.000 --> 25:35.000 oder was meinst du genau? 25:35.000 --> 25:38.000 Ja, also einfach wie sichere ich große Datenmengen, 25:38.000 --> 25:41.000 die beispielsweise verteilt liegen sollen. 25:41.000 --> 25:43.000 Also ich gebe mal ein Beispiel, 25:43.000 --> 25:46.000 ich habe irgendwie meinen Online-Shop 25:46.000 --> 25:48.000 mit Bestellungen. 25:48.000 --> 25:50.000 Der ist aber immer so unter Volllast, 25:50.000 --> 25:52.000 dass ich den halt irgendwie über drei, 25:52.000 --> 25:54.000 keine Ahnung, so Amazon, 25:54.000 --> 25:56.000 zum Spaß jetzt mal, 25:56.000 --> 25:58.000 das kleine Amazon. 25:58.000 --> 26:00.000 Ich möchte da jetzt mal Backups 26:00.000 --> 26:02.000 für meine Datenbank von dem Online-Store 26:02.000 --> 26:05.000 ca. 2.000 Jahre oder so was haben 26:05.000 --> 26:07.000 und würde jetzt schon RESTIC 26:07.000 --> 26:09.000 zur Verfügung haben. 26:09.000 --> 26:11.000 Wie würde ich das denn machen mit solchen Daten 26:11.000 --> 26:13.000 und das gar kein Use Case, 26:13.000 --> 26:15.000 den man mit RESTIC jetzt abbilden würde? 26:15.000 --> 26:17.000 Das ist ein Use Case, 26:17.000 --> 26:19.000 der erfordert es aber, 26:19.000 --> 26:21.000 dass du da noch was drumherum hast. 26:21.000 --> 26:23.000 Das große Problem bei so großen Datenmengen, 26:23.000 --> 26:25.000 die sich auch noch die ganze Zeit ändern, 26:25.000 --> 26:27.000 weil wenn du jetzt deine Familienfoto sicherst, 26:27.000 --> 26:29.000 wenn du jetzt gerade keine neuen hinzufügst 26:29.000 --> 26:31.000 und dann nicht aktiv dran arbeitest, 26:31.000 --> 26:33.000 dann ist das ein statisches Datenset. 26:33.000 --> 26:35.000 Das kannst du ohne Weiteres sagen, 26:35.000 --> 26:37.000 ich mache jetzt ein Backup 26:37.000 --> 26:39.000 und dann ist es irgendwann fertig 26:39.000 --> 26:41.000 und dann ist es fertig. 26:41.000 --> 26:43.000 Zum Beispiel, 26:43.000 --> 26:45.000 hast du das große Problem, 26:45.000 --> 26:47.000 dass sich die ganze Zeit was tut 26:47.000 --> 26:49.000 und dann hast du auch zum Beispiel, 26:49.000 --> 26:51.000 wenn du einen Server hast, 26:51.000 --> 26:53.000 wo ja Lockdaten geschrieben werden, 26:53.000 --> 26:55.000 wo vielleicht das Dataisystem 26:55.000 --> 26:57.000 aufgeräumt wird, wo Benutzer drauf sind 26:57.000 --> 26:59.000 und eigentlich musst du als Voraussetzung 26:59.000 --> 27:01.000 für jegliche Art von Backup 27:01.000 --> 27:03.000 erst mal einen Zustand schaffen, 27:03.000 --> 27:05.000 dass sich die Daten für eine Weile nicht verändern, 27:05.000 --> 27:07.000 zumindest in deiner Sichtweise. 27:07.000 --> 27:09.000 Man kann sich dieses Laufwerk erzeugen 27:09.000 --> 27:11.000 und möchte da die Daten einfach sichern 27:11.000 --> 27:13.000 und diese Schattenkopie, 27:13.000 --> 27:15.000 da stellt das Betriebssystem sicher, 27:15.000 --> 27:17.000 das während des Backupvorgangs 27:17.000 --> 27:19.000 sich da nichts dran ändert. 27:19.000 --> 27:21.000 Das hat RESTIC sogar eingebaut für Windows, 27:21.000 --> 27:23.000 da kann man einfach minus, minus Us, 27:23.000 --> 27:25.000 minus VSS oder sowas sagen, 27:25.000 --> 27:27.000 dann erstellt er im Hintergrund eine Schattenkopie, 27:27.000 --> 27:29.000 wenn er die richtigen Berechtigungen hat. 27:29.000 --> 27:31.000 Sicher hat das Laufwerk 27:31.000 --> 27:33.000 und anschließend wird die Schattenkopie auch wieder entfernt. 27:33.000 --> 27:35.000 Das gibt es für Unix, 27:35.000 --> 27:37.000 da kann man dann auch ein Datasystem manchmal. 27:37.000 --> 27:39.000 Man kann zum Beispiel bei ZFS, 27:39.000 --> 27:43.000 das ist ein sehr gut abgehangenes Server-Dateisystem, 27:43.000 --> 27:45.000 kommt eigentlich aus der FreeBSD-Ecke, 27:45.000 --> 27:47.000 wenn ich richtig informiert bin 27:47.000 --> 27:49.000 und da kann man sagen, man erstellt einen Snapshot 27:49.000 --> 27:51.000 von einem gewissen Dateibaum, 27:51.000 --> 27:53.000 kann den dann noch mal woanders mounten 27:53.000 --> 27:55.000 und kann dann da ganz entspannten Backup drauf machen, 27:55.000 --> 27:57.000 während der Server normal weiterläuft 27:57.000 --> 27:59.000 und das musst du im Prinzip sicherstellen für deine Datenbank. 27:59.000 --> 28:01.000 Manche Leute machen das, 28:01.000 --> 28:03.000 indem sie ein Dump der Datenbank sozusagen, 28:03.000 --> 28:05.000 ein MySQL-Dump oder PG-Dump 28:05.000 --> 28:07.000 oder was auch immer man da für eine Datenbank hat, 28:07.000 --> 28:09.000 die im Prinzip die gesamten Inhalte 28:09.000 --> 28:11.000 als Textdateien rausliefert, 28:11.000 --> 28:13.000 dass man die erzeugt 28:13.000 --> 28:15.000 und direkt auf Standard in RESTIC übergibt, 28:15.000 --> 28:18.000 dass der dann da seine Diplikationsmagie drauf macht 28:18.000 --> 28:20.000 und die Daten dann sichert. 28:20.000 --> 28:22.000 Und so dann quasi über das Datenbank-System, 28:22.000 --> 28:24.000 da muss natürlich dann sichergestellt sein, 28:24.000 --> 28:26.000 dass dieser Dump auch irgendwie atomar ist, 28:26.000 --> 28:28.000 dass da nicht am Anfang der vielleicht 28:28.000 --> 28:30.000 einen Benutzernamen irgendwie sichert 28:30.000 --> 28:32.000 und während des Backups ändert 28:32.000 --> 28:34.000 ein Benutzernamen und dann passt der Dump 28:34.000 --> 28:36.000 nicht zusammen intern in sich. 28:36.000 --> 28:38.000 Das muss man natürlich sicherstellen 28:38.000 --> 28:40.000 und darüber allein nachzudenken 28:40.000 --> 28:42.000 ist schon eine erhebliche Komplexität. 28:42.000 --> 28:44.000 Okay, aber da wohnt die Komplexität 28:44.000 --> 28:46.000 ja sozusagen in dem initialen 28:46.000 --> 28:48.000 Daten aus der Datenbank rauskratzen 28:48.000 --> 28:50.000 und sobald ich das so hingekriegt habe, 28:50.000 --> 28:52.000 dass ich die wirklich sauber 28:52.000 --> 28:54.000 und in sich konsistent und atomar habe, 28:54.000 --> 28:56.000 übergebe ich die dann an die weitere Software 28:56.000 --> 28:58.000 und die beregelt das dann 28:58.000 --> 29:00.000 mit den von uns besprochenen Qualitäten. 29:00.000 --> 29:02.000 Genau. 29:02.000 --> 29:04.000 Also da würde ich halt auch annehmen, 29:04.000 --> 29:06.000 dass dieses Daten daraus exfiltrieren 29:06.000 --> 29:08.000 sehr stark von der Datenbank abhängig ist, 29:08.000 --> 29:10.000 was man da machen möchte. 29:10.000 --> 29:12.000 Also ich nehme an von der Technologie 29:12.000 --> 29:14.000 einerseits, andererseits halt auch von der Größe. 29:14.000 --> 29:16.000 Also Hans-Szenario mit seinen vielen verteilten Scharzt 29:16.000 --> 29:18.000 ist da sicherlich ein bisschen anspruchsvoller, 29:18.000 --> 29:20.000 als ich habe mein WordPress 29:20.000 --> 29:22.000 und dann mag das da auch so lange 29:22.000 --> 29:24.000 schon bestehen wie es auch sein mag, 29:24.000 --> 29:26.000 aber trotzdem sind das endlich viele Daten, 29:26.000 --> 29:28.000 selbst wenn da irgendwie ein paar Tausend Posts drin sind. 29:28.000 --> 29:30.000 Dann geht das wahrscheinlich rein. 29:30.000 --> 29:32.000 Was ich mich halt Frage so ist, 29:32.000 --> 29:34.000 also wir haben unsere Cloud-Provider, 29:34.000 --> 29:36.000 die bieten mir halt das Backup 29:36.000 --> 29:38.000 mit einem Häkchen an 29:38.000 --> 29:40.000 und dann muss ich da halt irgendwie noch 29:40.000 --> 29:42.000 ein paar Euro mehr zahlen 29:42.000 --> 29:44.000 und dann machen die, kümmern die sich da drum. 29:44.000 --> 29:46.000 Nur wenn ich jetzt sagen möchte, 29:46.000 --> 29:48.000 ich möchte das alles selber bauen zum Beispiel, 29:48.000 --> 29:50.000 dann muss ich mir auch über das Thema Backup 29:50.000 --> 29:52.000 jetzt in jeglicher Form Gedanken machen. 29:52.000 --> 29:54.000 Und da ist die Art und Weise, 29:54.000 --> 29:56.000 wie du es gerade aufgeholt hast, 29:56.000 --> 29:58.000 natürlich auf jeden Fall viel komplexer 29:58.000 --> 30:00.000 und man hat viel mehr zu tun, 30:00.000 --> 30:02.000 als wenn man jetzt einfach 30:02.000 --> 30:04.000 sein lokales System 30:04.000 --> 30:06.000 Backup so. 30:06.000 --> 30:08.000 Aber es ist halt notwendig, 30:08.000 --> 30:10.000 um sicherzustellen, 30:10.000 --> 30:12.000 dass deine Daten halt nicht verloren gehen. 30:12.000 --> 30:14.000 Manchmal haben wir auch, 30:14.000 --> 30:16.000 meine Anwendungsfall war, 30:16.000 --> 30:18.000 ich wollte möglichst schnell und elegant 30:18.000 --> 30:20.000 mein Arbeitsverzeichnis sichern. 30:20.000 --> 30:22.000 Das war damals ungefähr, 30:22.000 --> 30:24.000 keine Ahnung, 30 Gigabyte oder sowas 30:24.000 --> 30:26.000 und habe ich angefangen, das zu entwickeln. 30:26.000 --> 30:28.000 Dann haben Leute das benutzt. 30:28.000 --> 30:30.000 Dann sind mehr Leute dazugekommen, 30:30.000 --> 30:32.000 die mitgewirkt haben. 30:32.000 --> 30:34.000 Dann ist das Ganze größer geworden 30:34.000 --> 30:36.000 und irgendwann kam jemand zu uns ins Forum. 30:36.000 --> 30:38.000 Wir haben so ein Support-Forum, 30:38.000 --> 30:40.000 wo sich Leute gegenseitig helfen können 30:40.000 --> 30:42.000 und meinte dann so, hey, hier, 30:42.000 --> 30:44.000 das CERN hat einen Vortrag 30:44.000 --> 30:46.000 über RESTIC. 30:46.000 --> 30:48.000 Ich dachte mir, hey, das CERN, 30:48.000 --> 30:50.000 das ist doch diese Institution in der Schweiz. 30:50.000 --> 30:52.000 Was habe ich da kurz reingeguckt 30:52.000 --> 30:54.000 und ich glaube, das ist der Fall, 30:54.000 --> 30:56.000 dass wir das CERN, das CERN, 30:56.000 --> 30:58.000 das CERN, das CERN, das CERN laufen, 30:58.000 --> 31:00.000 weil das sind ja wirklich sehr, 31:00.000 --> 31:02.000 sehr viele Daten, 31:02.000 --> 31:04.000 sondern es ging tatsächlich 31:04.000 --> 31:06.000 um die Benutzerverzeichnisse der Benutzer 31:06.000 --> 31:08.000 auf den Rechenklustern. 31:08.000 --> 31:10.000 Ja, und tatsächlich setzt das CERN 31:10.000 --> 31:12.000 RESTIC ein dafür. 31:12.000 --> 31:14.000 Das fand ich schon sehr beeindruckend. 31:14.000 --> 31:16.000 Zum Thema, wie viele Datenmengen man da sichern kann. 31:16.000 --> 31:18.000 Allerdings haben sie es so gemacht, 31:18.000 --> 31:20.000 dass die Pro-Benutzer ein eigenes Repository haben, 31:20.000 --> 31:22.000 und wenn man dazu viel auf einmal 31:22.000 --> 31:24.000 in ein Repository reintut, 31:24.000 --> 31:26.000 dann ist das irgendwann sehr schwierig. 31:28.000 --> 31:30.000 Ja, also auch selbst das CERN 31:30.000 --> 31:32.000 verwendet das und zwar mit 31:32.000 --> 31:34.000 nicht zu wenigen Daten, wie du sagst. 31:34.000 --> 31:36.000 Vielleicht kannst du ja einfach mal erklären, 31:36.000 --> 31:38.000 auch noch ein bisschen mehr zu RESTIC. 31:38.000 --> 31:40.000 Also, vielleicht hast du ein paar Zahlen 31:40.000 --> 31:42.000 für uns, keine Ahnung, 31:42.000 --> 31:44.000 wie sich das so bemisst. 31:44.000 --> 31:46.000 Oder vielleicht hast du noch ein paar coole 31:46.000 --> 31:48.000 Geschichten, so wie die vom CERN jetzt. 31:48.000 --> 31:50.000 Und was natürlich auch total interessant ist, 31:50.000 --> 31:52.000 wie ist das mit der Community? 31:52.000 --> 31:54.000 So ein Tool lebt ja einfach auch davon, 31:54.000 --> 31:56.000 dass es Contributions aus der Community gibt, 31:56.000 --> 31:58.000 dass man die Software 31:58.000 --> 32:00.000 verbessern kann dadurch. 32:00.000 --> 32:02.000 Also, eine Geschichte, 32:02.000 --> 32:04.000 die mich so ein bisschen 32:04.000 --> 32:06.000 vom Focker gehauen hat, ist jemand, 32:06.000 --> 32:08.000 der kam an einem Freitagabend, glaube ich, 32:08.000 --> 32:10.000 kam der ins Forum und sagte, 32:10.000 --> 32:12.000 okay, oder bei GitHub, ich weiß nicht mehr, 32:12.000 --> 32:14.000 ich habe hier ein Bug, 32:14.000 --> 32:16.000 ich kann irgendwas nicht funktionieren, 32:16.000 --> 32:18.000 ich kann nicht wieder herstellen, 32:18.000 --> 32:20.000 habe ich gesagt, okay, ich gucke mir das an, 32:20.000 --> 32:22.000 habe dann tatsächlich einen Bug gefunden, 32:22.000 --> 32:24.000 habe einen Patch gemacht und habe ihm gesagt, 32:24.000 --> 32:26.000 ob er es ausprobieren kann. 32:26.000 --> 32:28.000 Und dann schrieb er mir irgendwann eine E-Mail 32:28.000 --> 32:30.000 und meinte so, ja, das wäre ja total nett. 32:30.000 --> 32:32.000 Er könnte es aber leider nicht ausprobieren, 32:32.000 --> 32:34.000 weil er wird ja ablegen. 32:34.000 --> 32:36.000 Und ich habe zurückgeschrieben und dachte mir, 32:36.000 --> 32:38.000 okay, ablegen, was meint er denn dann, 32:38.000 --> 32:40.000 und ob ich ihm nicht irgendwie 32:40.000 --> 32:42.000 das als kleinen Patch irgendwo zur Verfügung 32:42.000 --> 32:44.000 stellen könnte, weil er wird ja ablegen. 32:44.000 --> 32:46.000 Und dann habe ich mich recht erinnert von der 32:46.000 --> 32:48.000 University of Washington, 32:48.000 --> 32:50.000 die auf einer Arktis-Mission 32:50.000 --> 32:52.000 mit Rastic ihre Forschungsdaten sichern wollten. 32:52.000 --> 32:54.000 Und er war halt leider schon 32:54.000 --> 32:56.000 an der Deadline, war quasi schon auf dem Weg zum Schiff 32:56.000 --> 32:58.000 und hatte dann da aber, 32:58.000 --> 33:00.000 weil Arktis nur Satelliten-Internet, 33:00.000 --> 33:02.000 was sehr, sehr langsam war. 33:02.000 --> 33:04.000 Also haben wir noch versucht, eben diesen Patch 33:04.000 --> 33:06.000 so klein wie möglich zu machen. 33:06.000 --> 33:08.000 Und wenn ich mich recht erinnere, 33:08.000 --> 33:10.000 hat das auch alles soweit gut geklappt, 33:10.000 --> 33:12.000 dass sie damit ihre Sachen sichern konnten. 33:12.000 --> 33:14.000 Das ist eine Mini-O-Cluster gesichert. 33:14.000 --> 33:16.000 Das ist so ein S3-Kompatibler Storage-Server. 33:16.000 --> 33:18.000 Und haben da dann ihre Forschungsdaten 33:18.000 --> 33:20.000 mitgesichert, während dieser Mission 33:20.000 --> 33:22.000 die mehrere Wochen dauerte. 33:22.000 --> 33:24.000 Das fand ich auf jeden Fall auch mal ganz spannend, 33:24.000 --> 33:26.000 dass so aus der Community dann 33:26.000 --> 33:28.000 Leute dann auch kommen und sagen, 33:28.000 --> 33:30.000 okay, wir vertrauen euch so sehr, 33:30.000 --> 33:32.000 dass wir unsere wichtigen Forschungsdaten 33:32.000 --> 33:34.000 damit sichern wollen. 33:34.000 --> 33:36.000 Das finde ich auf jeden Fall ziemlich gut. 33:36.000 --> 33:38.000 Was war denn das für ein Backer? 33:38.000 --> 33:40.000 Oh, das weiß ich nicht mehr. 33:40.000 --> 33:42.000 Aber es war auch irgendwas, 33:42.000 --> 33:44.000 dass da Benutzer mit Verzeichnissenamen 33:44.000 --> 33:46.000 um die Ecke kamen, 33:46.000 --> 33:48.000 was nicht so gut funktioniert hat. 33:48.000 --> 33:50.000 Also irgendwas auf jeden Fall, 33:50.000 --> 33:52.000 dass das Backup selber nicht funktioniert hat, 33:52.000 --> 33:54.000 nicht das Restore. 33:54.000 --> 33:56.000 Weil das, glaube ich, nicht so sehr getestet, 33:56.000 --> 33:58.000 wie das vielleicht interessant gewesen wäre. 33:58.000 --> 34:00.000 Ansonsten, das Projekt hat es selber, 34:00.000 --> 34:02.000 also es besteht im Prinzip aus der Github-Seite, 34:02.000 --> 34:04.000 der Projektseite. 34:04.000 --> 34:06.000 Das habe ich von Anfang an auch von meinem 34:06.000 --> 34:08.000 persönlichen Account soweit getrennt, 34:08.000 --> 34:10.000 also auch als Community-Projekt aufziehen wollte. 34:10.000 --> 34:12.000 Weil es kann nicht sein, 34:12.000 --> 34:14.000 dass so ein essentielles Tool 34:14.000 --> 34:16.000 im Prinzip von mir alleine als Person abhängt. 34:16.000 --> 34:18.000 Das finde ich blöd. 34:18.000 --> 34:20.000 Und es gibt das Forum, 34:20.000 --> 34:22.000 das ist ganz hilfreich, 34:22.000 --> 34:24.000 wo sich Leute gegenseitig helfen. 34:24.000 --> 34:26.000 Es gibt den Twitter-Account. 34:26.000 --> 34:28.000 Mittlerweile hat das Projekt, 34:28.000 --> 34:30.000 ich gucke jetzt gerade mal, 34:30.000 --> 34:32.000 18.600 Sternchen auf Github. 34:32.000 --> 34:34.000 Es ist also kein so ganz kleines Projekt mehr. 34:34.000 --> 34:36.000 Und es gibt über 300, 350 Leute, 34:36.000 --> 34:38.000 aus so einer Kerngruppe 34:38.000 --> 34:40.000 von 3, 4, 5 Leuten so ungefähr, 34:40.000 --> 34:42.000 die da hauptsächlich dran entwickeln. 34:42.000 --> 34:44.000 Okay, das heißt, 34:44.000 --> 34:46.000 das hat jetzt also auch schon den Massen-Appil. 34:46.000 --> 34:48.000 Das heißt so, 34:48.000 --> 34:50.000 dass ganz gänzlich unbenutzbare 34:50.000 --> 34:52.000 grüner Text auf schwarz zum Brunt 34:52.000 --> 34:54.000 reines Nerd-Programm, 34:54.000 --> 34:56.000 ist es dann auch nicht mehr, oder? 34:56.000 --> 34:58.000 Ja, doch schon, ich würde schon sagen, 34:58.000 --> 35:00.000 du musst schon ein bisschen Kommando-Zeile bedienen können, 35:00.000 --> 35:02.000 um das zu benutzen. 35:02.000 --> 35:04.000 Es gibt keine GUI, bisher hat sich niemand gefunden, 35:04.000 --> 35:06.000 aber es ist ja schon eingegreifen, 35:06.000 --> 35:08.000 der eine machen wollte. 35:08.000 --> 35:10.000 Und es ist schon eher so, 35:10.000 --> 35:12.000 für, ich sag mal, die Backend-Benutzer. 35:12.000 --> 35:14.000 Mein Vater benutzt es auch, 35:14.000 --> 35:16.000 der ist aber selber Nerd von daher zählt das nicht. 35:16.000 --> 35:18.000 Aber das ist schon, 35:18.000 --> 35:20.000 man muss schon die Kommando-Zeile selber aufrufen können. 35:20.000 --> 35:22.000 Es geht aber relativ einfach. 35:22.000 --> 35:24.000 Okay, das heißt, es reicht auch, 35:24.000 --> 35:26.000 wenn man jemanden kennt, der das kann. 35:26.000 --> 35:28.000 Ja, also wenn man jemanden kennt, 35:28.000 --> 35:30.000 der mal einen Wetsch-Script oder den Shell-Script zusammenzimmern kann, 35:30.000 --> 35:32.000 der das einmal aufruft, 35:32.000 --> 35:34.000 dann hat man dann schon viele Backups entsorgt. 35:34.000 --> 35:36.000 Nach einer Weile, 35:36.000 --> 35:38.000 dann hat man damit eigentlich schon ziemlich viel gewonnen. 35:38.000 --> 35:40.000 Und wie bastelt man da seine Verschlüsselung rein? 35:40.000 --> 35:42.000 Gar nicht. 35:42.000 --> 35:44.000 Das hat das Programm von Anfang an schon direkt mit drin. 35:44.000 --> 35:46.000 Das heißt, du sagst so ähnlich wie bei Git am Anfang. 35:46.000 --> 35:48.000 Ich initialisiere einen Repository. 35:48.000 --> 35:50.000 Das befindet sich 35:50.000 --> 35:52.000 bei Backblaze auf S3, 35:52.000 --> 35:54.000 auf diesem per SSH 35:54.000 --> 35:56.000 erreichbaren Server 35:56.000 --> 35:58.000 oder auch in diesem Verzeichnis auf meiner lokalen Platte, 35:58.000 --> 36:00.000 die neben meinem Rechner steht. 36:00.000 --> 36:02.000 Und dieses Passwort ist im Prinzip 36:02.000 --> 36:04.000 dein Master-Key sozusagen. 36:04.000 --> 36:06.000 Da gibt es auch bisher nur ein Passwort. 36:06.000 --> 36:08.000 Wir haben da noch nicht experimentiert 36:08.000 --> 36:10.000 mit so asymmetrischer Verschlüsselung oder sowas. 36:10.000 --> 36:12.000 Und entweder du hast das Passwort, 36:12.000 --> 36:14.000 dann kommst du an deine Daten nicht dran. 36:14.000 --> 36:16.000 Und wenn du das Passwort nicht hast, 36:16.000 --> 36:18.000 dann haben wir sichergestellt, 36:18.000 --> 36:20.000 dass da auch niemand anders dran kommt. 36:20.000 --> 36:22.000 Auch nicht mal du selber. 36:22.000 --> 36:24.000 Das ist ja dieser ganz berühmte Test, 36:24.000 --> 36:26.000 der Mud-Puddle-Test. 36:26.000 --> 36:28.000 Ich weiß nicht, ob ich das was sagt. 36:28.000 --> 36:30.000 Dann lass deine Geräte in eine Matschfütze fallen. 36:30.000 --> 36:32.000 Rutsch in der Matschfütze aus, 36:32.000 --> 36:34.000 sodass du dir den Kopf an Haus und das Passwort nicht mehr weißt. 36:34.000 --> 36:36.000 Wenn du dann deine Daten wieder bekommst, 36:36.000 --> 36:38.000 dann waren sie nicht komplett gesichert. 36:38.000 --> 36:40.000 Okay, das hört sich jetzt noch 36:40.000 --> 36:42.000 einem sehr aufwendigen Verfahren an. 36:42.000 --> 36:44.000 Aber du hast ja auch gesagt, 36:44.000 --> 36:46.000 du bist Pentester. 36:46.000 --> 36:48.000 Also von daher, ich nehme an, du hast das schon 36:48.000 --> 36:50.000 öfter mal ausprobiert bei den Providern 36:50.000 --> 36:52.000 oder bei den Kunden, für die du arbeitest. 36:52.000 --> 36:54.000 Ja, wir sehen ja 36:54.000 --> 36:56.000 in unserer Arbeit 36:56.000 --> 36:58.000 sehr viele Systeme und sehen auch, 36:58.000 --> 37:00.000 wo Systeme, also wo so 37:00.000 --> 37:02.000 neureilige Punkte sind, wo Systeme 37:02.000 --> 37:04.000 gerne auseinanderbrechen, wo es knirscht. 37:04.000 --> 37:06.000 Und wir haben versucht jetzt für Rastic 37:06.000 --> 37:08.000 insbesondere die Kropographie, 37:08.000 --> 37:10.000 die da drunter ist. 37:10.000 --> 37:12.000 Da hat sogar mal ein Audit von jemandem gegeben. 37:12.000 --> 37:14.000 Das war ganz spannend, die Kropographie, 37:14.000 --> 37:16.000 die da drunter ist, so zu machen, 37:16.000 --> 37:18.000 dass da möglichst wenig passieren kann. 37:18.000 --> 37:20.000 Und das bedeutet in der Security-Szene 37:20.000 --> 37:22.000 eigentlich immer, dass man versucht, 37:22.000 --> 37:24.000 so wenig wie möglich zu tun, 37:24.000 --> 37:26.000 die Komplexität so weit zu reduzieren, 37:26.000 --> 37:28.000 dass man gar nicht ganz abgefahrene Verfahren 37:28.000 --> 37:30.000 oder irgendwas super Neues nimmt, 37:30.000 --> 37:32.000 sondern eigentlich das Zeug, was super abgehangen ist. 37:32.000 --> 37:34.000 Und dann auch ein Benutzer-Interface 37:34.000 --> 37:36.000 macht, wo man nicht dem Benutzer sagt, 37:36.000 --> 37:38.000 hier, okay, welches Cypher-Suite 37:38.000 --> 37:40.000 für TLS willst du denn? 37:40.000 --> 37:42.000 ECDHE oder mit RSA 37:42.000 --> 37:44.000 oder möchtest du Viblofisch haben 37:44.000 --> 37:46.000 oder RC4, weil das kann einfach jemand, 37:46.000 --> 37:48.000 der in der Thematik nicht so tief drinsteckt, 37:48.000 --> 37:50.000 der kann das überhaupt nicht entscheiden. 37:50.000 --> 37:52.000 Das ist auch was, Rastic ist ein Projekt, 37:52.000 --> 37:54.000 das ist sehr opinionated, würde man sagen. 37:54.000 --> 37:56.000 Das heißt, wir haben in der Regel 37:56.000 --> 37:58.000 ein Primitiv für irgendeine Aufgabe, 37:58.000 --> 38:00.000 einen Krypto-Algorithmus, 38:00.000 --> 38:02.000 einen MAC-Algorithmus, 38:02.000 --> 38:04.000 einen Algorithmus, um aus dem Passwort 38:04.000 --> 38:06.000 einen Krypto-Key zu machen. 38:06.000 --> 38:08.000 Und wir benutzen genau den. 38:08.000 --> 38:10.000 Du hast nicht die Möglichkeit da jetzt irgendwie einzustellen, 38:10.000 --> 38:12.000 wie will ich RSA oder ED25519 38:12.000 --> 38:14.000 oder irgendwas, sondern du kannst Rastic benutzen. 38:14.000 --> 38:16.000 Und es gibt genau diese eine Art, wie man das macht. 38:16.000 --> 38:18.000 Und wenn sich irgendwann rausstellen sollte, 38:18.000 --> 38:20.000 dass das unsicher ist, dann würden wir eher 38:20.000 --> 38:22.000 eine neue Version des Programms machen, 38:22.000 --> 38:24.000 eine neue Version des Repository-Formats definieren, 38:24.000 --> 38:26.000 als dann dem Benutzer zu viele Fragen zu stellen, 38:26.000 --> 38:28.000 die der nicht beantworten kann. 38:28.000 --> 38:30.000 Weil wenn ich erst 38:30.000 --> 38:32.000 einen jahrlangen Kryptografie mehr angucken muss, 38:32.000 --> 38:34.000 um zu entscheiden, welcher Krypto-Algorithmus 38:34.000 --> 38:36.000 für meinen Anwendungsfall der beste ist, 38:36.000 --> 38:38.000 dann mache ich keine Backups währenddessen. 38:38.000 --> 38:40.000 Das funktioniert nicht. 38:42.000 --> 38:44.000 Du hast noch eine Frage zu dem Initialisieren, 38:44.000 --> 38:46.000 das ganzen Prozess, wie du es beschrieben hast. 38:46.000 --> 38:48.000 Kann ich das auch ganz einfach so 38:48.000 --> 38:50.000 an mehrere Endpunkte schicken? 38:50.000 --> 38:52.000 Also ich habe hier ein Backup, 38:52.000 --> 38:54.000 und das soll hier und dort drüben hin auch noch? 38:56.000 --> 38:58.000 Das haben wir bisher nicht implementiert. 38:58.000 --> 39:00.000 Du kannst aber, weil das eine hohe Komplexität hat, 39:00.000 --> 39:02.000 weil diese Backup-Pipeline sozusagen, 39:02.000 --> 39:04.000 also Dateien lesen, auseinanderschneiden, 39:04.000 --> 39:06.000 verschlüsseln, abspeichern, 39:06.000 --> 39:08.000 das hat eine sehr hohe Komplexität. 39:08.000 --> 39:10.000 Und das ist ja der Kern des Ganzen. 39:10.000 --> 39:12.000 Und da wollten wir jetzt nicht nochmal 39:12.000 --> 39:14.000 die Möglichkeit so direkt einbauen, 39:14.000 --> 39:16.000 dass man das auf mehrere Senken sozusagen, 39:16.000 --> 39:18.000 auf mehrere Datenspeicherhalten verteilen kann. 39:18.000 --> 39:20.000 Man kann aber im Nachhinein, 39:20.000 --> 39:22.000 wenn man ein Backup gemacht hat, 39:22.000 --> 39:24.000 ein Snapshot gemacht hat, 39:24.000 --> 39:26.000 kann man den dann mit allen zugehörigen Daten 39:26.000 --> 39:28.000 von einem ein anderes Repository reinkopieren. 39:28.000 --> 39:30.000 Bei ganz oft ist wieder das Problem, 39:30.000 --> 39:32.000 dass man seine Daten, die man speichern möchte, 39:32.000 --> 39:34.000 erst mal ja so lange konstant halten muss, 39:34.000 --> 39:36.000 wie das Backup selber läuft. 39:36.000 --> 39:38.000 Und das ist an sich schon schwierig genug. 39:38.000 --> 39:40.000 Und dann lieber im Nachgang direkt am zweiten Schritt 39:40.000 --> 39:42.000 diese Daten woanders rüber kopieren. 39:42.000 --> 39:44.000 Okay, sprich dieser Schritt 39:44.000 --> 39:46.000 kann man jetzt an verschiedene Senken, 39:46.000 --> 39:48.000 wie du sagst, das ist sozusagen einfach aus 39:48.000 --> 39:50.000 RESTIC selber rausdefiniert, 39:50.000 --> 39:52.000 weil das andere Programme ausreichend gut machen können. 39:52.000 --> 39:54.000 Und wenn der eine Snapshot einmal getan ist. 39:54.000 --> 39:56.000 Ja, nicht ganz. 39:56.000 --> 39:58.000 Wir haben schon eine eigene Kopierfunktionalität. 39:58.000 --> 40:00.000 Das ist schon in RESTIC eingebaut, 40:00.000 --> 40:02.000 weil RESTIC macht die Duplikation. 40:02.000 --> 40:04.000 Das heißt, jeder Snapshot, 40:04.000 --> 40:06.000 jeder Stand ein von Daten, 40:06.000 --> 40:08.000 der ist für sich erst mal unabhängig. 40:08.000 --> 40:10.000 Der verweist ja auf die ganzen Datenschnipsel aus den Dateien, 40:10.000 --> 40:12.000 was ich vorhin erklärt habe. 40:12.000 --> 40:14.000 Man kann jetzt hergehen und sagen, 40:14.000 --> 40:16.000 okay, ich habe jetzt in einem Repository verschiedene Daten. 40:16.000 --> 40:18.000 Ich habe die Familienfotos, 40:18.000 --> 40:20.000 ich habe meine Aufnahmen, 40:20.000 --> 40:22.000 die ich mit der Band im Proberaum gemacht habe. 40:22.000 --> 40:24.000 Ich habe da aber auch meinen Code drin. 40:24.000 --> 40:26.000 Und diese Fotos und diese Bandaufnahmen sind mir gar nicht so wichtig, 40:26.000 --> 40:28.000 aber die Snapshots, die meinen Code betreffen, 40:28.000 --> 40:30.000 die möchte ich jetzt in ein anderes Repository nochmal kopieren. 40:30.000 --> 40:32.000 Dann hat ja RESTIC als Programm die Information, 40:32.000 --> 40:34.000 welche Daten sind denn dafür dann nötig? 40:34.000 --> 40:36.000 Weil die Familienfotos, die brauche ich dann nicht, 40:36.000 --> 40:38.000 aber die Daten, die den Code betreffen, schon. 40:38.000 --> 40:40.000 Und deswegen ergibt es Sinn, 40:40.000 --> 40:42.000 das in so einem Programm in RESTIC drin zu haben. 40:42.000 --> 40:44.000 Und nicht als extra Programm, 40:44.000 --> 40:46.000 weil wenn du das extern machst, 40:46.000 --> 40:48.000 also das Repository am Ende des Tages sind ja auch nur Dateien, 40:48.000 --> 40:50.000 da kannst du zwar nichts mit anfangen, 40:50.000 --> 40:52.000 weil die verschlüsselt sind. 40:52.000 --> 40:54.000 Aber du könntest ja die auch einfach mit Ersynk 40:54.000 --> 40:56.000 oder was auch immer irgendwo anders hin kopieren. 40:56.000 --> 40:58.000 Dann müsstest du aber das gesamte Repository kopieren, 40:58.000 --> 41:00.000 weil du von außen keine Ahnung hast, 41:00.000 --> 41:02.000 welche Daten wo liegen. 41:02.000 --> 41:04.000 Ja, was bei einer gewissen Größe 41:04.000 --> 41:06.000 und einer gewissen Dünnhalt der Leitung dann schon lästig ist. 41:06.000 --> 41:08.000 Auf jeden Fall, ja. 41:08.000 --> 41:10.000 Aber andersrum, 41:10.000 --> 41:12.000 was worauf wir jetzt noch gar nicht eingegangen sind, 41:12.000 --> 41:14.000 ist so der Restore-Prozess. 41:14.000 --> 41:16.000 Weil in meinem Vorgespräch 41:16.000 --> 41:18.000 hatte ich eben gesagt, 41:18.000 --> 41:20.000 die philosophische Frage ist ja, 41:20.000 --> 41:22.000 ist ein Backup wirklich ein Backup, 41:22.000 --> 41:24.000 wenn ich es noch nie eingespielt habe? 41:24.000 --> 41:26.000 Und wie lange darf ich mit Zeit lassen, 41:26.000 --> 41:28.000 mit dem wieder einspielen, 41:28.000 --> 41:30.000 bis ein Backup kein Backup mehr ist? 41:30.000 --> 41:32.000 Ja eben, also das ist ja eigentlich so die Fragestellung. 41:32.000 --> 41:34.000 Wie häufig mache ich eigentlich mein Backup? 41:34.000 --> 41:36.000 Ich habe es eben gesagt, 41:36.000 --> 41:38.000 ich komme nach Hause oder 41:38.000 --> 41:40.000 weiß ich nicht, wenn der Laptop hier ist, 41:40.000 --> 41:42.000 dann ist das irgendwie angesteckt 41:42.000 --> 41:44.000 und ab und an wird da mal ein Backup gemacht. 41:44.000 --> 41:46.000 Manchmal vergesse ich es auch und dann habe ich irgendwie 41:46.000 --> 41:48.000 nach 10 Tagen kriege ich dann vom Back gesagt, 41:48.000 --> 41:50.000 hier willst du nicht mal wieder ein Backup machen 41:50.000 --> 41:52.000 und dann denke ich mir, oh, morgen vielleicht so. 41:52.000 --> 41:54.000 Aber das Problem ist ja jetzt, 41:54.000 --> 41:56.000 wenn die Platte übermorgen kaputt ist 41:56.000 --> 41:58.000 und ich habe diese 11 Tage 41:58.000 --> 42:00.000 jetzt kein Backup gemacht 42:00.000 --> 42:02.000 oder 12, 42:02.000 --> 42:04.000 dann ist es sehr ärgerlich. 42:04.000 --> 42:06.000 Ich habe versucht mir mittlerweile 42:06.000 --> 42:08.000 andere Mechanismen irgendwie dafür 42:08.000 --> 42:10.000 zu erschaffen, sprich ich habe ganz viel 42:10.000 --> 42:12.000 in der Cloud einfach, der Code sowieso 42:12.000 --> 42:14.000 und ich meine, 42:14.000 --> 42:16.000 alles was irgendwie 42:16.000 --> 42:18.000 online stattfindet 42:18.000 --> 42:20.000 ist sowieso automatisiert. 42:20.000 --> 42:22.000 Backup, irgendwelche Notizen oder was weiß ich. 42:22.000 --> 42:24.000 Aber trotzdem ist ja genau 42:24.000 --> 42:26.000 diese 10 Tage, die dir dann fehlen, 42:26.000 --> 42:28.000 das ist ja das ärgerliche 42:28.000 --> 42:30.000 und meistens willst du ja genau die Daten 42:30.000 --> 42:32.000 von dann haben. 42:32.000 --> 42:34.000 Und wie kriegt man es hin 42:34.000 --> 42:36.000 diesen Zeitraum halt so klein wie möglich 42:36.000 --> 42:38.000 zu halten, das ist ja die große 42:38.000 --> 42:40.000 Fragestellung. 42:40.000 --> 42:42.000 Ja, das ist das, das ist eine der beiden 42:42.000 --> 42:44.000 großen Fragen, tatsächlich. 42:44.000 --> 42:46.000 Was ich Leuten empfehle, die fragen, 42:46.000 --> 42:48.000 ja, wann soll ich den Backup machen, sage ich, ja, jeden Tag. 42:48.000 --> 42:50.000 Weil dann musst du nicht überlegen, 42:50.000 --> 42:52.000 habe ich gestern oder ist morgen erst wieder dran, 42:52.000 --> 42:54.000 sondern macht das einfach jeden Tag. 42:54.000 --> 42:56.000 Und was für mich gut funktioniert, 42:56.000 --> 42:58.000 das muss natürlich nicht heißen, 42:58.000 --> 43:00.000 dass das für alle gut funktioniert ist, 43:00.000 --> 43:02.000 wenn ich einen Rechner ausmache, 43:02.000 --> 43:04.000 dann mache ich den nicht aus, sondern ich starte 43:04.000 --> 43:06.000 das Backup-Skript, was ihn anschließend ausmacht. 43:06.000 --> 43:08.000 Sodass das einfach so die Routine ist, 43:08.000 --> 43:10.000 wenn ich irgendwo an einem Open Source Projekt 43:10.000 --> 43:12.000 geschraubt habe und dann habe ich keine Lust mehr, 43:12.000 --> 43:14.000 dann starte ich mein Skript, das macht ein Backup 43:14.000 --> 43:16.000 und anschließend fährt es den Rechner runter. 43:16.000 --> 43:18.000 Das wiederum unterstellt ja, 43:18.000 --> 43:20.000 dass du einen manuellen Schritt machen musst. 43:20.000 --> 43:22.000 Also was bei mir so das Ding ist, 43:22.000 --> 43:24.000 ich bin fertig, 43:24.000 --> 43:26.000 ich klappe das Ding zu. 43:26.000 --> 43:28.000 Und im Idealfall geht es ja dann automatisiert 43:28.000 --> 43:30.000 sozusagen los. 43:30.000 --> 43:32.000 Oder nachts um 0 Uhr 43:32.000 --> 43:34.000 oder noch ein bisschen später, 43:34.000 --> 43:36.000 keine Ahnung, wie lange ihr manchmal am Rechner sitzt, 43:36.000 --> 43:38.000 dann startet sich das Skript automatisiert 43:38.000 --> 43:40.000 und du musst eigentlich nichts machen, 43:40.000 --> 43:42.000 sondern es läuft 43:42.000 --> 43:44.000 einfach. 43:44.000 --> 43:46.000 Das ist ja auch das, wie Time Machine funktioniert, 43:46.000 --> 43:48.000 dass die sagen, okay, ich mache halt ständig 43:48.000 --> 43:50.000 alle zwei Stunden oder was weiß ich, 43:50.000 --> 43:52.000 habe ich eine Kopie und je älter die Dinger dann sind, 43:52.000 --> 43:54.000 desto weniger 43:54.000 --> 43:56.000 häufig habe ich irgendwie eine Kopie deiner Daten 43:56.000 --> 43:58.000 oder die 43:58.000 --> 44:00.000 den Unterschied zu deinen Daten gespeichert. 44:00.000 --> 44:02.000 Das ist ja eigentlich 44:02.000 --> 44:04.000 das, was man doch erreichen möchte, 44:04.000 --> 44:06.000 so wenig wie möglich manuelle Schritte. 44:06.000 --> 44:08.000 Ja klar, so automatisiert wie möglich, klar. 44:08.000 --> 44:10.000 Ich habe jetzt aber auch nicht jeden Tag 44:10.000 --> 44:12.000 auf meinen Rechner an, von daher 44:12.000 --> 44:14.000 kann ich da wenig auf so automatisiertes 44:14.000 --> 44:16.000 Tools setzen 44:16.000 --> 44:18.000 und der hat auch nicht immer Netzwerk, wenn ich den an habe 44:18.000 --> 44:20.000 und so, deswegen ist das natürlich 44:20.000 --> 44:22.000 auf einem Server, es ist einfacher, da habe ich ein System Detail, 44:22.000 --> 44:24.000 der das einfach macht. 44:24.000 --> 44:26.000 Die andere Frage ist auch, wenn du jetzt 44:26.000 --> 44:28.000 Backups hast mit Time Machine, 44:28.000 --> 44:30.000 wann hast du die zuletzt mal zurückgespielt, 44:30.000 --> 44:32.000 geht das überhaupt? 44:32.000 --> 44:34.000 Ja, also tatsächlich muss man sagen, 44:34.000 --> 44:36.000 dass dieser Prozester 44:36.000 --> 44:38.000 mit Time Machine extrem smooth 44:38.000 --> 44:40.000 in der Vergangenheit war. 44:40.000 --> 44:42.000 Also wenn man mal irgendwie den, der Rechner 44:42.000 --> 44:44.000 ist mal abgeraucht, wie man so schön sagt 44:44.000 --> 44:46.000 und dann hat man was nicht funktioniert, 44:46.000 --> 44:48.000 das war noch vor Flash-Speicherzeiten, 44:48.000 --> 44:50.000 also dann mit der HDD, wenn die dann 44:50.000 --> 44:52.000 wirklich mal hinüber war 44:52.000 --> 44:54.000 und dann hat man halt irgendwann 44:54.000 --> 44:56.000 eine neue Hard Drive bekommen 44:56.000 --> 44:58.000 und hat dann sein Backup 44:58.000 --> 45:00.000 eingespielt. Da erinnere ich mich noch dran, 45:00.000 --> 45:02.000 das hat immer sehr smooth funktioniert. 45:02.000 --> 45:04.000 Mittlerweile muss ich sagen 45:04.000 --> 45:06.000 und das macht es auch so einfach 45:06.000 --> 45:08.000 nachlässig zu sein in den Backups, 45:08.000 --> 45:10.000 hat man das Gefühl, man braucht das 45:10.000 --> 45:12.000 nicht mehr unbedingt, weil halt 45:12.000 --> 45:14.000 viel ausgelagert, auf irgendwie in die Cloud 45:14.000 --> 45:16.000 und auf der anderen, also 45:16.000 --> 45:18.000 Fotos, also ich habe gar keine Fotos 45:18.000 --> 45:20.000 mehr auf meinem Laptop. 45:20.000 --> 45:22.000 Das finde ich jetzt vielleicht speziell. 45:22.000 --> 45:24.000 Manche Leute wollen das nicht mit ihren 45:24.000 --> 45:26.000 privaten Daten, ist klar. 45:26.000 --> 45:28.000 So, dann macht man das ein bisschen anders. 45:28.000 --> 45:30.000 Aber bei mir ist es jetzt zum Beispiel so 45:30.000 --> 45:32.000 und deswegen ist es für mich dann auch so, 45:32.000 --> 45:34.000 wenn mich dann mein Laptop erinnert, 45:34.000 --> 45:36.000 ja du solltest mal wieder seit 10 Tagen 45:36.000 --> 45:38.000 oder was weiß ich, 15 Tagen einen Backup 45:38.000 --> 45:40.000 machen oder 50 Tagen einen Backup 45:40.000 --> 45:42.000 machen, ja. 45:42.000 --> 45:44.000 Ja, whatever, wenn es halt weg ist, ist es weg. 45:44.000 --> 45:46.000 Das ist doch die wichtigen Sachen, 45:46.000 --> 45:48.000 sind doch eh alle gesaved. 45:48.000 --> 45:50.000 Das ist noch zu 45:50.000 --> 45:52.000 2010, 45:52.000 --> 45:54.000 15, 20er Jahren, 45:54.000 --> 45:56.000 20 nicht, aber so 45:56.000 --> 45:58.000 post COVID sagen wir einfach mal. 45:58.000 --> 46:00.000 Ja, aber das ist doch total prima, 46:00.000 --> 46:02.000 weil wenn das für dich funktioniert, 46:02.000 --> 46:04.000 ist doch optimal. 46:04.000 --> 46:06.000 Es muss ja nur, wenn du dir mal Gedanken 46:06.000 --> 46:08.000 gemacht hast, wie du das dann 46:08.000 --> 46:10.000 machst, das ist doch schon mal der 46:10.000 --> 46:12.000 wichtigste Schritt eigentlich. 46:12.000 --> 46:14.000 Aber Alex, weißt du, ich glaube, das Schlimme 46:14.000 --> 46:16.000 ist ja, dass du erst, wenn du in die 46:16.000 --> 46:18.000 Konstanz lernst, was du alles vergessen 46:18.000 --> 46:20.000 hast in deiner Strategie, ja, 46:20.000 --> 46:22.000 das ist ja das Dove. 46:22.000 --> 46:24.000 Und deswegen dieser Automatismus, den ich denke, 46:24.000 --> 46:26.000 der ja eigentlich so 46:26.000 --> 46:28.000 notwendig ist, 46:28.000 --> 46:30.000 weil wenn du es halt einfach 46:30.000 --> 46:32.000 nicht machst, nachlässig geworden bist, 46:32.000 --> 46:34.000 das ist keine Strategie. 46:34.000 --> 46:36.000 Das ist einfach 46:36.000 --> 46:38.000 ja, 46:38.000 --> 46:40.000 ein Fehler sozusagen, eigentlich in deiner Strategie. 46:40.000 --> 46:42.000 Was sagen Sie? 46:42.000 --> 46:44.000 Ich würde sagen, es ist tatsächlich ein 46:44.000 --> 46:46.000 Konflikt. Ich will einerseits nicht drüber 46:46.000 --> 46:48.000 nachdenken müssen, aber sobald ich das diesen 46:48.000 --> 46:50.000 Punkt erreicht habe, weiß ich halt nicht, 46:50.000 --> 46:52.000 ob es funktioniert, wenn es dann wirklich hart 46:52.000 --> 46:54.000 auf hart kommt. 46:54.000 --> 46:56.000 Ja, genau. Das kann man, das kann man ganz 46:56.000 --> 46:58.000 gut machen, wenn man einen neuen Laptop 46:58.000 --> 47:00.000 bekommt. Ich weiß, dass das Apple-Universum 47:00.000 --> 47:02.000 hat da auch ganz tolle Migrationstools von 47:02.000 --> 47:04.000 der einen auf die andere Maschine. 47:04.000 --> 47:06.000 Was ich aber ganz hilfreich fand, 47:06.000 --> 47:08.000 von der Weile mal habe ich einen neuen Laptop 47:08.000 --> 47:10.000 bekommen und dann habe ich dann wirklich 47:10.000 --> 47:12.000 mir mal ein wenig heggegangen und habe gesagt, 47:12.000 --> 47:14.000 das ist mein neues Gerät, das Alt ist nicht 47:14.000 --> 47:16.000 mehr da, es stand noch daneben, aber das Alt 47:16.000 --> 47:18.000 ist nicht mehr da. Komme ich jetzt an meine 47:18.000 --> 47:20.000 Daten oder nicht? 47:20.000 --> 47:22.000 Und da haben sich in meiner Backup-Strategie 47:22.000 --> 47:24.000 einige Löcher aufgetan, die ich danach dann 47:24.000 --> 47:26.000 angegangen bin. Was ich eben aber meinte 47:26.000 --> 47:28.000 ist, wenn du jetzt deine Daten oder deine 47:28.000 --> 47:30.000 Backups, deinen Code in der Cloud 47:30.000 --> 47:32.000 speicherst, deine Familienfotos oder so 47:32.000 --> 47:34.000 was, 47:34.000 --> 47:36.000 woher weißt du denn, dass die da unmodifiziert 47:36.000 --> 47:38.000 sind? Und damit meine ich nicht jetzt, dass 47:38.000 --> 47:40.000 irgendwie man dem Cloud-Dienst nicht vertraut, 47:40.000 --> 47:42.000 seine Daten modifiziert. Keine Frage, 47:42.000 --> 47:44.000 weil wenn du das jetzt in Frage stellen würdest, 47:44.000 --> 47:46.000 würdest du die da nicht hinschieben. 47:46.000 --> 47:48.000 Aber es hat vor kurzem jetzt Hinweise gegeben, 47:48.000 --> 47:50.000 dass Google Fotos anscheinend einige Fotos 47:50.000 --> 47:52.000 verändert hat, dass da irgendwie 47:52.000 --> 47:54.000 Falschfarben drin sind, die haben das 47:54.000 --> 47:56.000 vermutlich irgendwie im Hintergrund nochmal 47:56.000 --> 47:58.000 versucht mehr zu komprimieren oder so was. 47:58.000 --> 48:00.000 Und sowas ähnliches gibt es ja auch, 48:00.000 --> 48:02.000 wenn du jetzt entscheidest, ich nehme jetzt 48:02.000 --> 48:04.000 irgendwie AWS S3 48:04.000 --> 48:06.000 als Backup-Location oder ich nehme irgendwie 48:06.000 --> 48:08.000 Backblaze, was so ein Backup-Provider auch 48:08.000 --> 48:10.000 ist, die sind ziemlich günstig. 48:10.000 --> 48:12.000 Aber 48:12.000 --> 48:14.000 wenn da jetzt, wenn man jetzt Daten hinschiebt, 48:14.000 --> 48:16.000 dann müsste man eigentlich diese Daten auf 48:16.000 --> 48:18.000 regelmäßig lesen, um zu gucken, sind die 48:18.000 --> 48:20.000 unverändert. Also gerade bei so Sachen, 48:20.000 --> 48:22.000 wenn du als Verschlüsselung einsetzt, ist das 48:22.000 --> 48:24.000 große Problem, dass man da an den Daten 48:24.000 --> 48:26.000 selber was kaputt geht, wenn da irgendein 48:26.000 --> 48:28.000 Bit flippt, dann kann ich die auch nicht 48:28.000 --> 48:30.000 wieder sauber entschlüsseln. Das ist bei 48:30.000 --> 48:32.000 Design so, weil ich will ja genau 48:32.000 --> 48:34.000 sicherstellen, dass bevor ich versuche, die 48:34.000 --> 48:36.000 zu entschlüsseln, muss ich sicherstellen, 48:36.000 --> 48:38.000 da kommen immer wieder Leute, die sagen 48:38.000 --> 48:40.000 ja, RESTIC ist total amist, der 48:40.000 --> 48:42.000 steigt hier immer mit Fehlermeldungen aus, 48:42.000 --> 48:44.000 irgendwas von wegen Yesypatext, Modification 48:44.000 --> 48:46.000 Detected oder irgendwas. 48:46.000 --> 48:48.000 Und das sind die abstrusesten 48:48.000 --> 48:50.000 Backreports, weil 48:50.000 --> 48:52.000 wir uns erst immer nicht erklären können, was 48:52.000 --> 48:54.000 ist denn da passiert. Und ganz oft stellt sich raus, 48:54.000 --> 48:56.000 dass da einfach Hardware-Defekt ist. 48:56.000 --> 48:58.000 Und das geht von, meistens 48:58.000 --> 49:00.000 ist es der Speicher desjenigen, der 49:00.000 --> 49:02.000 den RESTIC-Prozess ausführt, also so 49:02.000 --> 49:04.000 ein Server-System, was man zu Hause hat, 49:04.000 --> 49:06.000 der Laptop, auf dem ich das laufen lasse, 49:06.000 --> 49:08.000 wo dann irgendwo zwischendurch im Speicher 49:08.000 --> 49:10.000 was kaputt geht. Und das kommt viel 49:10.000 --> 49:12.000 öfter vor, als man so denkt. Das hat mich 49:12.000 --> 49:14.000 massiv erschreckt. Also ich dann nochmal, 49:14.000 --> 49:16.000 wir haben dann Label bei GitHub eingefügt 49:16.000 --> 49:18.000 für so Hardware-Defekt 49:18.000 --> 49:20.000 ja, Backreports. 49:20.000 --> 49:22.000 Und es ist erstaunlich, wie oft das vorkommt. 49:22.000 --> 49:24.000 Und das 49:24.000 --> 49:26.000 detectiert RESTIC, weil es mehrere Ebenen 49:26.000 --> 49:28.000 hat, wo es immer wieder so 49:28.000 --> 49:30.000 Safety-Checks macht. Das heißt, ich lese 49:30.000 --> 49:32.000 eine Datei, lese ein Schnipsel aus einer Datei. 49:32.000 --> 49:34.000 Das erste, was gemacht wird, ich mache da 49:34.000 --> 49:36.000 den SHA-2-Hash von, also eine 49:36.000 --> 49:38.000 kriptografische Hash-Funktion. Ich kriege also 49:38.000 --> 49:40.000 quasi sozusagen den Fingerabdruck von diesem Schnipsel. 49:40.000 --> 49:42.000 Das mache ich als allererstes. 49:42.000 --> 49:44.000 Und dann werden die Daten abgespeichert 49:44.000 --> 49:46.000 und verschlüsselt und so weiter und so weiter. 49:46.000 --> 49:48.000 Und nachher kann ich sagen, ich habe jetzt da 49:48.000 --> 49:50.000 meine tollen Backup-Daten, die liegen jetzt irgendwo 49:50.000 --> 49:52.000 in der Cloud. Und ich möchte jetzt bitte mal 49:52.000 --> 49:54.000 random ein Zehntel der Daten runterladen 49:54.000 --> 49:56.000 und checken, ob das alles in Ordnung ist. 49:56.000 --> 49:58.000 Und dann kann ich das machen, 49:58.000 --> 50:00.000 kann ich versuchen zu entschlüsseln und dann kann ich 50:00.000 --> 50:02.000 wieder diesen Fingerabdruck mir angucken 50:02.000 --> 50:04.000 und kann sehen, okay ja, der Fingerabdruck 50:04.000 --> 50:06.000 zu den Daten, der passt noch. Und dann kann 50:06.000 --> 50:08.000 ich schon mal sehen, das hat alles soweit 50:08.000 --> 50:10.000 funktioniert. Und das ist ein Prozess, den kann 50:10.000 --> 50:12.000 man automatisieren, weil ich eben nicht 50:12.000 --> 50:14.000 entscheiden muss, ich restore jetzt einen 50:14.000 --> 50:16.000 bestimmten Snapshot, habe da dann wieder 50:16.000 --> 50:18.000 mein Verzeichnis mit Daten. Und dann muss 50:18.000 --> 50:20.000 ich nicht manuell vergleichen, ist der Code, den 50:20.000 --> 50:22.000 ich da jetzt erwarte, der da auch liegt. 50:22.000 --> 50:24.000 Sondern ich kann eben den Programm sagen, 50:24.000 --> 50:26.000 entschlüssel meine Daten, lad die mir runter, 50:26.000 --> 50:28.000 vielleicht ein Zehntel der Daten random 50:28.000 --> 50:30.000 und guck einfach nach, ist da alles in Ordnung. 50:30.000 --> 50:32.000 Und wenn der Fingerabdruck sagt, 50:32.000 --> 50:34.000 es ist nicht alles in Ordnung, weil 50:34.000 --> 50:36.000 da möglicherweise die Hardware wirklich 50:36.000 --> 50:38.000 irgendwo mal ein Bit geflippt hat? 50:38.000 --> 50:40.000 Dann kann man einigermaßen 50:40.000 --> 50:42.000 sehen, je nachdem, wo das im Prozess 50:42.000 --> 50:44.000 passiert, wo vielleicht 50:44.000 --> 50:46.000 das Problem liegt. Also 50:46.000 --> 50:48.000 bei RESTIC ist es so, ich lese ein Datei, 50:48.000 --> 50:50.000 habe diesen Schnipsel, bildet meinen Fingerabdruck. 50:50.000 --> 50:52.000 Und nachher ist dann immer 50:52.000 --> 50:54.000 dieses Stückchen Daten, dieser Schnipsel 50:54.000 --> 50:56.000 mit immer anhand des Fingerabdrucks identifiziert. 50:56.000 --> 50:58.000 Und der wird dann, wenn ich den speichern muss, 50:58.000 --> 51:00.000 dann packe ich den dann verschlüssel ich den, 51:00.000 --> 51:02.000 packe den mit anderen Daten zusammen 51:02.000 --> 51:04.000 in eine Datei. Und diese Datei, die 51:04.000 --> 51:06.000 bekommt als Dateiname, bevor sie irgendwo 51:06.000 --> 51:08.000 hochgeladen wird, bekommt sie wieder den 51:08.000 --> 51:10.000 Schad 256-Hash 51:10.000 --> 51:12.000 von ihrem Inhalt. Das heißt, ich mache 51:12.000 --> 51:14.000 nochmal ein Fingerabdruck, diesmal von den 51:14.000 --> 51:16.000 verschlüsselten Daten. Und dann kann man sich 51:16.000 --> 51:18.000 zum Beispiel auf dem Server auch angucken, ohne 51:18.000 --> 51:20.000 dass man die Daten entschlüsseln muss, kann man 51:20.000 --> 51:22.000 regelmäßig mit einem Skript einfach gucken, 51:22.000 --> 51:24.000 wenn ich diese Daten hier lese von meiner 51:24.000 --> 51:26.000 Datei und den Schad 256-Hash 51:26.000 --> 51:28.000 davon bilde, entspricht er dem Dateinamen 51:28.000 --> 51:30.000 oder nicht? Und dann kann ich schon mal 51:30.000 --> 51:32.000 sehen, ist es eher der Speicherort, 51:32.000 --> 51:34.000 wo es kaputt gegangen ist? 51:34.000 --> 51:36.000 Oder ist das eher vielleicht die Festplatte, 51:36.000 --> 51:38.000 wo es kaputt gegangen ist? Weil jetzt mein 51:38.000 --> 51:40.000 Name passt nicht mehr zum Hash. 51:40.000 --> 51:42.000 Und wenn das der Fall ist, dann ist es meistens 51:42.000 --> 51:44.000 so, dass dann der Ort, wo die Daten 51:44.000 --> 51:46.000 liegen, ein Problem hat. Das ist 51:46.000 --> 51:48.000 ganz oft so ein altes Nass irgendwo 51:48.000 --> 51:50.000 im Keller bei einem Kumpel oder so was. 51:50.000 --> 51:52.000 Und wenn man da merkt, da werden die Daten 51:52.000 --> 51:54.000 dann nicht mehr so gelesen, dann kann 51:54.000 --> 51:56.000 man da schon ganz gut drauf schließen. 51:56.000 --> 51:58.000 Wenn das aber andersrum ist, dass man 51:58.000 --> 52:00.000 das erste Mal, dass man Daten gelesen hat 52:00.000 --> 52:02.000 und da einen Fingerabdruck berechnet hat 52:02.000 --> 52:04.000 und der nachher nicht mehr zusammenpasst, 52:04.000 --> 52:06.000 aber die Krypto drumherum und auch der Speicherort 52:06.000 --> 52:08.000 und so weiter, alles passt, dann kann man 52:08.000 --> 52:10.000 eher darauf schließen, dass das System, was 52:10.000 --> 52:12.000 das Backup ursprünglich gemacht hat, wo also 52:12.000 --> 52:14.000 Rastic draufläuft, ein Problem hat. 52:14.000 --> 52:16.000 Aber jetzt jenseits von der Diagnose sozusagen 52:16.000 --> 52:18.000 der Ursache, das Bit ist jetzt geflippt 52:18.000 --> 52:20.000 da in einem meiner zahlreichen Fotos. 52:20.000 --> 52:22.000 Stellt sich denn jetzt sozusagen dann der dadurch 52:22.000 --> 52:24.000 verursachte Gesamtschaden für meinen Backup 52:24.000 --> 52:26.000 da? 52:26.000 --> 52:28.000 Das ist eine exzellente Frage und das ist 52:28.000 --> 52:30.000 tatsächlich was, wo wir noch sehr viel Luft 52:30.000 --> 52:32.000 nach oben haben, weil Rastic ist ein 52:32.000 --> 52:34.000 Backup-Programm, was die dupliciert. 52:34.000 --> 52:36.000 Das heißt, es versucht, möglichst speichereffizient 52:36.000 --> 52:38.000 zu sein, so dass jeder Datenschnipsel idealerweise 52:38.000 --> 52:40.000 nur einmal abgelegt wird. 52:40.000 --> 52:42.000 Wenn jetzt ein Bit flippt in deinem Bild, 52:42.000 --> 52:44.000 dann wird dieses Bild ein Defekt haben. 52:44.000 --> 52:46.000 Da kommt man gar nicht drumherum. 52:46.000 --> 52:48.000 Es gibt aber auch 52:48.000 --> 52:50.000 einen Datenschnipsel. 52:50.000 --> 52:52.000 Dieser Datenschnipsel selber, der wird aber 52:52.000 --> 52:54.000 mit hoher Wahrscheinlichkeit nur in exakt diesem 52:54.000 --> 52:56.000 Bild sein. 52:56.000 --> 52:58.000 Oder vielleicht, wenn man da drei Versionen daneben 52:58.000 --> 53:00.000 liegen hat, wo man dann gearbeitet hat. 53:00.000 --> 53:02.000 Trotzdem wird es sehr wahrscheinlich, wenn das 53:02.000 --> 53:04.000 JPEG-Dateien sind, wird es sehr wahrscheinlich 53:04.000 --> 53:06.000 so sein, dass dieser Datenschnipsel nur 53:06.000 --> 53:08.000 bei dem einen Bild passiert. 53:08.000 --> 53:10.000 Der wird nur da bei dem einen Bild verwendet. 53:10.000 --> 53:12.000 Wenn das aber andere Daten sind, wie 53:12.000 --> 53:14.000 ich habe hier eine besonders wichtige 53:14.000 --> 53:16.000 Ziehbibliothek und die habe ich selber geschrieben, 53:16.000 --> 53:18.000 die ist aus 10.000 Zeilen eng optimiert 53:18.000 --> 53:20.000 im C-Assembler-Code. 53:20.000 --> 53:22.000 Und die ist jetzt kaputt. 53:22.000 --> 53:24.000 Aber alle deine Projekte basieren da drauf. 53:24.000 --> 53:26.000 Und diese Datei ist in allen deinen 53:26.000 --> 53:28.000 Projekten drin. 53:28.000 --> 53:30.000 Aber RESTIC hat sie natürlich nur einmal 53:30.000 --> 53:32.000 gespeichert, weil es ja dedipliziert. 53:32.000 --> 53:34.000 Dann ist diese Datei weg. 53:34.000 --> 53:36.000 Und das ist auch ein größeres Problem. 53:36.000 --> 53:38.000 Und deswegen haben viele Leute auch nicht 53:38.000 --> 53:40.000 nur eine Location, wo sie Backups hinschieben, 53:40.000 --> 53:42.000 sondern unabhängig davon. 53:42.000 --> 53:44.000 Die eine vielleicht in der Cloud, die andere 53:44.000 --> 53:46.000 nicht. 53:46.000 --> 53:48.000 Und wenn man jetzt, du hattest vorhin gefragt, 53:48.000 --> 53:50.000 deswegen passt das gerade ganz gut. 53:50.000 --> 53:52.000 Ob RESTIC ist auch unterstützt, dass man 53:52.000 --> 53:54.000 gleichzeitig die Daten, die man gelesen hat, 53:54.000 --> 53:56.000 auf drei verschiedenen Locations verteilt 53:56.000 --> 53:58.000 sozusagen. 53:58.000 --> 54:00.000 Und einer der Gründe, warum wir das nicht so 54:00.000 --> 54:02.000 gerne machen, ist, dass man dann auch, 54:02.000 --> 54:04.000 wenn man RESTIC mehrfach ausführt, 54:04.000 --> 54:06.000 einfach mehrere Kopien auf unterschiedliche 54:06.000 --> 54:08.000 Weise dieser Daten erzeugt. 54:08.000 --> 54:10.000 Das heißt, auch das Lesen findet mehrfach statt. 54:10.000 --> 54:12.000 Und dabei ist dann halt die Chance, 54:12.000 --> 54:14.000 wenn man das nicht so schnell merkt. 54:14.000 --> 54:16.000 Zum anderen aber auch, dass man wirklich eine 54:16.000 --> 54:18.000 komplett unabhängige Stelle hat, 54:18.000 --> 54:20.000 wo die gleichen Daten nochmal liegen. 54:20.000 --> 54:22.000 Die Wahrscheinlichkeit ist einfach viel höher. 54:22.000 --> 54:24.000 Es kann ja auch mal einen Back geben 54:24.000 --> 54:26.000 in RESTIC selber, dass der Daten nicht 54:26.000 --> 54:28.000 richtig speichert. Das lässt sich ja 54:28.000 --> 54:30.000 leider nicht ausschließen. 54:30.000 --> 54:32.000 Und eines der Sachen, die wir auch machen, 54:32.000 --> 54:34.000 ist dieses Dynamisch auseinanderschneiden 54:34.000 --> 54:36.000 von Daten. 54:36.000 --> 54:38.000 Das ist ursprünglich entstanden aus 54:38.000 --> 54:40.000 einer Security-Überlegung, dass man 54:40.000 --> 54:42.000 das Programm installiert. 54:42.000 --> 54:44.000 Deswegen wird dieses auseinanderschneiden 54:44.000 --> 54:46.000 immer anders gemacht. 54:46.000 --> 54:48.000 Also, wenn man ein Repository hat, 54:48.000 --> 54:50.000 das wird initialisiert und ab, dann ist 54:50.000 --> 54:52.000 festgelegt, wie die Daten auseinanderschnitten 54:52.000 --> 54:54.000 werden. Aber für zwei verschiedene 54:54.000 --> 54:56.000 Repositories kann das unterschiedlich sein. 54:56.000 --> 54:58.000 Das heißt auch, wenn du jetzt deine 54:58.000 --> 55:00.000 10.000 Zeilen C-Datei zum Beispiel, 55:00.000 --> 55:02.000 es könnte sein, dass die in dem einen 55:02.000 --> 55:04.000 Repository in drei Stücke auseinanderschnitten 55:04.000 --> 55:06.000 wird, im anderen in vier oder sogar nur in 55:06.000 --> 55:08.000 eins. Und das erzeugt auch nochmal 55:08.000 --> 55:10.000 Variabilität, wie RESTIC-Daten 55:10.000 --> 55:12.000 verarbeitet. 55:12.000 --> 55:14.000 Und das ist auch jetzt sozusagen 55:14.000 --> 55:16.000 ein bewusstes Feature und passiert 55:16.000 --> 55:18.000 nicht wegen irgendwie eines anders 55:18.000 --> 55:20.000 geadeten Seeds auf irgendeine Weise. 55:20.000 --> 55:22.000 Und man nimmt Zeit. 55:22.000 --> 55:24.000 Genau, das ist tatsächlich also aus der 55:24.000 --> 55:26.000 Security-Überlegung, dass man kein Fingerprinting 55:26.000 --> 55:28.000 machen soll, weil wenn man halt 55:28.000 --> 55:30.000 zuschauen kann, wie so ein Repository 55:30.000 --> 55:32.000 wächst zum Beispiel. Und Vermutungen 55:32.000 --> 55:34.000 hat, welche Daten da gesichert werden 55:34.000 --> 55:36.000 könnten, dann könnte man vielleicht 55:36.000 --> 55:38.000 durch Beobachtungen darauf schließen. 55:38.000 --> 55:40.000 Deswegen haben wir ganz zu Anfang gesagt, 55:40.000 --> 55:42.000 wir initialisieren das mit so einem Seed. 55:42.000 --> 55:44.000 Und das ist jedes Mal pro Repository 55:44.000 --> 55:46.000 einfach ein anderer. 55:46.000 --> 55:48.000 Kann man übrigens alles in einem Design 55:48.000 --> 55:50.000 Dokument nachlesen, da gibt es auch unten 55:50.000 --> 55:52.000 das Thread Model. Das heißt, was haben 55:52.000 --> 55:54.000 wir uns gedacht, was sind Angreifer 55:54.000 --> 55:56.000 gegen die RESTIC schützen soll 55:56.000 --> 55:58.000 und Design dafür ist und was sind 55:58.000 --> 56:00.000 Angreifer gegen die kann es vielleicht 56:00.000 --> 56:02.000 nicht schützen. Der Beispiel dafür ist 56:02.000 --> 56:04.000 zum Beispiel, wenn der Administrator 56:04.000 --> 56:06.000 möchte dieses Nass jetzt gerne abfackeln 56:06.000 --> 56:08.000 oder alle deine Daten löschen, dann ist 56:08.000 --> 56:10.000 was da kann RESTIC einfach nichts gegen tun. 56:10.000 --> 56:12.000 Das muss man sich eben bewusst sein, wenn man 56:12.000 --> 56:14.000 seine Daten auf das Nass seines Kumpels 56:14.000 --> 56:16.000 im Keller legt. 56:16.000 --> 56:18.000 Ja, beziehungsweise es gibt ja natürlich 56:18.000 --> 56:20.000 ganz natürlich Szenarien, wo ein 56:20.000 --> 56:22.000 Backup dann nichts mehr hilft. Also Atomkrieg 56:22.000 --> 56:24.000 mit Theoriten-Einschlag, dann ist 56:24.000 --> 56:26.000 halt auch... 56:26.000 --> 56:28.000 Dann ist das halt auch egal, ob man Windows 56:28.000 --> 56:30.000 oder Linux benutzt hat zu Lebzeiten. 56:30.000 --> 56:32.000 Genau, aber das sind Sachen 56:32.000 --> 56:34.000 gerade dieses Problem, was du eben 56:34.000 --> 56:36.000 angesprochen hast, dass wenn ich ein Backup- 56:36.000 --> 56:38.000 Programm habe, was die Duplikation macht, dann 56:38.000 --> 56:40.000 reduziert es die, ja, einfach die Anzahl 56:40.000 --> 56:42.000 Stellen, wo Daten liegen können. 56:42.000 --> 56:44.000 Wenn du jetzt so ein klassisches Backup- 56:44.000 --> 56:46.000 Programm hast, was voll und inkrementell 56:46.000 --> 56:48.000 Backups hat, jedes Vollbackup speichert 56:48.000 --> 56:50.000 alle Daten. Wenn das auf der Platte einfach 56:50.000 --> 56:52.000 zehn Vollbackups sind, dann liegen da zehn 56:52.000 --> 56:54.000 mal nebeneinander die Daten. Das ist nicht 56:54.000 --> 56:56.000 besonders speichereffizient und wenn du eine 56:56.000 --> 56:58.000 kleine Leitung hast und das da in einen 56:58.000 --> 57:00.000 Cloud-Dienst schiebst, dann wirst du da 57:00.000 --> 57:02.000 in eines der Vollbackups kaputt ist und die 57:02.000 --> 57:04.000 Datei in einem anderen noch drin liegt, kannst du die 57:04.000 --> 57:06.000 wieder herstellen. Und ich habe Ideen 57:06.000 --> 57:08.000 dafür, wie man dieses Speicherformat, 57:08.000 --> 57:10.000 was RESTIC benutzt, das Repository, 57:10.000 --> 57:12.000 was sehr ähnlich zu einem Git Repository 57:12.000 --> 57:14.000 aufgebaut ist, wie man das erweitern kann, 57:14.000 --> 57:16.000 dass man nachträglich, nachdem das 57:16.000 --> 57:18.000 Backup gelaufen ist, wieder Redundanz hinzufügt. 57:18.000 --> 57:20.000 Es gibt da so genannte 57:20.000 --> 57:22.000 Forward Error Correcting Codes, FEC, 57:22.000 --> 57:24.000 die sind so... 57:24.000 --> 57:26.000 Also die blähen die Daten wieder auf, 57:26.000 --> 57:28.000 man kann da dann auch einstellen, vielleicht, 57:28.000 --> 57:30.000 man sagt, ich möchte jetzt gerne, 57:30.000 --> 57:32.000 dass meine Daten, die werden jetzt 15% größer, 57:32.000 --> 57:34.000 dafür können bis zu, keine Ahnung, 57:34.000 --> 57:36.000 10% von einer Datei kaputt gehen 57:36.000 --> 57:38.000 und ich kann sie trotzdem wieder herstellen, 57:38.000 --> 57:40.000 eben um so Bitflips im Speicher 57:40.000 --> 57:42.000 von dem komischen Cloud-Dienst 57:42.000 --> 57:44.000 ausgleichen zu können. Oder die 57:44.000 --> 57:46.000 Festplatte hat doch da irgendwie diese 2 Bits 57:46.000 --> 57:48.000 anders zurückgeliefert, als sie sagte. 57:48.000 --> 57:50.000 Oder die gute alte Auto-CD, die hat 57:50.000 --> 57:52.000 doch genau so was, um Kratzer zu 57:52.000 --> 57:54.000 kompensieren. Ja, ganz genau, 57:54.000 --> 57:56.000 daher kommt das auch. Das ist ein sehr einfacher 57:56.000 --> 57:58.000 Job, da gibt es mittlerweile sehr viel mehr. 57:58.000 --> 58:00.000 Das müsste man aber einbauen. 58:00.000 --> 58:02.000 Und was wir gelernt haben, als Projekt, 58:02.000 --> 58:04.000 es ist unglaublich wichtig, dass man sich 58:04.000 --> 58:06.000 weiterentwickelt, aber das muss gerade 58:06.000 --> 58:08.000 so als Backup-Programm sehr kontrolliert 58:08.000 --> 58:10.000 passieren, da muss man es immer sehr gut überlegen. 58:10.000 --> 58:12.000 Und eine der Sachen, die wir sehr lange 58:12.000 --> 58:14.000 nicht hatten, ist, dass 58:14.000 --> 58:16.000 Rastic jetzt bis vor kurzem 58:16.000 --> 58:18.000 keine Kompression unterstützt hat. 58:18.000 --> 58:20.000 Und es gab damals, als ich angefangen 58:20.000 --> 58:22.000 habe, einfach keine gute Kompressions-Library 58:22.000 --> 58:24.000 für Go, die auch irgendwie schnell war 58:24.000 --> 58:26.000 und es gab keine gute Kompressionen, wo man 58:26.000 --> 58:28.000 nicht halt irgendwie 15 Werte erst 58:28.000 --> 58:30.000 einstellen musste, damit das optimal 58:30.000 --> 58:32.000 passt, sondern es gab einfach nichts 58:32.000 --> 58:34.000 Gescheites, also haben wir es erstmal 58:34.000 --> 58:36.000 weggelassen. Wir haben jetzt im Nachhinein 58:36.000 --> 58:38.000 das Storage-Format erweitert, so dass man 58:38.000 --> 58:40.000 mit älteren Rastic-Versionen da zwar nicht 58:40.000 --> 58:42.000 mehr darauf zugreifen kann, aber alte 58:42.000 --> 58:44.000 Daten, die jetzt bei dem Cloud-Dienst 58:44.000 --> 58:46.000 liegen, die sind weiterhin gültig. Das heißt, 58:46.000 --> 58:48.000 ich konnte ein bestehendes Repository, egal 58:48.000 --> 58:50.000 wie groß das war sozusagen, upgraden, 58:50.000 --> 58:52.000 dass danach dann neuere Versionen von 58:52.000 --> 58:54.000 ganzen Daten, die da schon liegen, die bleiben 58:54.000 --> 58:56.000 gültig. Und da hat es 58:56.000 --> 58:58.000 sehr viele Diskussionen gegeben, weil man 58:58.000 --> 59:00.000 auch, es gab einige Stimmen, die gesagt haben, 59:00.000 --> 59:02.000 ja, dann lass uns doch jetzt die Gelegenheit 59:02.000 --> 59:04.000 nutzen, wir definieren jetzt das Storage-Format 59:04.000 --> 59:06.000 komplett neu, das ist nicht rückwärts 59:06.000 --> 59:08.000 kompatibel, dann können wir ganz viel alten 59:08.000 --> 59:10.000 Code wegschmeißen. Beste Idee abzeiten. 59:10.000 --> 59:12.000 Ja, da haben wir uns aber explizit 59:12.000 --> 59:14.000 gegen entschieden, obwohl das halt im Code 59:14.000 --> 59:16.000 dann heißt, dass man ältere Sachen weiter 59:16.000 --> 59:18.000 unterstützen will, aber es kann ja nicht sein, 59:18.000 --> 59:20.000 dass ich einen Backup mache und drei Jahre 59:20.000 --> 59:22.000 lesen kann, weil dann ist es kein Backup. 59:22.000 --> 59:24.000 Und also haben wir eine Möglichkeit gefunden, 59:24.000 --> 59:26.000 wie wir das nachträglich nachrüsten. 59:26.000 --> 59:28.000 Das ist nicht die eleganteste Lösung, 59:28.000 --> 59:30.000 aber es ist eine schöne Lösung, eine eindeutige 59:30.000 --> 59:32.000 Lösung und sie erlaubt es Leuten, ihre Repositories 59:32.000 --> 59:34.000 so ein Stückchenweise zu upgraden und 59:34.000 --> 59:36.000 dann neue Daten schon verschlüsselt 59:36.000 --> 59:38.000 abzuspeichern, aber alte Daten, die da liegen, 59:38.000 --> 59:40.000 auch einfach liegen zu lassen. 59:40.000 --> 59:42.000 Ja, das ist wie Java-Skriptin der Webwelt. 59:42.000 --> 59:44.000 Breaking changes gehen nicht, aber man kann immer 59:44.000 --> 59:46.000 was hinzufügen und bloß manchmal einen syntaktischen 59:46.000 --> 59:48.000 Kunstgriff machen. Ja, sozusagen, 59:48.000 --> 59:50.000 das haben wir dann in ganz klein bei diesem 59:50.000 --> 59:52.000 Repository-Format gemacht. Das ist wirklich 59:52.000 --> 59:54.000 sehr, sehr wenig. Wir mussten da irgendwie 59:54.000 --> 59:56.000 kennzeichnen, welche Dateien verschlüsselte Daten 59:56.000 --> 59:58.000 erhalten und welche nicht. Die Details kann 59:58.000 --> 01:00:00.000 man sich in dem Designdokument mal angucken, 01:00:00.000 --> 01:00:02.000 dass es, ich finde, eigentlich ein ganz schöner 01:00:02.000 --> 01:00:04.000 Workaround, aber es hat da auch Stimmen gegeben, 01:00:04.000 --> 01:00:06.000 die gesagt haben, nee, komm, lass uns jetzt die alten 01:00:06.000 --> 01:00:08.000 Zöpfe abschneiden, aber es kann ja nicht sein, 01:00:08.000 --> 01:00:10.000 dass ich alte Backups nicht mehr lesen kann, das geht 01:00:10.000 --> 01:00:12.000 einfach nicht. Das ist schlecht, ja, 01:00:12.000 --> 01:00:14.000 gerade wenn man darauf angewiesen ist, 01:00:14.000 --> 01:00:16.000 dass man nochmal in fünf Jahre alt 01:00:16.000 --> 01:00:18.000 das Backup oder so reingucken muss. 01:00:18.000 --> 01:00:20.000 Ja, wo das an sich, also ich 01:00:20.000 --> 01:00:22.000 auf Twitter mal hier im Internet Archiv folgen, 01:00:22.000 --> 01:00:24.000 was die halt alles so für Zeug 01:00:24.000 --> 01:00:26.000 wiederherstellen. 01:00:26.000 --> 01:00:28.000 Also da sind ja die Zeithorizonte 01:00:28.000 --> 01:00:30.000 auch nochmal ganz anderer, also 01:00:30.000 --> 01:00:32.000 das eichhörnchen Gehirn eines 01:00:32.000 --> 01:00:34.000 Entwicklers irgendwie so hat von irgendwie 01:00:34.000 --> 01:00:36.000 fünf Jahren ist schon irgendwie Ewigkeiten her. 01:00:36.000 --> 01:00:38.000 Ja, da hast du natürlich recht, 01:00:38.000 --> 01:00:40.000 ich wollte aber nochmal 01:00:40.000 --> 01:00:42.000 auf das Thema Zukunft hinaus, 01:00:42.000 --> 01:00:44.000 nämlich ihr macht das jetzt, oder du 01:00:44.000 --> 01:00:46.000 machst das jetzt acht Jahre irgendwie. 01:00:46.000 --> 01:00:48.000 Ich sag mal dein eigenes Problem 01:00:48.000 --> 01:00:50.000 wahrscheinlich dein Dateien 01:00:50.000 --> 01:00:52.000 zu Backuppen, 01:00:52.000 --> 01:00:54.000 das Problem hast du bestimmt 01:00:54.000 --> 01:00:56.000 sage ich mal zu 99,95% gelöst, 01:00:56.000 --> 01:00:58.000 würde ich mal schätzen. 01:00:58.000 --> 01:01:00.000 Dennoch gibt es ja immer 01:01:00.000 --> 01:01:02.000 wieder Weiterentwicklungen, du hast 01:01:02.000 --> 01:01:04.000 jetzt die Kompression angesprochen. 01:01:04.000 --> 01:01:06.000 Was ist so 01:01:06.000 --> 01:01:08.000 ja für dich, 01:01:08.000 --> 01:01:10.000 für das Tool, aber 01:01:10.000 --> 01:01:12.000 halt auch für sozusagen 01:01:12.000 --> 01:01:14.000 am generellen Backup-Himmel sozusagen. 01:01:14.000 --> 01:01:16.000 Was ist der nächste Step, also 01:01:16.000 --> 01:01:18.000 wo geht's hin? 01:01:18.000 --> 01:01:20.000 Also ein großer 01:01:20.000 --> 01:01:22.000 Step ist auf jeden Fall, dass wir da 01:01:22.000 --> 01:01:24.000 genau die Sache angehen 01:01:24.000 --> 01:01:26.000 werden irgendwann, die ihr 01:01:26.000 --> 01:01:28.000 angesprochen habt mit der Redundanz, 01:01:28.000 --> 01:01:30.000 dass wir also solche Error-Correcting-Codes 01:01:30.000 --> 01:01:32.000 einbauen werden, das auf jeden Fall. 01:01:32.000 --> 01:01:34.000 Wir haben aufgehört, Backends zu 01:01:34.000 --> 01:01:36.000 implementieren, also verschiedene Cloud-Dienste, 01:01:36.000 --> 01:01:38.000 wir haben uns damit R-Clone zusammengetan, 01:01:38.000 --> 01:01:40.000 das ist so ein ganz bekanntes Tool, was halt 01:01:40.000 --> 01:01:42.000 die Cloud-Dienste miteinander synchronisieren kann 01:01:42.000 --> 01:01:44.000 und das kann Rastic als Backend benutzen, 01:01:44.000 --> 01:01:46.000 wo man quasi Daten dann im R-Clone übergibt 01:01:46.000 --> 01:01:48.000 und das sorgt dafür, dass das irgendwo 01:01:48.000 --> 01:01:50.000 auf den Cloud-Dienst kommt. 01:01:50.000 --> 01:01:52.000 Es wird auf jeden Fall eine größere 01:01:52.000 --> 01:01:54.000 Änderung geben demnächst, was die 01:01:54.000 --> 01:01:56.000 Unterstützung von Fuse-Mounts angeht. 01:01:56.000 --> 01:01:58.000 Das bedeutet, ich kann 01:01:58.000 --> 01:02:00.000 mit Rastic mein Repository 01:02:00.000 --> 01:02:02.000 sozusagen mounten, also wer unter Linux 01:02:02.000 --> 01:02:04.000 mal gearbeitet hat, wird das kennen. Ich binde 01:02:04.000 --> 01:02:06.000 das sozusagen als Laufwerk ein und kann 01:02:06.000 --> 01:02:08.000 dann on demand, obwohl das Repository 01:02:08.000 --> 01:02:10.000 in der Cloud liegt, auf meinen Snapshots 01:02:10.000 --> 01:02:12.000 rumbrausen, in der Dateistruktur und kann 01:02:12.000 --> 01:02:14.000 man einzelne Dateien einfach mit 01:02:14.000 --> 01:02:16.000 CP und meinen ganz normalen Kommando-Zahlen 01:02:16.000 --> 01:02:18.000 Tools rausziehen. Und da, das hat sich 01:02:18.000 --> 01:02:20.000 herausgestellt, das ist einfach unter 01:02:20.000 --> 01:02:22.000 Windows nicht so einfach zu implementieren, 01:02:22.000 --> 01:02:24.000 wir unterstützen Windows aber und wollen 01:02:24.000 --> 01:02:26.000 dann da auch nochmal eine Möglichkeit schaffen, 01:02:26.000 --> 01:02:28.000 dass wir da irgendwie auch so eine Art Laufwerk 01:02:28.000 --> 01:02:30.000 einbinden machen. Das ist auf jeden Fall 01:02:30.000 --> 01:02:32.000 was eine GUI wäre schön, da fehlt uns 01:02:32.000 --> 01:02:34.000 noch jemand, der da wirklich 01:02:34.000 --> 01:02:36.000 Lust drauf hat, wobei Rastic 01:02:36.000 --> 01:02:38.000 wirklich so eine Art Kommando-Zahlen-Tool 01:02:38.000 --> 01:02:40.000 ist und es eine ganze Menge Tools gibt, 01:02:40.000 --> 01:02:42.000 die da drumherum 01:02:42.000 --> 01:02:44.000 sozusagen eine GUI gebaut haben, 01:02:44.000 --> 01:02:46.000 dass aber Rastic als Kommando-Zahlen-Tool 01:02:46.000 --> 01:02:48.000 immer noch aufrufen 01:02:48.000 --> 01:02:50.000 intern dann. Und ja, 01:02:50.000 --> 01:02:52.000 das ist so das, was so 01:02:52.000 --> 01:02:54.000 jetzt in nächster Zeit ansteht 01:02:54.000 --> 01:02:56.000 und was dann im weiteren Horizont 01:02:56.000 --> 01:02:58.000 so ein bisschen, also ich träume 01:02:58.000 --> 01:03:00.000 noch davon irgendwann auch nochmal 01:03:00.000 --> 01:03:02.000 asymmetrische Kryptografie einzubauen, 01:03:02.000 --> 01:03:04.000 dass man Konstellationen schaffen kann, 01:03:04.000 --> 01:03:06.000 wo ein System in der Lage ist, ein neues 01:03:06.000 --> 01:03:08.000 Backup zu schreiben, aber nicht alte 01:03:08.000 --> 01:03:10.000 Daten zu lesen. Das Szenario 01:03:10.000 --> 01:03:12.000 dafür ist, das kommt immer wieder auch 01:03:12.000 --> 01:03:14.000 vor, dass man sagt, ich habe hier einen 01:03:14.000 --> 01:03:16.000 Server, der hat Daten, die ändern sich, 01:03:16.000 --> 01:03:18.000 ich möchte davon vielleicht sehr lange 01:03:18.000 --> 01:03:20.000 ein Backup von haben, wenn aber dieser 01:03:20.000 --> 01:03:22.000 Server kompromittiert wird, also der 01:03:22.000 --> 01:03:24.000 Angreiferzugriff auf den Server erlangt 01:03:24.000 --> 01:03:26.000 und auch zu den Zugangsdaten zu einem Repository, 01:03:26.000 --> 01:03:28.000 da soll der bitte keine alten 01:03:28.000 --> 01:03:30.000 Daten lesen können. Und das ist 01:03:30.000 --> 01:03:32.000 eine ganz interessante Herausforderung 01:03:32.000 --> 01:03:34.000 sowas zu implementieren. Das gibt es schon 01:03:34.000 --> 01:03:36.000 in anderen Tools, ist die Frage, ob das 01:03:36.000 --> 01:03:38.000 für RESTIC passend ist. 01:03:38.000 --> 01:03:40.000 Warum soll das nicht sein? 01:03:40.000 --> 01:03:42.000 Weil RESTIC 01:03:42.000 --> 01:03:44.000 eigentlich in dem, was es tut, 01:03:44.000 --> 01:03:46.000 es hat ein Repository, es hat 01:03:46.000 --> 01:03:48.000 ein Passwort, es kann Backups machen, es 01:03:48.000 --> 01:03:50.000 kann Backups wiederherstellen, 01:03:50.000 --> 01:03:52.000 das kann es gut 01:03:52.000 --> 01:03:54.000 und eventuell ergibt es Sinn, 01:03:54.000 --> 01:03:56.000 das einfach auf diesem Stand zu 01:03:56.000 --> 01:03:58.000 lassen und zu sagen, wir machen diesen 01:03:58.000 --> 01:04:00.000 einen Job und den machen wir richtig gut 01:04:00.000 --> 01:04:02.000 und diesen anderen Use Case, den gibt es 01:04:02.000 --> 01:04:04.000 zwar, der wäre auch schön, wenn wir den 01:04:04.000 --> 01:04:06.000 unterstützen, aber vielleicht ist es die 01:04:06.000 --> 01:04:08.000 Komplexität nicht wert. 01:04:08.000 --> 01:04:10.000 Man müsste das Storage Format erweitern, 01:04:10.000 --> 01:04:12.000 man muss das in das Programm selber 01:04:12.000 --> 01:04:14.000 einbauen, aller Code, den wir da 01:04:14.000 --> 01:04:16.000 einbauen, speziell an so neurologischen 01:04:16.000 --> 01:04:18.000 Punkten wie der Verschlüsselung, das 01:04:18.000 --> 01:04:20.000 wird immer auch die Gefahr, dass man da 01:04:20.000 --> 01:04:22.000 versehentlich katastrophale Fehler macht 01:04:22.000 --> 01:04:24.000 und eventuell ist es das nicht wert 01:04:24.000 --> 01:04:26.000 und das ist immer so die Abwägung. 01:04:26.000 --> 01:04:28.000 Auf der anderen Seite, wir sind jetzt so ein 01:04:28.000 --> 01:04:30.000 von vier Leuten, glaube ich, 01:04:30.000 --> 01:04:32.000 die das auch irgendwie 01:04:32.000 --> 01:04:34.000 entwickeln und vor allen Dingen 01:04:34.000 --> 01:04:36.000 supporten müssen und vielleicht können 01:04:36.000 --> 01:04:38.000 wir gleich nochmal so ein bisschen über 01:04:38.000 --> 01:04:40.000 Community und Projektentwicklung reden, 01:04:40.000 --> 01:04:42.000 weil das auch sich komplett anders 01:04:42.000 --> 01:04:44.000 entwickelt hat, als ich gedacht hätte 01:04:44.000 --> 01:04:46.000 und da ist einfach die Frage, können wir 01:04:46.000 --> 01:04:48.000 das leisten, so was zu entwickeln, als 01:04:48.000 --> 01:04:50.000 Open Source Projekt, die das von Leuten, 01:04:50.000 --> 01:04:52.000 die das in ihrer Freizeit machen oder ist 01:04:52.000 --> 01:04:54.000 das vielleicht eher was, das überlassen 01:04:54.000 --> 01:04:56.000 wir dann vielleicht anderen Projekten 01:04:56.000 --> 01:04:58.000 um das Gedanke, dass es möglichst einfach 01:04:58.000 --> 01:05:00.000 sein soll, wenn ich jetzt mir da 01:05:00.000 --> 01:05:02.000 erst mal Gedanken machen muss, wer kann wann, 01:05:02.000 --> 01:05:04.000 welches Backup wiederherstellen, weil wegen 01:05:04.000 --> 01:05:06.000 Kryptografie und so weiter, dann wird's halt 01:05:06.000 --> 01:05:08.000 auch wieder zu komplex und vielleicht ist 01:05:08.000 --> 01:05:10.000 das einfach nicht unser Anwendungsfall. 01:05:12.000 --> 01:05:14.000 Ja, do one thing, do it good 01:05:14.000 --> 01:05:16.000 nach diesem Motto, also 01:05:16.000 --> 01:05:18.000 mach mal lieber eine Sache richtig, 01:05:18.000 --> 01:05:20.000 du hast ja schon 01:05:20.000 --> 01:05:22.000 angesprochen, ihr macht das sozusagen 01:05:22.000 --> 01:05:24.000 in der Freizeit, da sind jetzt 01:05:24.000 --> 01:05:26.000 5 Leute so im Core Team 01:05:26.000 --> 01:05:28.000 irgendwie und drumherum gibt's 01:05:28.000 --> 01:05:30.000 natürlich viele Contributions, wahrscheinlich 01:05:30.000 --> 01:05:32.000 viele Leute, die nach 01:05:32.000 --> 01:05:34.000 Support in den Comments 01:05:34.000 --> 01:05:36.000 oder in den Issues fragen 01:05:36.000 --> 01:05:38.000 oder irgendwie Probleme 01:05:38.000 --> 01:05:40.000 bei der Anwendung haben. 01:05:40.000 --> 01:05:42.000 Wie organisiert ihr euch da? 01:05:42.000 --> 01:05:44.000 Hauptsächlich über 01:05:44.000 --> 01:05:46.000 GitHub selber und über das Forum. 01:05:46.000 --> 01:05:48.000 Ich habe eine Instanz von Discourse 01:05:48.000 --> 01:05:50.000 aufgesetzt, also Discourse ist diese 01:05:50.000 --> 01:05:52.000 ganz bekannte, wie Forum mal in richtig, 01:05:52.000 --> 01:05:54.000 es ist glaube ich ein Hobby geschrieben, von 01:05:54.000 --> 01:05:56.000 den Leuten, die mal Stack Overflow 01:05:56.000 --> 01:05:58.000 gegründet haben, das kann ich sehr empfehlen, 01:05:58.000 --> 01:06:00.000 weil das im Prinzip ein 01:06:00.000 --> 01:06:02.000 Selbstläufer ist. Also man holt 01:06:02.000 --> 01:06:04.000 sich den Container, startet das ganze Ding 01:06:04.000 --> 01:06:06.000 und dann kann man loslegen. Und es gibt 01:06:06.000 --> 01:06:08.000 viele so Moderationsfeatures 01:06:08.000 --> 01:06:10.000 die sie auch von Stack Overflow 01:06:10.000 --> 01:06:12.000 mit übernommen haben, das halt je länger 01:06:12.000 --> 01:06:14.000 ich zum Beispiel lese, desto mehr, desto 01:06:14.000 --> 01:06:16.000 höher habe ich Berechtigungen in dem 01:06:16.000 --> 01:06:18.000 Forum und das bekommt man auch selber schon, 01:06:18.000 --> 01:06:20.000 wenn jemand sehr viel liest, dann bekommt 01:06:20.000 --> 01:06:22.000 man eine Berechtigung bei anderen Leuten 01:06:22.000 --> 01:06:24.000 Tippfehler zu korrigieren, das kennt man ja 01:06:24.000 --> 01:06:26.000 von Stack Overflow selber auch. 01:06:26.000 --> 01:06:28.000 Das hat extrem gut funktioniert. 01:06:28.000 --> 01:06:30.000 Und ich habe ganz von Anfang an sehr drauf geachtet 01:06:30.000 --> 01:06:32.000 dass sowohl in den GitHub Issues 01:06:32.000 --> 01:06:34.000 als auch in dem Forum 01:06:34.000 --> 01:06:36.000 ein sehr pfleglicher Umgangston herrscht 01:06:36.000 --> 01:06:38.000 und habe alle Leute gnadenlos gesperrt 01:06:38.000 --> 01:06:40.000 und rausgeschmissen, die sich da nicht dran gehalten 01:06:40.000 --> 01:06:42.000 haben. Und das hat dazu geführt, dass es 01:06:42.000 --> 01:06:44.000 Leute im Forum gibt, die auch selber gar 01:06:44.000 --> 01:06:46.000 nicht entwickeln, nur in diesem Forum 01:06:46.000 --> 01:06:48.000 aktiv sind und anderen helfen. Mehr machen die 01:06:48.000 --> 01:06:50.000 Leute in diesem Forum. 01:06:50.000 --> 01:06:52.000 Und das ist natürlich großartig, das wünscht 01:06:52.000 --> 01:06:54.000 sich jedes Projekt, das so zu haben. 01:06:54.000 --> 01:06:56.000 Weil normalerweise immer so dieses Support 01:06:56.000 --> 01:06:58.000 Arbeit, das ist halt das so ja, dann guckt 01:06:58.000 --> 01:07:00.000 man halt nochmal rein und schreibt dann 01:07:00.000 --> 01:07:02.000 nochmal kurz was zu, aber es gibt da 01:07:02.000 --> 01:07:04.000 wirklich, wenn jetzt jemand ins Forum 01:07:04.000 --> 01:07:06.000 schreibt, dann ist in der Regel innerhalb 01:07:06.000 --> 01:07:08.000 von ganz kurzer Zeit und maximal so ein halber 01:07:08.000 --> 01:07:10.000 Tag, hat da jemand mal drauf geantwortet, 01:07:10.000 --> 01:07:12.000 hat ihm gesagt, okay, wenn du jetzt irgendwie 01:07:12.000 --> 01:07:14.000 Probleme hast, dann welche Version hast du, 01:07:14.000 --> 01:07:16.000 welches Backend ist das denn? 01:07:16.000 --> 01:07:18.000 Es gibt da auch so gut wie kein Spam. 01:07:18.000 --> 01:07:20.000 Weil sehr schnell, wenn jemand da eine 01:07:20.000 --> 01:07:22.000 Nachricht schreibt und irgendwie nur auf seine 01:07:22.000 --> 01:07:24.000 Seite hinweisen will, dann wird das halt 01:07:24.000 --> 01:07:26.000 markiert, wenn es von zwei oder drei 01:07:26.000 --> 01:07:28.000 Benutzern, egal wie kurz die dabei sind, 01:07:28.000 --> 01:07:30.000 als Spam markiert wird, dann wird es erstmal 01:07:30.000 --> 01:07:32.000 versteckt und dann hat dann nachher ein 01:07:32.000 --> 01:07:34.000 Moderator dann eine Chance das zu machen. 01:07:34.000 --> 01:07:36.000 Wir haben dann da auch zum Teil dann 01:07:36.000 --> 01:07:38.000 nicht öffentliche Posts, wo wir so ein bisschen 01:07:38.000 --> 01:07:40.000 die Entwicklung besprechen, wo wir besprechen 01:07:40.000 --> 01:07:42.000 was sind Features, die demnächst mal 01:07:42.000 --> 01:07:44.000 angegangen werden können, was sind auch Features 01:07:44.000 --> 01:07:46.000 oder Polrequest, die ich mir vielleicht angucken 01:07:46.000 --> 01:07:48.000 soll, als jemand, der da sehr tief 01:07:48.000 --> 01:07:50.000 im Code drin ist. 01:07:50.000 --> 01:07:52.000 Und jetzt aktuell ist es tatsächlich so, 01:07:52.000 --> 01:07:54.000 dass ich gar nicht mehr so viel entwickel. 01:07:54.000 --> 01:07:56.000 Mein Privatleben hat sich ja auch weiter 01:07:56.000 --> 01:07:58.000 entwickelt in den acht Jahren. 01:07:58.000 --> 01:08:00.000 Ich habe mittlerweile zwei kleine Kinder 01:08:00.000 --> 01:08:02.000 und komme abends nicht mehr so häufig dazu. 01:08:02.000 --> 01:08:04.000 Das heißt, ich schreibe weniger Code. 01:08:04.000 --> 01:08:06.000 Aber dafür mache ich dann eher so, ja, 01:08:06.000 --> 01:08:08.000 ich sage mal so Richtungsentscheidungen 01:08:08.000 --> 01:08:10.000 oder so, man könnte in die ein oder andere 01:08:10.000 --> 01:08:12.000 Richtung gehen und irgendjemand muss 01:08:12.000 --> 01:08:14.000 in die Richtung. 01:08:14.000 --> 01:08:16.000 Und wir haben auch noch, glaube ich, 01:08:16.000 --> 01:08:18.000 wir haben noch einen IRC-Kanal, wo man so 01:08:18.000 --> 01:08:20.000 ein bisschen mehr in Echtzeit chatten kann. 01:08:20.000 --> 01:08:22.000 Das ist jetzt alles schon so ein bisschen old-school, 01:08:22.000 --> 01:08:24.000 weil wir gar nicht so sehr in Richtung 01:08:24.000 --> 01:08:26.000 Internet und Discord und was es alles gibt. 01:08:26.000 --> 01:08:28.000 Dafür ist die Infrastruktur, aber bis auf GitHub 01:08:28.000 --> 01:08:30.000 ist die Infrastruktur auch selbst gehostet. 01:08:30.000 --> 01:08:32.000 Also wir haben hier lokal in Aachen 01:08:32.000 --> 01:08:34.000 einen kleinen Internet-Provider, 01:08:34.000 --> 01:08:36.000 einen Hosting-Dienstleister, der da auch 01:08:36.000 --> 01:08:38.000 ein Server bereitgestellt hat und da läuft 01:08:38.000 --> 01:08:40.000 das dann auch alles drauf, dass wir recht 01:08:40.000 --> 01:08:42.000 eigentlich sind jetzt abgesehen von GitHub. 01:08:42.000 --> 01:08:44.000 Aber ich glaube, wenn GitHub kommt, 01:08:44.000 --> 01:08:46.000 kein Open-Source-Projekt dran vorbei. 01:08:46.000 --> 01:08:48.000 Es ist sehr schwierig, ja. 01:08:48.000 --> 01:08:50.000 Außer man holt sich vielleicht seine eigene 01:08:50.000 --> 01:08:52.000 Instanz von GitHub, aber das macht ja 01:08:52.000 --> 01:08:54.000 auch keinen Sinn für so ein 01:08:54.000 --> 01:08:56.000 Open-Source-Projekt, glaube ich. 01:08:56.000 --> 01:08:58.000 Ja. 01:08:58.000 --> 01:09:00.000 Das ist ja auch gar nicht so schlimm. 01:09:00.000 --> 01:09:02.000 Das Wichtige ist ja, dass man bei Bedarf 01:09:02.000 --> 01:09:04.000 wieder weg kommt von GitHub. 01:09:04.000 --> 01:09:06.000 Dann nimmt man seinen Repository und ab dafür 01:09:06.000 --> 01:09:08.000 kein so schlimmer Lock-in-Effekt, glaube ich. 01:09:08.000 --> 01:09:10.000 Das Problem ist, dass da viel drumherum ist. 01:09:10.000 --> 01:09:12.000 Wir nutzen jetzt nur die Issues und das Code-Tracking 01:09:12.000 --> 01:09:14.000 und halt die CI von GitHub. 01:09:14.000 --> 01:09:16.000 Das ist schon sehr angenehm, muss ich sagen. 01:09:16.000 --> 01:09:18.000 Das alles nicht selber hosten zu missen. 01:09:18.000 --> 01:09:20.000 Es gäbe aber auch andere. 01:09:20.000 --> 01:09:22.000 Also ich habe vor kurzem mal GTI aufgesetzt. 01:09:22.000 --> 01:09:24.000 GTI.io, das ist so ein in-go-geschriebener 01:09:24.000 --> 01:09:26.000 GitHub-Klon, die machen das schon sehr gut. 01:09:26.000 --> 01:09:28.000 Ja, also was ich auf jeden Fall 01:09:28.000 --> 01:09:30.000 sehr spannend fand, ist, dass 01:09:30.000 --> 01:09:32.000 man halt wirklich, dass ihr halt 01:09:32.000 --> 01:09:34.000 wirklich eine Engaging-Community habt. 01:09:34.000 --> 01:09:36.000 Also Leute, die halt wirklich auch Bock haben 01:09:36.000 --> 01:09:38.000 bei anderen mal zu reagieren, 01:09:38.000 --> 01:09:40.000 die das Tool halt nutzen 01:09:40.000 --> 01:09:42.000 und dann irgendwie 01:09:42.000 --> 01:09:44.000 aus den Erfahrungen auch gerne teilen. 01:09:44.000 --> 01:09:46.000 Ich glaube, sowas halt hinzubekommen. 01:09:46.000 --> 01:09:48.000 Klar, mit 18.500 Stars auf GitHub 01:09:48.000 --> 01:09:50.000 ist das... 01:09:50.000 --> 01:09:52.000 Da gibt es halt viele Benutzerinnen und Benutzer 01:09:52.000 --> 01:09:54.000 auch einfach, die das Tool täglich im Einsatz haben. 01:09:54.000 --> 01:09:56.000 Und ich glaube, das ist halt das, 01:09:56.000 --> 01:09:58.000 wenn man das schafft, da seine Community 01:09:58.000 --> 01:10:00.000 hinzubekommen. 01:10:00.000 --> 01:10:02.000 Und dann noch, wenn da noch ein pfleglicher Umgang 01:10:02.000 --> 01:10:04.000 heutzutage da vorherrscht, das ist natürlich 01:10:04.000 --> 01:10:06.000 sehr gut. Deswegen auch vielleicht an der Stelle 01:10:06.000 --> 01:10:08.000 mal an die Hörerinnen und Hörer 01:10:08.000 --> 01:10:10.000 der Aufruf guckt euch einfach mal an. 01:10:10.000 --> 01:10:12.000 Das Tool ihr habt ja auch gehört. 01:10:12.000 --> 01:10:14.000 Es wird auch Unterstützung auch im Frontend-Bereich 01:10:14.000 --> 01:10:16.000 zum Beispiel für... 01:10:16.000 --> 01:10:18.000 zum Beispiel eine Oberfläche gesucht. 01:10:18.000 --> 01:10:20.000 Also wenn das... 01:10:20.000 --> 01:10:22.000 wenn ihr jetzt sagt so, hm ja, das Tool 01:10:22.000 --> 01:10:24.000 an sich so von den Gedanken, die du jetzt 01:10:24.000 --> 01:10:26.000 auch geteilt hast, Alex, sagt euch zu, 01:10:26.000 --> 01:10:28.000 dann schaut da einfach mal vorbei 01:10:28.000 --> 01:10:30.000 oder guckt mal in die 01:10:30.000 --> 01:10:32.000 in die Kommentare, die sich so 01:10:32.000 --> 01:10:34.000 was da finden. 01:10:34.000 --> 01:10:36.000 Und ja, werft doch mal wieder 01:10:36.000 --> 01:10:38.000 Limechat oder wie hieß das 01:10:38.000 --> 01:10:40.000 an, um in IRC 01:10:40.000 --> 01:10:42.000 reinzukommen. 01:10:42.000 --> 01:10:44.000 Ja, das sind die ganzen Alten. 01:10:44.000 --> 01:10:46.000 Das Limechat habe ich nie benutzt, aber MIRC 01:10:46.000 --> 01:10:48.000 war so Ende der 90er 01:10:48.000 --> 01:10:50.000 ganz bekannt dafür. 01:10:50.000 --> 01:10:52.000 Ja, es ist tatsächlich auch... 01:10:52.000 --> 01:10:54.000 Wir haben so ein bisschen... Dadurch, 01:10:54.000 --> 01:10:56.000 dass wir in Go-Gesch, also das Restick 01:10:56.000 --> 01:10:58.000 in Go-Geschrieben ist, haben wir so ein bisschen 01:10:58.000 --> 01:11:00.000 so die Popularität dieser Programmiersprache 01:11:00.000 --> 01:11:02.000 auch als eine sehr gute Sprache rausgestellt, 01:11:02.000 --> 01:11:04.000 weil es eben 01:11:04.000 --> 01:11:06.000 ja, ich will nicht sagen, das ist der Gegenentwurf 01:11:06.000 --> 01:11:08.000 zu Rust, aber es liegt auf ganz andere 01:11:08.000 --> 01:11:10.000 Sachen wert. Und eine der Sachen 01:11:10.000 --> 01:11:12.000 ist, also in der Rust-Folge, 01:11:12.000 --> 01:11:14.000 die bei dem Podcast hier letztens 01:11:14.000 --> 01:11:16.000 war, habe ich auch gehört, 01:11:16.000 --> 01:11:18.000 dass Rust zum Beispiel sehr stark 01:11:18.000 --> 01:11:20.000 auf eine sehr dichte Sündung setzt 01:11:20.000 --> 01:11:22.000 und auch auf so Sachen wie 01:11:22.000 --> 01:11:24.000 Macros, die expandiert 01:11:24.000 --> 01:11:26.000 werden. Und dann, das ist auch eine der 01:11:26.000 --> 01:11:28.000 üblichen Kritik an Rust, aber 01:11:28.000 --> 01:11:30.000 in Go ist es halt einfach anders. 01:11:30.000 --> 01:11:32.000 Ich will nicht sagen, dass das 01:11:32.000 --> 01:11:34.000 irgendwie, das eine besser oder schlechter 01:11:34.000 --> 01:11:35.000 ist, aber 01:11:35.000 --> 01:11:37.000 Go-Code kann man eigentlich immer 01:11:37.000 --> 01:11:39.000 ziemlich gut lesen. Selbst wenn man 01:11:39.000 --> 01:11:41.000 selber, also wenn man mal selber in einer Sprache 01:11:41.000 --> 01:11:43.000 entwickelt hat, die geschweifte Klammern benutzt, 01:11:43.000 --> 01:11:45.000 um Blöcke abzutrennen, dann 01:11:45.000 --> 01:11:47.000 kann man das eigentlich ziemlich gut lesen. 01:11:47.000 --> 01:11:49.000 Und wir kriegen, gerade am Anfang, aber 01:11:49.000 --> 01:11:51.000 jetzt auch immer noch, wir kriegen einen Haufen 01:11:51.000 --> 01:11:53.000 Pullrequests, wo so Dinge halt 01:11:53.000 --> 01:11:55.000 einfach gefixt werden, weil sich jemand denkt, 01:11:55.000 --> 01:11:57.000 das sieht aber irgendwie komisch aus, hat 01:11:57.000 --> 01:11:59.000 irgendeinen Problem, guckt kurz in den Code 01:11:59.000 --> 01:12:01.000 und sieht halt irgendeinen Fehler und kann da 01:12:01.000 --> 01:12:03.000 dann ziemlich direkt mitmachen. Das ist 01:12:03.000 --> 01:12:05.000 natürlich was anderes, wenn ich so ein 01:12:05.000 --> 01:12:07.000 Programm mit sehr viel Code jetzt 01:12:07.000 --> 01:12:09.000 aus dem Boden stampfe, als wenn ich halt so 01:12:09.000 --> 01:12:11.000 ein, so ein, ich sag mal, Drive by Pullrequest, 01:12:11.000 --> 01:12:13.000 wo jemand einfach einen Fehler sieht 01:12:13.000 --> 01:12:15.000 und da mal eben das fixen kann. 01:12:15.000 --> 01:12:17.000 Und was mich sehr überrascht hat, 01:12:17.000 --> 01:12:19.000 muss ich sagen, ist, 01:12:19.000 --> 01:12:21.000 ich habe früher auch nie verstanden, 01:12:21.000 --> 01:12:23.000 wie zum Beispiel SQLite das macht. 01:12:23.000 --> 01:12:25.000 Die haben ein Modell, das ihren Code 01:12:25.000 --> 01:12:27.000 im Source zur Verfügung stellen, 01:12:27.000 --> 01:12:29.000 aber keinerlei Contributions annehmen. 01:12:29.000 --> 01:12:31.000 Und das fand ich früher immer ganz komisch. 01:12:31.000 --> 01:12:33.000 Und mittlerweile muss ich sagen, kann ich das 01:12:33.000 --> 01:12:35.000 sehr gut verstehen, weil, 01:12:35.000 --> 01:12:37.000 wenn ich selber was entwickel in meinem Keller 01:12:37.000 --> 01:12:39.000 und ich sitze hier und ich programmier was 01:12:39.000 --> 01:12:41.000 und vielleicht mit ein, zwei anderen Leuten zusammen, 01:12:41.000 --> 01:12:43.000 das ist total einfach. 01:12:43.000 --> 01:12:45.000 Wenn man aber plötzlich 500 Pullrequests 01:12:45.000 --> 01:12:47.000 aufhat, von Leuten, die Features einbauen, 01:12:47.000 --> 01:12:49.000 von Leuten, die Bugs beheben, von Leuten, 01:12:49.000 --> 01:12:51.000 die denken, die Struktur soll anders sein, 01:12:51.000 --> 01:12:53.000 das ist sehr zeitaufwendig, 01:12:53.000 --> 01:12:55.000 sich da einzuarbeiten. 01:12:55.000 --> 01:12:57.000 Und das ist noch viel zeitaufwendiger, 01:12:57.000 --> 01:12:59.000 als wenn man selber den Code schreibt. 01:12:59.000 --> 01:13:01.000 Manchmal denke ich auch, ja, 01:13:01.000 --> 01:13:03.000 vielleicht ist es einfacher, 01:13:03.000 --> 01:13:05.000 diesen Pullrequest jetzt einfach zu schließen 01:13:05.000 --> 01:13:07.000 und es nachher selber zu implementieren, 01:13:07.000 --> 01:13:09.000 weil dann habe ich es verstanden. 01:13:09.000 --> 01:13:11.000 Aber andersrum, wenn ich jemanden da hinführe, 01:13:11.000 --> 01:13:13.000 dass er das Programm weiterentwickeln kann, 01:13:13.000 --> 01:13:15.000 dann habe ich vielleicht jemanden gewonnen, 01:13:15.000 --> 01:13:17.000 der auch später mitarbeitet. 01:13:17.000 --> 01:13:19.000 Und das ist immer eine ganz spannende Abwägung. 01:13:19.000 --> 01:13:21.000 Es ist eine komplizierte 01:13:21.000 --> 01:13:23.000 Open Source Welt definitiv. 01:13:23.000 --> 01:13:25.000 Auf der einen Seite kann man sich 01:13:25.000 --> 01:13:27.000 sehr glücklich schätzen, 01:13:27.000 --> 01:13:29.000 dass man diese Contributions hat 01:13:29.000 --> 01:13:31.000 und Leute da Interesse dran haben. 01:13:31.000 --> 01:13:33.000 Und auf der anderen Seite ist es halt 01:13:33.000 --> 01:13:35.000 sehr zeitaufwendig, intensiv. 01:13:35.000 --> 01:13:37.000 Man muss auch gut Nein sagen können. 01:13:37.000 --> 01:13:39.000 Weil gerade, 01:13:39.000 --> 01:13:41.000 weil ja auch teilweise 01:13:41.000 --> 01:13:43.000 natürlich Firmen auf uns zukommen 01:13:43.000 --> 01:13:45.000 und sagen, hey, wir hätten gerne folgenden 01:13:45.000 --> 01:13:47.000 Metrikdienst und dieses Backend noch 01:13:47.000 --> 01:13:49.000 und könnt ihr nicht malen 01:13:49.000 --> 01:13:51.000 und ich habe euch auch zwei Fulltime Engineers 01:13:51.000 --> 01:13:53.000 für ein halbes Jahr hinstellen, 01:13:53.000 --> 01:13:55.000 die das implementieren, wollt ihr das 01:13:55.000 --> 01:13:57.000 und wir das dann meistens abgelehnt haben 01:13:57.000 --> 01:13:59.000 bisher, weil das dann doch immer 01:13:59.000 --> 01:14:01.000 sehr viel Koordinierungsaufwand ist 01:14:01.000 --> 01:14:03.000 und wenn man sich auch so was einlässt, 01:14:03.000 --> 01:14:05.000 dann immer die implizite Annahme ist, 01:14:05.000 --> 01:14:07.000 dass dann ja auch klar ist, 01:14:07.000 --> 01:14:09.000 dass das nachher dann gemirkt wird. 01:14:09.000 --> 01:14:11.000 Aber es kann sich ja auch einfach rausstellen, 01:14:11.000 --> 01:14:13.000 dass das einfach ein Holzweg ist 01:14:13.000 --> 01:14:15.000 und dann hat die Firma da was investiert 01:14:15.000 --> 01:14:17.000 und möchte dann auch Return of Investment haben. 01:14:17.000 --> 01:14:19.000 Das Problem an Pull Request 01:14:19.000 --> 01:14:21.000 und Code ist ja immer, 01:14:21.000 --> 01:14:23.000 dass wenn ich Nein sage, 01:14:23.000 --> 01:14:25.000 dann ist das eigentlich immer temporär. 01:14:25.000 --> 01:14:27.000 Es kann natürlich in zwei Jahren irgendwie jemand 01:14:27.000 --> 01:14:29.000 das gleiche Feature noch mal bauen, 01:14:29.000 --> 01:14:31.000 einen alten Pull Request wieder aufmachen 01:14:31.000 --> 01:14:33.000 und dann sagen, okay, ja, jetzt passt es. 01:14:33.000 --> 01:14:35.000 Aber wenn ich einmal Ja sage 01:14:35.000 --> 01:14:37.000 und diesen Pull Request nehme, 01:14:37.000 --> 01:14:39.000 dann bin ich mit diesem Code und der Funktionalität, 01:14:39.000 --> 01:14:41.000 muss ich ewig mitschleppen. 01:14:41.000 --> 01:14:43.000 Ich kann nicht einfach Features beschneiden, 01:14:43.000 --> 01:14:45.000 da sind meine Benutzer unglücklich 01:14:45.000 --> 01:14:47.000 und das wollen wir ja alle nicht. 01:14:47.000 --> 01:14:49.000 So haben wir neben dem Thema Backups 01:14:49.000 --> 01:14:51.000 jetzt auch noch ein bisschen was 01:14:51.000 --> 01:14:53.000 über die Community Arbeit gelernt, 01:14:53.000 --> 01:14:55.000 die so ein Tool dann doch mit sich bringt. 01:14:55.000 --> 01:14:57.000 Da auf jeden Fall auch 01:14:57.000 --> 01:14:59.000 Danke für die Einblicke 01:14:59.000 --> 01:15:01.000 in diesen Bereich. 01:15:01.000 --> 01:15:03.000 Jetzt nochmal Peter, 01:15:03.000 --> 01:15:05.000 vielleicht auch an dich nochmal die Frage 01:15:05.000 --> 01:15:07.000 oder auch an dich Alex, 01:15:07.000 --> 01:15:09.000 haben wir beim Thema Backups 01:15:09.000 --> 01:15:11.000 vielleicht noch einen sehr wichtigen Punkt 01:15:11.000 --> 01:15:13.000 jetzt nicht angeschnitten, 01:15:13.000 --> 01:15:15.000 ich habe noch eine Frage. 01:15:15.000 --> 01:15:17.000 Wie macht man das am besten, 01:15:17.000 --> 01:15:19.000 wenn man mehrere, sagen wir mal, 01:15:19.000 --> 01:15:21.000 Computer hat, die so 01:15:21.000 --> 01:15:23.000 als der Hauptarbeitsrechner durchgehen könnten? 01:15:23.000 --> 01:15:25.000 Ich bin halt 01:15:25.000 --> 01:15:27.000 fasenweise viel unterwegs 01:15:27.000 --> 01:15:29.000 und dann ist der Laptop hier die Primärmaschine 01:15:29.000 --> 01:15:31.000 und fasenweise bin ich auch nicht viel 01:15:31.000 --> 01:15:33.000 unterwegs und dann 01:15:33.000 --> 01:15:35.000 ist das halt eben der Rechner, 01:15:35.000 --> 01:15:37.000 der da hinten im Büro im Keller steht, 01:15:37.000 --> 01:15:39.000 die Primärmaschine. 01:15:39.000 --> 01:15:41.000 Also ich sage mal ganz ehrlich, wie ich es im Moment habe, 01:15:41.000 --> 01:15:43.000 obwohl es halt eben eigentlich 01:15:43.000 --> 01:15:45.000 dieser Job, Primärmaschine, 01:15:45.000 --> 01:15:47.000 ein Wechseln da ist, 01:15:47.000 --> 01:15:49.000 behandle ich mehr oder minder den Rechner 01:15:49.000 --> 01:15:51.000 im Keller als die Primärmaschine, 01:15:51.000 --> 01:15:53.000 der die ganze Backup-Infrastruktur um sich umhat 01:15:53.000 --> 01:15:55.000 und der Laptop hier 01:15:55.000 --> 01:15:57.000 zieht sich halt im Prinzip die Daten 01:15:57.000 --> 01:15:59.000 von dort und ist dann halt immer darüber so 01:15:59.000 --> 01:16:01.000 up to date. 01:16:01.000 --> 01:16:03.000 Es hat mal den Hut mal anders, 01:16:03.000 --> 01:16:05.000 aber ich habe kein wirkliches Backup dafür, 01:16:05.000 --> 01:16:07.000 also gibt es da irgendwie so 01:16:07.000 --> 01:16:09.000 Best Practices, wie man so 01:16:09.000 --> 01:16:11.000 Multi-End-Gerätzeug macht. 01:16:11.000 --> 01:16:13.000 Also gibt ja noch Leute, die mehr als nur 01:16:13.000 --> 01:16:15.000 zwei Computer haben, die so die Hauptrechner sein könnten. 01:16:15.000 --> 01:16:17.000 Ja, das ist eine 01:16:17.000 --> 01:16:19.000 sehr gute Frage. Ich wüsste jetzt nicht, dass es da 01:16:19.000 --> 01:16:21.000 irgendwelche Best Practices gäbe. 01:16:21.000 --> 01:16:23.000 Ich kann ja aber mal verraten, wie ich das angehen würde. 01:16:23.000 --> 01:16:25.000 Ich würde nämlich einfach 01:16:25.000 --> 01:16:27.000 beide Rechner, 01:16:27.000 --> 01:16:29.000 beide deine Arbeitsverzeichnisse da 01:16:29.000 --> 01:16:31.000 in das gleiche Restic Backup, 01:16:31.000 --> 01:16:33.000 also in das gleiche Restic Repository 01:16:33.000 --> 01:16:35.000 rein Backup sozusagen. 01:16:35.000 --> 01:16:37.000 Das könnte zum Beispiel auf dem 01:16:37.000 --> 01:16:39.000 Hauptrechner im Keller, könnte das einfach 01:16:39.000 --> 01:16:41.000 als lokales Verzeichnis liegen. 01:16:41.000 --> 01:16:43.000 Und ein Laptop macht da auch seine Backups rein. 01:16:43.000 --> 01:16:45.000 Das hat den Vorteil, dass wenn du mit großen 01:16:45.000 --> 01:16:47.000 Projekten, und sagen wir mal ehrlich, so ein 01:16:47.000 --> 01:16:49.000 Notmodeosverzeichnis kann ja schon sehr groß 01:16:49.000 --> 01:16:51.000 werden, wenn du damit dann zu tun hast, 01:16:51.000 --> 01:16:53.000 dass halt viele Daten einfach schon vorhanden sind. 01:16:53.000 --> 01:16:55.000 Das heißt, dann geht dein Backup einfach sehr schnell. 01:16:55.000 --> 01:16:57.000 Vor allen Dingen, wenn die sich halt viel Daten 01:16:57.000 --> 01:16:59.000 teilen, dann lohnt sich das. 01:16:59.000 --> 01:17:01.000 Da muss man aber auch dann wieder sagen, wenn man 01:17:01.000 --> 01:17:03.000 aus der Security sich dann wieder guckt, 01:17:03.000 --> 01:17:05.000 wenn jetzt dein Laptop 01:17:05.000 --> 01:17:07.000 in die Hände eines Angreifers fällt und der 01:17:07.000 --> 01:17:09.000 da dann die Zugangsdaten zu deinem 01:17:09.000 --> 01:17:11.000 Restic Repository auf deinem Heimrechner 01:17:11.000 --> 01:17:13.000 findet und da dann auch vielleicht das Passwort 01:17:13.000 --> 01:17:15.000 hat, um darauf zuzugreifen, dann kann er 01:17:15.000 --> 01:17:17.000 alle Daten lesen, die in diesem Repository 01:17:17.000 --> 01:17:19.000 drin liegen. Das heißt, wenn du da Daten 01:17:19.000 --> 01:17:21.000 drin hast, die du auf dem Laptop jetzt 01:17:21.000 --> 01:17:23.000 nicht hast, die Familienfotos zum Beispiel, 01:17:23.000 --> 01:17:25.000 könnte da jemand auch darauf zugreifen. 01:17:25.000 --> 01:17:27.000 Ja, die Dinger sind im Prinzip zu 99% 01:17:27.000 --> 01:17:29.000 mit den gleichen Daten ausgestattet, 01:17:29.000 --> 01:17:31.000 weil ich will halt einfach sagen können, 01:17:31.000 --> 01:17:33.000 so ich gehe jetzt und ich mache einfach woanders weiter. 01:17:33.000 --> 01:17:35.000 Also das würde von der Deduplikation natürlich 01:17:35.000 --> 01:17:37.000 schon profitieren. Das wäre ganz nice. 01:17:37.000 --> 01:17:39.000 Ja nee, sicherheitstechnisch mache ich mehr da. 01:17:39.000 --> 01:17:41.000 Bei meinem Laptop keine Sorgen, da bin ich 01:17:41.000 --> 01:17:43.000 unvernünftig paranoid, was das angeht. 01:17:43.000 --> 01:17:45.000 Da kommt hier nix raus. 01:17:47.000 --> 01:17:49.000 Okay, nee, ansonsten 01:17:49.000 --> 01:17:51.000 wäre ich nämlich tatsächlich wunschlos glücklich. 01:17:51.000 --> 01:17:53.000 Das werde ich mir mal überlegen, 01:17:53.000 --> 01:17:55.000 ob das eine 01:17:55.000 --> 01:17:57.000 Lösung wäre und natürlich am Ende des Tages 01:17:57.000 --> 01:17:59.000 die gleiche Frage wie zu Beginn, 01:17:59.000 --> 01:18:01.000 ob es das dann wirklich wert ist. 01:18:01.000 --> 01:18:03.000 Im Worst Case ist es dann immer noch so, 01:18:03.000 --> 01:18:05.000 dass ich halt eben 01:18:05.000 --> 01:18:07.000 vielleicht fünf Tage mal vom 01:18:07.000 --> 01:18:09.000 Kellerrechner weg bin 01:18:09.000 --> 01:18:11.000 und der vielleicht fünf Tage am Stück 01:18:11.000 --> 01:18:13.000 mal aus ist und sobald der mal wieder 01:18:13.000 --> 01:18:15.000 angeschaltet wird, läuft die Dropbox los 01:18:15.000 --> 01:18:17.000 und dann ist man sich wieder darüber einig, 01:18:17.000 --> 01:18:19.000 was wo drauf sein muss. 01:18:19.000 --> 01:18:21.000 Das muss man halt wieder so die, 01:18:21.000 --> 01:18:23.000 das zweidimensionale Netz von Aufwand 01:18:23.000 --> 01:18:25.000 versus Risikoabwägung mal durchgehen 01:18:25.000 --> 01:18:27.000 und gucken, wie man das am besten backupt. 01:18:27.000 --> 01:18:29.000 Prima, schönes Schlusswort. 01:18:29.000 --> 01:18:31.000 Wunderbar, dann machen wir doch auf die 01:18:31.000 --> 01:18:33.000 Revision ein Deckel drauf. 01:18:33.000 --> 01:18:35.000 Alex, tausend Dank, das war 01:18:35.000 --> 01:18:37.000 extrem interessant und ganz, ganz großartig. 01:18:37.000 --> 01:18:39.000 Ja, vielen Dank. 01:18:39.000 --> 01:18:41.000 Prima, ich bin sehr gespannt, 01:18:41.000 --> 01:18:43.000 wenn ihr da jetzt dann auch das, 01:18:43.000 --> 01:18:45.000 die Links damit wieder beilegt, 01:18:45.000 --> 01:18:47.000 dann kann man dann auch das Projekt finden. 01:18:47.000 --> 01:18:49.000 Ja, dann schauen wir mal. 01:18:49.000 --> 01:18:51.000 Oh ja, Links haben wir mehr als genug, 01:18:51.000 --> 01:18:53.000 ich habe alles mitgeschrieben. 01:18:53.000 --> 01:18:55.000 Ja, das war halt super interessant. 01:18:55.000 --> 01:18:57.000 Und wenn ihr Wertehörer schafft, 01:18:57.000 --> 01:18:59.000 dann könnt ihr die Kommentare. 01:18:59.000 --> 01:19:01.000 Oder ansonsten habt ihr ja gehört, 01:19:01.000 --> 01:19:03.000 kann man sich auch direkt an der Community 01:19:03.000 --> 01:19:05.000 beteiligen, mitlesen, 01:19:05.000 --> 01:19:07.000 sich an einem Pull Request versuchen, der allein. 01:19:07.000 --> 01:19:09.000 Ja, wir danken fürs Zuhören. 01:19:09.000 --> 01:19:11.000 Hans, du hast gerade den Überblick, 01:19:11.000 --> 01:19:13.000 wissen wir schon, was nächste Revision 01:19:13.000 --> 01:19:15.000 auf dem Zettel stehen wird. 01:19:15.000 --> 01:19:17.000 Oh ja, ich glaube, das wissen wir. 01:19:17.000 --> 01:19:19.000 Jetzt überspiele ich das mal ganz kurz, 01:19:19.000 --> 01:19:21.000 während ich nachschlage. 01:19:21.000 --> 01:19:23.000 Ich glaube, nächste Woche geht es tatsächlich, 01:19:23.000 --> 01:19:25.000 ah ja, wir wollten mal einen kleinen Ausblick machen. 01:19:25.000 --> 01:19:27.000 Wir sind ja jetzt hier gerade am Ende des Jahres angekommen, 01:19:27.000 --> 01:19:29.000 so vom Veröffentlichungsdatum. 01:19:29.000 --> 01:19:31.000 Und nächste Woche geht das neue Jahr 01:19:31.000 --> 01:19:33.000 ja sozusagen schon los, 01:19:33.000 --> 01:19:35.000 wenn ich hier richtig mit dir vorschaue 01:19:35.000 --> 01:19:37.000 auf unsere Themen informiert bin. 01:19:37.000 --> 01:19:39.000 Und da machen wir einfach mal einen kleinen Ausblick 01:19:39.000 --> 01:19:41.000 über das Jahr 2023. 01:19:41.000 --> 01:19:43.000 Was erwarteten uns eigentlich 01:19:43.000 --> 01:19:45.000 so im Bereich Frontend-Development? 01:19:45.000 --> 01:19:47.000 Das können wir uns dann aber mal anschauen. 01:19:47.000 --> 01:19:49.000 Und das machen wir auch zusammen mit einem Gast. 01:19:49.000 --> 01:19:51.000 Also hört da auch mal rein, 01:19:51.000 --> 01:19:53.000 wenn ihr Bock habt 01:19:53.000 --> 01:19:55.000 und so weit erst mal von meiner Seite. 01:19:55.000 --> 01:19:57.000 Vielen Dank fürs Zuhören. 01:19:57.000 --> 01:19:59.000 Danke auch von meiner Seite. 01:19:59.000 --> 01:20:01.000 Danke auch an Alex. Und tschüss bis zum nächsten Mal. 01:20:01.000 --> 01:20:03.000 Tschau tschau. 01:20:03.000 --> 01:20:05.000 Danke Alex. Macht's gut ihr Lieben. 01:20:05.000 --> 01:20:25.000 Und bis zum nächsten Mal.