Wie die Sicherung funktioniertHow it works

Die Sicherung mit mystore erfolgt nach dem Prinzip des Zyklischen-Hashes (cyclic hash). Vereinfacht gesprochen werden die zu sichernden Dateien mittels des Zyklischen Hashwerts in Fragmente geteilt und gespeichert. Über Indexdaten können die Originaldateien wieder hergestellt werden. Die Aufteilung in Fragmente hat den Vorteil, dass gleiche Fragmente nicht zweimal gespeichert werden müssen. Dieser Vorteil tritt bei vollständig gleichen Dateien von selbst auf. Wenn aber in einer größeren Datei nur wenig verändert wurde, dann ist die Chance vorhanden, dass über den Zyklischen Hash Fragmente so gebildet werden, dass einige Fragmente gleich und nur wenige Fragmente unterschiedlich sind. Tatsächlich ist dieser Effekt für eine ’normale‘ Sicherung nur gering, da die Fragmentgröße per default mit 20 bit recht hoch ist. Für eigene Experimente und zur Justierung bei Sonderfällen gibt es bei mystore den Schalter --break-bits N. Die ungefähre Größe der Fragmente wird als Bitwert angegeben.Storing with mystore is based on the principle of the cyclic hash. Put simply, the files to be stored are divided into fragments and saved. The original file data is restored using index data. The division into fragments has the advantage that same fragments do not have to be saved twice. This advantage occurs automatically with completely identical files. If, however, in a larger file little has been changed, then there is a chance that fragments will be formed over the cyclic hash in such a way that some fragments are the same and only a few fragments are different. In fact, this effect is only slight for a ’normal‘ store, since the fragment size is quite high by default with 20 bits. The --break-bits N switch is available for your own experiments and for adjustment in special cases. The approximate size of the fragments is given as a bit value.

Jedes Fragment wird mit dem Algorithmus SHA-1 gehasht und mittels des Deflate-Algorithmus komprimiert und mit dem SHA-1 Hashwert als Namen im Dateisystem gespeichert. Der Algorithmus SHA-1 ist für diese Anwendung geeignet, da er nur zur Unterscheidung zweier Fragmente genutzt wird. Einen Angriff gegen gefälschte Duplikate muss der Hashwert nicht widerstehen. Damit die anwachsende Zahl von Fragmenten übersichtlich bleibt, erfolgt die Speicherung in Verzeichnissen, die mit dem ersten Byte des Hashwertes benannt sind. Zur absoluten Begrenzung der Anzahl verwendeter Dateien werden alle Fragemente mit Hashwerten, die mit zwei gleichen Bytes beginnen, in eine Datei gepackt. Durch diese Maßnahme wird die Anzahl der Dateien für Fragmente bei einer Speichertiefe von 1 absolut auf 2^16 = 64 *1024 Dateien begrenzt. Zum Experimentieren und für Sonderfälle gibt es bei mystore den Schalter --store-depth N zur Angabe der Speichertiefe. Per Default ist dieser Wert auf den kleinst möglichen Wert 1 gesetzt. Ebenfalls für Experimente und für Sonderfälle gibt es den Schalter --no-pack. Dieser Schalter bewirkt, dass die Fragmente nicht gepackt, sondern separat als Dateien gespeichert werden. Wenn der Schalter --no-pack angegeben wird, gibt es keine Beschränkung in der Anzahl der Dateien, die in der Sicherung erzeugt werden. Mit diesem Schalter ist vorsichtig umzugehen, da ein normales Dateisystem wie NTFS auf einem PC bei z. B. mehr als 100.000 Dateien in einem Verzeichnisbaum durchaus längere Zeit alleine zum Löschen der Dateien benötigt. Das Dateisystem selber oder Programme, die mit dem Dateisystem arbeiten, können an der großen Menge an Dateien Schaden nehmen oder verursachen. Also bitte Achtung! Mit dem Default-Wert von 1 für --store-depth kann das Sicherungsverzeichnis von mystore bis ca. 1 Terabyte an Daten verwalten.Each fragment is hashed using the SHA-1 algorithm and compressed using the deflate algorithm and saved with the hash value as it’s name in the file system. The SHA-1 algorithm is suitable for this application because it is only used to distinguish two fragments. The hash value does not have to withstand an attack against fake duplicates. To be the growing number of fragments remains clear, they are stored in directories named with the first byte of the hash value. To absolutely limit the number of files used, all fragments with hash values that begin with two identical bytes are packed into one file. With a storage depth of 1 the absolute number of files is limited to 2 ^ 16 = 64 * 1024. For experiments and special cases there is the switch --store-depth N specifying the memory depth. By default, this value is set to the smallest possible value 1. The switch --no-pack is available for experiments and special cases. It’s meaning is that fragments are not packed, but instead saved in separate files. In case of the switch --no-pack, there is no limit to the number of files created by a store. This switch must be handled with care, since a normal file system such as NTFS on a PC with e.g. more than 100,000 files in a directory tree may take a long time to delete the files alone. The file system itself or programs that work on the file system can make a damage on the huge amount of file. Take care! With the default value of 1 for --store-depth the backup directory of mystore is able to manage up to approx. 1 terabyte of data.

Weitergehende SicherungsmöglichkeitenMore Storing Alternatives

Sicherungen mittels mystore sind flexibel einstellbar, aber wirklich sinnvoll oder gar notwendig sind nur wenige Einstellungen und auch dann nur in wenigen Sonderfällen. Fast immer sind die Default-Einstellungen nicht nur ausreichend, sondern auch am besten.Storings using mystore can be flexibly set, but only a few settings are really useful or even necessary, and then only in a few special cases. The default settings are almost always not only sufficient, but also the best.

Eine nützliche und weitergehende Sicherungsmöglichkeit bietet der Im- und Export von tar-Archiven. Beim Import eines tar-Archives wird von mystore die tar-Struktur interpretiert. In die Sicherung gelangen die enthaltenen Dateien und Verzeichnisse des tar-Archivs, so als ob mystore die Daten selbst aus dem Dateisystem gelesen hätte. Der Import eines tar-Archiv macht dort Sinn, wenn z. B. von einem entfernten Dateisystem eine Sicherung erfolgen soll. Über den Schalter --storage <Sicherungsverzeichnis> kann das Sicherungsverzeichnis von mystore möglicherweise nicht erreichbar sein, aber über eine Weiterleitung als tar-Archiv kann die Sicherung trotzdem erfolgen. Mit dem Schalter --tar statt --store <Datei-oder-Verzeichnis> erwartet die Anwendung mystore über stdin ein tar-Archiv, dessen Struktur interpretiert wird und die Inhalte des tar-Archivs werden als Bestandteile in die Sicherung übernommen.A useful option for storing is the import and export of tar archives. When importing a tar archive, mystore interprets the tar structure. The files and directories contained in the tar archive are saved as if mystore had read the data itself from the file system. Importing a tar archive makes sense in case of, for example, reading from a remote file system. The mystore storage directory may not be accessible via the --storage <folder> switch, but storing can still be done by forwarding the data as a tar archive. Using the switch --tar instead of --store <file-or-folder> the application mystore expects a tar archive via stdin.

cat my.tar | mystore --tar
cat my.tgz | gzip -d | mystore --tar

Für den Export eines tar-Archivs gibt es keinen eigenen Schalter. Stattdessen wird implizit ein tar-Archive gepackt, wenn als Restaurierungsverzeichnis – (dash) als Parameter zum Schalter --restore-folder <Restaurierungsverzeichnis> angegeben wird. Das tar-Archiv wird dann über stdout ausgegeben und kann entweder als Datei gespeichert oder über eine Pipe (‚|‘) weitergeleitet werden.There is no separate switch for exporting a tar archive. Instead, a tar archive is implicitly packed if the restoration directory – (dash) is specified as <restore-folder> for the switch --restore-folder <restore-folder>. The tar archive is then output via stdout and can either be saved as a file or forwarded via pipe (‚|‘).

mystore --restore-folder - --restore myfolder > my.tar
mystore --restore-folder - --restore myfolder | gzip > my.tgz

Für den Sonderfall, dass über stdin kein tar-Archiv interpretiert werden soll, sondern die Daten als eigenständige Datei gespeichert werden sollen, hat mystore den Schalter --name <Name>. Für die Ausgabe gibt es diese Besonderheit nicht. D. h. bei einer Ausgabe über stdout wird immer ein tar-Archiv erzeugt.For the special case that stdin should not be interpreted as a tar archive, but the data should be saved as an independent file, mystore has the switch --name <name>. This peculiarity does not exist for output. Instead, an output via stdout always creates a tar archive.