SnapRAID Sicherung für Festplatten-Arrays(1)

NAME
snapraid - SnapRAID Sicherung für Festplatten-Arrays

SYNOPSIS
snapraid [-c, --conf CONFIG]
    [-f, --filter PATTERN] [-d, --filter-disk NAME]
    [-m, --filter-missing] [-e, --filter-error]
    [-a, --audit-only] [-h, --pre-hash] [-i, --import DIR]
    [-p, --plan PERC|bad|new|full]
    [-o, --older-than DAYS] [-l, --log FILE]
    [-s, --spin-down-on-error] [-w, --bw-limit RATE]
    [-t, --tail]
    [-Z, --force-zero] [-E, --force-empty]
    [-U, --force-uuid] [-D, --force-device]
    [-N, --force-nocopy] [-F, --force-full]
    [-R, --force-realloc] [-W, --force-realloc-tail]
    [-S, --start BLKSTART] [-B, --count BLKCOUNT]
    [-L, --error-limit NUMBER]
    [-A, --stats]
    [-v, --verbose] [-q, --quiet]
    status|smart|probe|up|down|diff|sync|scrub|fix|check
    |list|dup|pool|devices|touch|rehash|locate

snapraid [-V, --version] [-H, --help] [-C, --gen-conf CONTENT]

DESCRIPTION
SnapRAID ist ein Sicherungsprogramm, das für Festplatten-Arrays entwickelt wurde und Paritätsinformationen zur Datenwiederherstellung bei Ausfall von bis zu sechs Festplatten speichert.

SnapRAID ist hauptsächlich für Home-Media-Center mit großen, selten geänderten Dateien konzipiert und bietet folgende Funktionen:
•   Sie können bereits mit Dateien gefüllte Festplatten verwenden, ohne sie neu formatieren zu müssen, und wie gewohnt darauf zugreifen.
•   Alle Ihre Daten werden gehasht, um die Datenintegrität zu gewährleisten und stille Beschädigung (silent corruption) zu verhindern.
•   Wenn die Anzahl der ausgefallenen Festplatten die Paritätsanzahl überschreitet, beschränkt sich der Datenverlust auf die betroffenen Festplatten; Daten auf anderen Festplatten bleiben zugänglich.
•   Wenn Sie versehentlich Dateien auf einer Festplatte löschen, ist eine Wiederherstellung möglich.
•   Festplatten können unterschiedliche Größen haben.
•   Sie können jederzeit Festplatten hinzufügen.
•   SnapRAID sperrt Ihre Daten nicht ein; Sie können die Verwendung jederzeit beenden, ohne neu formatieren oder Daten verschieben zu müssen.
•   Um auf eine Datei zuzugreifen, muss nur eine einzige Festplatte drehen (spinnen), was Strom spart und Geräusche reduziert.

Für weitere Informationen besuchen Sie bitte die offizielle SnapRAID-Website:

    https://www.snapraid.it/

LIMITATIONS
SnapRAID ist ein Hybrid aus einem RAID- und einem Sicherungsprogramm, das darauf abzielt, die besten Vorteile beider zu kombinieren. Es hat jedoch einige Einschränkungen, die Sie vor der Verwendung berücksichtigen sollten.

Die Haupteinschränkung besteht darin, dass wenn eine Festplatte ausfällt und Sie in letzter Zeit keine Synchronisierung durchgeführt haben, Sie möglicherweise nicht vollständig wiederherstellen können. Genauer gesagt können Sie möglicherweise nicht bis zur Größe der geänderten oder gelöschten Dateien seit der letzten `sync`-Operation wiederherstellen. Dies tritt auch dann auf, wenn die geänderten oder gelöschten Dateien sich nicht auf der ausgefallenen Festplatte befinden. Aus diesem Grund ist SnapRAID besser für Daten geeignet, die sich selten ändern.

Andererseits verhindern neu hinzugefügte Dateien die Wiederherstellung von bereits vorhandenen Dateien nicht. Sie verlieren nur die kürzlich hinzugefügten Dateien, wenn diese sich auf der ausgefallenen Festplatte befinden.

Weitere Einschränkungen von SnapRAID sind:
•   Mit SnapRAID haben Sie immer noch separate Dateisysteme für jede Festplatte. Mit RAID erhalten Sie ein einziges großes Dateisystem.
•   SnapRAID streift (stripes) keine Daten. Mit RAID erhalten Sie einen Geschwindigkeitsvorteil durch Striping.
•   SnapRAID unterstützt keine Echtzeit-Wiederherstellung. Mit RAID müssen Sie die Arbeit nicht unterbrechen, wenn eine Festplatte ausfällt.
•   SnapRAID kann Daten nur von einer begrenzten Anzahl von Festplattenausfällen wiederherstellen. Mit einer Sicherung können Sie von einem vollständigen Ausfall des gesamten Festplatten-Arrays wiederherstellen.
•   Nur Dateinamen, Zeitstempel, symbolische Links (symlinks) und Hardlinks werden gespeichert. Berechtigungen, Eigentümerschaft und erweiterte Attribute werden nicht gespeichert.

GETTING STARTED
Um SnapRAID zu verwenden, müssen Sie zuerst eine Festplatte in Ihrem Festplatten-Array auswählen, die für `parity`-Informationen reserviert wird. Mit einer Festplatte für Parität können Sie von einem einzelnen Festplattenausfall wiederherstellen, ähnlich wie bei RAID5.

Wenn Sie von mehr Festplattenausfällen wiederherstellen möchten, ähnlich wie bei RAID6, müssen Sie zusätzliche Festplatten für Parität reservieren. Jede zusätzliche Paritätsfestplatte ermöglicht die Wiederherstellung von einem weiteren Festplattenausfall.

Als Paritätsfestplatten müssen Sie die größten Festplatten im Array auswählen, da die Paritätsinformationen auf die Größe der größten Datenfestplatte im Array anwachsen können.

Diese Festplatten werden zum Speichern der `parity`-Dateien reserviert. Sie sollten Ihre Daten nicht darauf speichern.

Anschließend müssen Sie die `data`-Festplatten definieren, die Sie mit SnapRAID schützen möchten. Der Schutz ist effektiver, wenn diese Festplatten Daten enthalten, die sich selten ändern. Aus diesem Grund ist es besser, die Windows C:\-Festplatte oder die Unix-Verzeichnisse /home, /var und /tmp NICHT einzuschließen.

Die Liste der Dateien wird in den `content`-Dateien gespeichert, die normalerweise auf den Daten-, Paritäts- oder Boot-Festplatten gespeichert werden. Diese Datei enthält die Details Ihrer Sicherung, einschließlich aller Prüfsummen zur Überprüfung ihrer Integrität. Die `content`-Datei wird in mehreren Kopien gespeichert, und jede Kopie muss sich auf einer anderen Festplatte befinden, um sicherzustellen, dass selbst bei mehreren Festplattenausfällen mindestens eine Kopie verfügbar ist.

Angenommen, Sie sind nur an einer Paritätsstufe des Schutzes interessiert und Ihre Festplatten befinden sich unter:

    /mnt/diskp <- ausgewählte Festplatte für Parität
    /mnt/disk1 <- erste zu schützende Festplatte
    /mnt/disk2 <- zweite zu schützende Festplatte
    /mnt/disk3 <- dritte zu schützende Festplatte

Sie müssen die Konfigurationsdatei /etc/snapraid.conf mit den folgenden Optionen erstellen:

    parity /mnt/diskp/snapraid.parity
    content /var/lib/snapraid/snapraid.content
    content /mnt/disk1/snapraid.content
    content /mnt/disk2/snapraid.content
    data d1 /mnt/disk1/
    data d2 /mnt/disk2/
    data d3 /mnt/disk3/

Wenn Sie Windows verwenden, sollten Sie das Windows-Pfadformat mit Laufwerksbuchstaben und Backslashes anstelle von Slashes verwenden.

    parity E:\snapraid.parity
    content C:\snapraid\snapraid.content
    content F:\array\snapraid.content
    content G:\array\snapraid.content
    data d1 F:\array\
    data d2 G:\array\
    data d3 H:\array\

Wenn Sie viele Festplatten haben und keine Laufwerksbuchstaben mehr verfügbar sind, können Sie Festplatten direkt in Unterordnern einhängen (mounten). Siehe:

    https://www.google.com/search?q=Windows+mount+point

Zu diesem Zeitpunkt sind Sie bereit, den Befehl `sync` auszuführen, um die Paritätsinformationen zu erstellen.

    snapraid sync

Dieser Vorgang kann beim ersten Mal mehrere Stunden dauern, abhängig von der Größe der bereits auf den Festplatten vorhandenen Daten. Wenn die Festplatten leer sind, ist der Vorgang sofort abgeschlossen.

Sie können ihn jederzeit durch Drücken von Strg+C anhalten, und beim nächsten Lauf wird er dort fortgesetzt, wo er unterbrochen wurde.

Wenn dieser Befehl abgeschlossen ist, sind Ihre Daten SICHER.

Jetzt können Sie Ihr Array nach Belieben verwenden und die Paritätsinformationen regelmäßig durch Ausführen des `sync`-Befehls aktualisieren.

  Scrubbing
Um die Daten und die Parität regelmäßig auf Fehler zu überprüfen, können Sie den Befehl `scrub` ausführen.

    snapraid scrub

Dieser Befehl vergleicht die Daten in Ihrem Array mit dem Hash, der während des `sync`-Befehls berechnet wurde, um die Integrität zu überprüfen.

Jeder Lauf des Befehls überprüft ungefähr 8% des Arrays, ausgenommen Daten, die bereits in den letzten 10 Tagen gescrubbed wurden. Sie können die Option -p, --plan verwenden, um eine andere Menge anzugeben, und die Option -o, --older-than, um ein anderes Alter in Tagen anzugeben. Zum Beispiel, um 5% des Arrays auf Blöcke zu überprüfen, die älter als 20 Tage sind, verwenden Sie:

    snapraid -p 5 -o 20 scrub

Wenn während des Vorgangs stille oder Eingabe-/Ausgabefehler gefunden werden, werden die entsprechenden Blöcke in der `content`-Datei als fehlerhaft (bad) markiert und im Befehl `status` aufgelistet.

    snapraid status

Um sie zu beheben, können Sie den Befehl `fix` verwenden und dabei nach fehlerhaften Blöcken mit der Option -e, --filter-error filtern:

    snapraid -e fix

Beim nächsten `scrub` verschwinden die Fehler aus dem `status`-Bericht, wenn sie tatsächlich behoben sind. Um es schneller zu machen, können Sie -p bad verwenden, um nur als fehlerhaft markierte Blöcke zu scrubben.

    snapraid -p bad scrub

Das Ausführen von `scrub` auf einem nicht synchronisierten Array kann Fehler melden, die durch entfernte oder geänderte Dateien verursacht wurden. Diese Fehler werden in der `scrub`-Ausgabe gemeldet, aber die zugehörigen Blöcke werden nicht als fehlerhaft markiert.

  Pooling
Hinweis: Die unten beschriebene Pooling-Funktion wurde durch das Tool mergerfs ersetzt, das jetzt die empfohlene Option für Linux-Benutzer in der SnapRAID-Community ist. Mergefs bietet eine flexiblere und effizientere Möglichkeit, mehrere Laufwerke zu einem einzigen, vereinheitlichten Einhängepunkt (Mount Point) zusammenzufassen, was einen nahtlosen Zugriff auf Dateien über Ihr gesamtes Array hinweg ermöglicht, ohne auf symbolische Links angewiesen zu sein. Es lässt sich gut mit SnapRAID zum Paritätsschutz integrieren und wird häufig in Setups wie OpenMediaVault (OMV) oder benutzerdefinierten NAS-Konfigurationen verwendet.

Um alle Dateien in Ihrem Array im selben Verzeichnisbaum anzuzeigen, können Sie die `pooling`-Funktion aktivieren. Sie erstellt eine schreibgeschützte virtuelle Ansicht aller Dateien in Ihrem Array mithilfe symbolischer Links.

Sie können das `pooling`-Verzeichnis in der Konfigurationsdatei mit folgender Option konfigurieren:

    pool /pool

oder, wenn Sie Windows verwenden, mit:

    pool C:\pool

und anschließend den Befehl `pool` ausführen, um die virtuelle Ansicht zu erstellen oder zu aktualisieren.

    snapraid pool

Wenn Sie eine Unix-Plattform verwenden und dieses Verzeichnis über das Netzwerk für Windows- oder Unix-Maschinen freigeben möchten, sollten Sie die folgenden Optionen zu Ihrer /etc/samba/smb.conf hinzufügen:

    # Im globalen Abschnitt von smb.conf
    unix extensions = no

    # Im Freigabe-Abschnitt von smb.conf
    [pool]
    comment = Pool
    path = /pool
    read only = yes
    guest ok = yes
    wide links = yes
    follow symlinks = yes

In Windows erfordert die Freigabe symbolischer Links über ein Netzwerk, dass Clients diese remote auflösen. Um dies zu ermöglichen, müssen Sie neben der Freigabe des Pool-Verzeichnisses auch alle Festplatten unabhängig freigeben, indem Sie die in der Konfigurationsdatei definierten Festplattennamen als Freigabepunkte verwenden. Sie müssen auch in der Option `share` der Konfigurationsdatei den Windows UNC-Pfad angeben, den Remote-Clients benötigen, um auf diese freigegebenen Festplatten zuzugreifen.

Zum Beispiel, wenn Sie von einem Server namens `darkstar` aus arbeiten, können Sie die Optionen verwenden:

    data d1 F:\array\
    data d2 G:\array\
    data d3 H:\array\
    pool C:\pool
    share \\darkstar

und die folgenden Verzeichnisse über das Netzwerk freigeben:

    \\darkstar\pool -> C:\pool
    \\darkstar\d1 -> F:\array
    \\darkstar\d2 -> G:\array
    \\darkstar\d3 -> H:\array

um Remote-Clients den Zugriff auf alle Dateien unter \\darkstar\pool zu ermöglichen.

Möglicherweise müssen Sie auch Remote-Clients konfigurieren, um den Zugriff auf Remote-Symlinks mit dem Befehl zu aktivieren:

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

  Undeleting
SnapRAID funktioniert eher wie ein Sicherungsprogramm als ein RAID-System und kann verwendet werden, um Dateien in ihren vorherigen Zustand wiederherzustellen oder das Löschen rückgängig zu machen, indem die Option -f, --filter verwendet wird:

    snapraid fix -f DATEI

oder für ein Verzeichnis:

    snapraid fix -f VERZEICHNIS/

Sie können es auch verwenden, um nur versehentlich gelöschte Dateien innerhalb eines Verzeichnisses wiederherzustellen, indem Sie die Option -m, --filter-missing verwenden, die nur fehlende Dateien wiederherstellt und alle anderen unberührt lässt.

    snapraid fix -m -f VERZEICHNIS/

Oder um alle gelöschten Dateien auf allen Laufwerken wiederherzustellen mit:

    snapraid fix -m

  Recovering
Das Schlimmste ist passiert, und Sie haben eine oder mehrere Festplatten verloren!

KEINE PANIK! Sie werden in der Lage sein, sie wiederherzustellen!

Das erste, was Sie tun müssen, ist, weitere Änderungen an Ihrem Festplatten-Array zu vermeiden. Deaktivieren Sie alle Remote-Verbindungen dazu und alle geplanten Prozesse, einschließlich geplanter SnapRAID-nächtlicher `sync`- oder `scrub`-Läufe.

Fahren Sie dann mit den folgenden Schritten fort.

  STEP 1 -> Reconfigure
Sie benötigen etwas Platz zur Wiederherstellung, idealerweise auf zusätzlichen Ersatzfestplatten, aber eine externe USB-Festplatte oder eine Remote-Festplatte ist ausreichend.

Ändern Sie die SnapRAID-Konfigurationsdatei so, dass die `data`- oder `parity`-Option der ausgefallenen Festplatte auf einen Ort mit genügend leerem Speicherplatz zur Wiederherstellung der Dateien zeigt.

Wenn zum Beispiel die Festplatte `d1` ausgefallen ist, ändern Sie von:

    data d1 /mnt/disk1/

zu:

    data d1 /mnt/new_spare_disk/

Wenn die wiederherzustellende Festplatte eine Paritätsfestplatte ist, aktualisieren Sie die entsprechende `parity`-Option. Wenn Sie mehrere ausgefallene Festplatten haben, aktualisieren Sie alle ihre Konfigurationsoptionen.

  STEP 2 -> Fix
Führen Sie den `fix`-Befehl aus und speichern Sie das Protokoll in einer externen Datei mit:

    snapraid -d NAME -l fix.log fix

Wobei NAME der Name der Festplatte ist, wie z.B. `d1` in unserem vorherigen Beispiel. Wenn die wiederherzustellende Festplatte eine Paritätsfestplatte ist, verwenden Sie die Namen `parity`, `2-parity`, usw. Wenn Sie mehrere ausgefallene Festplatten haben, verwenden Sie mehrere -d-Optionen, um alle anzugeben.

Dieser Befehl wird lange dauern.

Stellen Sie sicher, dass Sie einige Gigabyte frei haben, um die Datei fix.log zu speichern. Führen Sie ihn von einer Festplatte mit ausreichend freiem Speicherplatz aus.

Jetzt haben Sie alles wiederhergestellt, was wiederherstellbar ist. Wenn einige Dateien teilweise oder vollständig nicht wiederherstellbar sind, werden sie umbenannt, indem die Erweiterung `.unrecoverable` hinzugefügt wird.

Sie finden eine detaillierte Liste aller nicht wiederherstellbaren Blöcke in der Datei fix.log, indem Sie alle Zeilen überprüfen, die mit `unrecoverable:` beginnen.

Wenn Sie mit der Wiederherstellung nicht zufrieden sind, können Sie sie so oft wie gewünscht wiederholen.

Wenn Sie zum Beispiel Dateien nach dem letzten `sync` aus dem Array entfernt haben, kann dies dazu führen, dass einige Dateien nicht wiederhergestellt werden. In diesem Fall können Sie den `fix` mithilfe der Option -i, --import wiederholen, wobei Sie angeben, wo sich diese Dateien jetzt befinden, um sie erneut in den Wiederherstellungsprozess einzubeziehen.

Wenn Sie mit der Wiederherstellung zufrieden sind, können Sie fortfahren, aber beachten Sie, dass Sie nach der Synchronisierung den `fix`-Befehl nicht mehr wiederholen können!

  STEP 3 -> Check
Als vorsichtige Überprüfung können Sie jetzt einen `check`-Befehl ausführen, um sicherzustellen, dass auf der wiederhergestellten Festplatte alles korrekt ist.

    snapraid -d NAME -a check

Wobei NAME der Name der Festplatte ist, wie z.B. `d1` in unserem vorherigen Beispiel.

Die Optionen -d und -a weisen SnapRAID an, nur die angegebene Festplatte zu überprüfen und alle Paritätsdaten zu ignorieren.

Dieser Befehl wird lange dauern, aber wenn Sie nicht übermäßig vorsichtig sind, können Sie ihn überspringen.

  STEP 4 -> Sync
Führen Sie den `sync`-Befehl aus, um das Array mit der neuen Festplatte zu resynchronisieren.

    snapraid sync

Wenn alles wiederhergestellt ist, ist dieser Befehl sofort.

COMMANDS
SnapRAID bietet einige einfache Befehle, mit denen Sie:
•   Den Status des Arrays ausgeben -> `status`
•   Die Festplatten steuern -> `smart`, `probe`, `up`, `down`
•   Eine Sicherung/einen Snapshot erstellen -> `sync`
•   Daten regelmäßig überprüfen -> `scrub`
•   Die letzte Sicherung/den letzten Snapshot wiederherstellen -> `fix`.

Befehle müssen in Kleinbuchstaben geschrieben werden.

  status
Gibt eine Zusammenfassung des Zustands des Festplatten-Arrays aus.

Es enthält Informationen zur Paritätsfragmentierung, wie alt die Blöcke sind, ohne Überprüfung, und alle aufgezeichneten stillen Fehler, die beim Scrubbing aufgetreten sind.

Die präsentierten Informationen beziehen sich auf den letzten Zeitpunkt, zu dem Sie `sync` ausgeführt haben. Spätere Änderungen werden nicht berücksichtigt.

Wenn fehlerhafte Blöcke erkannt wurden, werden deren Blocknummern aufgelistet. Um sie zu beheben, können Sie den Befehl `fix -e` verwenden.

Es zeigt auch ein Diagramm an, das den letzten Zeitpunkt darstellt, zu dem jeder Block gescrubbed oder synchronisiert wurde. Gescrubbed Blöcke werden mit `*`, Blöcke, die synchronisiert, aber noch nicht gescrubbed wurden, mit `o` angezeigt.

Es wird nichts geändert.

  smart
Gibt einen SMART-Bericht aller Festplatten im System aus.

Es enthält eine Schätzung der Ausfallwahrscheinlichkeit im nächsten Jahr, sodass Sie die Wartungsersetzung von Festplatten planen können, die verdächtige Attribute aufweisen.

Diese Wahrscheinlichkeitsschätzung wird durch Korrelation der SMART-Attribute der Festplatten mit den Backblaze-Daten erhalten, die unter folgender Adresse verfügbar sind:

    https://www.backblaze.com/hard-drive-test-data.html

Wenn SMART meldet, dass eine Festplatte ausfällt, wird `FAIL` oder `PREFAIL` für diese Festplatte gedruckt, und SnapRAID endet mit einem Fehler. In diesem Fall wird ein sofortiger Austausch der Festplatte dringend empfohlen.

Weitere mögliche Statuszeichenfolgen sind:
    logfail In der Vergangenheit lagen einige Attribute unter dem Schwellenwert.
    logerr Das Gerätefehlerprotokoll enthält Fehler.
    selferr Das Geräte-Selbsttestprotokoll enthält Fehler.

Wenn die Option -v, --verbose angegeben ist, wird eine tiefere statistische Analyse bereitgestellt. Diese Analyse kann Ihnen bei der Entscheidung helfen, ob Sie mehr oder weniger Parität benötigen.

Dieser Befehl verwendet das `smartctl`-Tool und entspricht dem Ausführen von `smartctl -a` auf allen Geräten.

Wenn Ihre Geräte nicht korrekt automatisch erkannt werden, können Sie einen benutzerdefinierten Befehl mithilfe der `smartctl`-Option in der Konfigurationsdatei angeben.

Es wird nichts geändert.

  probe
Gibt den POWER-Zustand aller Festplatten im System aus.

`Standby` bedeutet, dass die Festplatte nicht dreht. `Active` bedeutet, dass die Festplatte dreht.

Dieser Befehl verwendet das `smartctl`-Tool und entspricht dem Ausführen von `smartctl -n standby -i` auf allen Geräten.

Wenn Ihre Geräte nicht korrekt automatisch erkannt werden, können Sie einen benutzerdefinierten Befehl mithilfe der `smartctl`-Option in der Konfigurationsdatei angeben.

Es wird nichts geändert.

  up
Dreht alle Festplatten des Arrays hoch (spins up).

Sie können nur bestimmte Festplatten mithilfe der Option -d, --filter-disk hochdrehen.

Das gleichzeitige Hochdrehen aller Festplatten erfordert viel Strom. Stellen Sie sicher, dass Ihr Netzteil dies aushalten kann.

Es wird nichts geändert.

  down
Dreht alle Festplatten des Arrays herunter (spins down).

Dieser Befehl verwendet das `smartctl`-Tool und entspricht dem Ausführen von `smartctl -s standby,now` auf allen Geräten.

Sie können nur bestimmte Festplatten mithilfe der Option -d, --filter-disk herunterdrehen.

Um automatisch bei einem Fehler herunterzufahren, können Sie die Option -s, --spin-down-on-error mit jedem anderen Befehl verwenden, was dem manuellen Ausführen von `down` bei Auftreten eines Fehlers entspricht.

Es wird nichts geändert.

  diff
Listet alle Dateien auf, die seit dem letzten `sync` geändert wurden und deren Paritätsdaten neu berechnet werden müssen.

Dieser Befehl überprüft nicht die Dateidaten, sondern nur den Dateizeitstempel, die Größe und die Inode.

Nach dem Auflisten aller geänderten Dateien wird eine Zusammenfassung der Änderungen präsentiert, gruppiert nach:
    equal Dateien, die sich seitdem nicht geändert haben.
    added Neu hinzugefügte Dateien, die vorher nicht vorhanden waren.
    removed Entfernte Dateien.
    updated Dateien mit einer anderen Größe oder einem anderen Zeitstempel, was bedeutet, dass sie geändert wurden.
    moved Auf derselben Festplatte in ein anderes Verzeichnis verschobene Dateien. Sie werden durch denselben Namen, dieselbe Größe, denselben Zeitstempel und dieselbe Inode, aber ein anderes Verzeichnis identifiziert.
    copied Dateien, die auf dieselbe oder eine andere Festplatte kopiert wurden, wobei die Originaldatei noch vorhanden ist. Sie werden dadurch identifiziert, dass sie denselben Namen, dieselbe Größe und denselben Zeitstempel haben. Wenn der Subsekunden-Zeitstempel Null ist, muss der vollständige Pfad übereinstimmen, um identifiziert zu werden, nicht nur der Name.
    relocated Dateien, die auf dieselbe oder eine andere Festplatte verschoben wurden, wobei das Original verschwunden ist. Sie werden dadurch identifiziert, dass sie denselben Namen, dieselbe Größe und denselben Zeitstempel haben. Wenn der Subsekunden-Zeitstempel Null ist, muss der vollständige Pfad übereinstimmen, um identifiziert zu werden. Im Gegensatz zu 'moved' Dateien auf derselben Festplatte haben verschobene Dateien einen anderen Inode.
    restored Dateien mit einem anderen Inode, aber passendem Verzeichnis, Namen, Größe und Zeitstempel. Dies sind in der Regel Dateien, die nach dem Löschen wiederhergestellt wurden.

Wenn ein `sync` erforderlich ist, ist der Rückgabecode des Prozesses 2 anstelle des Standardwerts 0. Der Rückgabecode 1 wird für eine allgemeine Fehlerbedingung verwendet.

Es wird nichts geändert.

  sync
Aktualisiert die Paritätsinformationen. Alle geänderten Dateien im Festplatten-Array werden gelesen, und die entsprechenden Paritätsdaten werden aktualisiert.

Sie können diesen Vorgang jederzeit durch Drücken von Strg+C anhalten, ohne die bereits geleistete Arbeit zu verlieren. Beim nächsten Lauf wird der `sync`-Vorgang dort fortgesetzt, wo er unterbrochen wurde.

Wenn während des Vorgangs stille oder Eingabe-/Ausgabefehler gefunden werden, werden die entsprechenden Blöcke als fehlerhaft markiert.

Dateien werden durch Pfad und/oder Inode identifiziert und anhand von Größe und Zeitstempel überprüft. Wenn die Dateigröße oder der Zeitstempel abweicht, werden die Paritätsdaten für die gesamte Datei neu berechnet. Wenn die Datei auf derselben Festplatte verschoben oder umbenannt wird und dieselbe Inode beibehält, wird die Parität nicht neu berechnet. Wenn die Datei auf eine andere Festplatte verschoben wird, wird die Parität neu berechnet, aber die zuvor berechneten Hash-Informationen werden beibehalten.

Die `content`- und `parity`-Dateien werden bei Bedarf geändert. Die Dateien im Array werden NICHT geändert.

  scrub
Scrubbt das Array und überprüft auf stille oder Eingabe-/Ausgabefehler auf Daten- und Paritätsfestplatten.

Jede Ausführung überprüft ungefähr 8% des Arrays, ausgenommen Daten, die bereits in den letzten 10 Tagen gescrubbed wurden. Dies bedeutet, dass Scrubbing einmal pro Woche sicherstellt, dass jedes Bit an Daten mindestens einmal alle drei Monate überprüft wird.

Sie können einen anderen Scrub-Plan oder eine andere Menge mithilfe der Option -p, --plan definieren, die Folgendes akzeptiert: bad - Scrubbt als fehlerhaft markierte Blöcke. new - Scrubbt gerade synchronisierte Blöcke, die noch nicht gescrubbed

    wurden.
    full Scrubbt alles.
    0-100 Scrubbt den angegebenen Prozentsatz der Blöcke.

Wenn Sie einen Prozentsatz angeben, können Sie auch die Option -o, --older-than verwenden, um festzulegen, wie alt der Block sein soll. Die ältesten Blöcke werden zuerst gescrubbed, um eine optimale Überprüfung zu gewährleisten. Wenn Sie nur die gerade synchronisierten Blöcke scrubben möchten, die noch nicht gescrubbed wurden, verwenden Sie die Option `-p new`.

Um Details zum Scrub-Status zu erhalten, verwenden Sie den Befehl `status`.

Für jeden gefundenen stillen oder Eingabe-/Ausgabefehler werden die entsprechenden Blöcke in der `content`-Datei als fehlerhaft (bad) markiert. Diese fehlerhaften Blöcke werden in `status` aufgelistet und können mit `fix -e` behoben werden. Nach der Behebung werden sie beim nächsten Scrub erneut überprüft, und wenn sie als korrigiert befunden werden, wird die fehlerhafte Markierung entfernt. Um nur die fehlerhaften Blöcke zu scrubben, können Sie den Befehl `scrub -p bad` verwenden.

Es wird empfohlen, `scrub` nur auf einem synchronisierten Array auszuführen, um gemeldete Fehler zu vermeiden, die durch nicht synchronisierte Daten verursacht werden. Diese Fehler werden als keine stillen Fehler erkannt, und die Blöcke werden nicht als fehlerhaft markiert, aber solche Fehler werden in der Ausgabe des Befehls gemeldet.

Die `content`-Datei wird geändert, um die Zeit der letzten Überprüfung für jeden Block zu aktualisieren und fehlerhafte Blöcke zu markieren. Die `parity`-Dateien werden NICHT geändert. Die Dateien im Array werden NICHT geändert.

  fix
Behebt alle Dateien und die Paritätsdaten.

Alle Dateien und Paritätsdaten werden mit dem Snapshot-Zustand verglichen, der beim letzten `sync` gespeichert wurde. Wenn eine Abweichung gefunden wird, wird sie auf den gespeicherten Snapshot zurückgesetzt.

WARNUNG! Der Befehl `fix` unterscheidet nicht zwischen Fehlern und beabsichtigten Änderungen. Er setzt den Dateizustand bedingungslos auf den letzten `sync` zurück.

Wenn keine andere Option angegeben ist, wird das gesamte Array verarbeitet. Verwenden Sie die Filteroptionen, um eine Teilmenge von Dateien oder Festplatten für die Operation auszuwählen.

Um nur die Blöcke zu beheben, die während `sync` und `scrub` als fehlerhaft markiert wurden, verwenden Sie die Option -e, --filter-error. Im Gegensatz zu anderen Filteroptionen wendet diese Behebungen nur auf Dateien an, die seit dem letzten `sync` unverändert sind.

SnapRAID benennt alle Dateien, die nicht behoben werden können, durch Hinzufügen der Erweiterung `.unrecoverable` um.

Vor dem Beheben wird das gesamte Array gescannt, um alle Dateien zu finden, die seit der letzten `sync`-Operation verschoben wurden. Diese Dateien werden anhand ihres Zeitstempels identifiziert, wobei Name und Verzeichnis ignoriert werden, und werden bei Bedarf im Wiederherstellungsprozess verwendet. Wenn Sie einige davon außerhalb des Arrays verschoben haben, können Sie die Option -i, --import verwenden, um zusätzliche Verzeichnisse zum Scannen anzugeben.

Dateien werden nur anhand des Pfads identifiziert, nicht anhand der Inode.

Die `content`-Datei wird NICHT geändert. Die `parity`-Dateien werden bei Bedarf geändert. Die Dateien im Array werden bei Bedarf geändert.

  check
Überprüft alle Dateien und die Paritätsdaten.

Es funktioniert wie `fix`, simuliert jedoch nur eine Wiederherstellung, und es werden keine Änderungen in das Array geschrieben.

Dieser Befehl ist primär für manuelle Überprüfung gedacht, wie z.B. nach einem Wiederherstellungsprozess oder unter anderen speziellen Bedingungen. Für regelmäßige und geplante Überprüfungen verwenden Sie `scrub`.

Wenn Sie die Option -a, --audit-only verwenden, wird nur der Hash der Dateien überprüft, und die Paritätsdaten werden für einen schnelleren Lauf ignoriert.

Dateien werden nur anhand des Pfads identifiziert, nicht anhand der Inode.

Es wird nichts geändert.

  list
Listet alle Dateien auf, die sich zum Zeitpunkt des letzten `sync` im Array befanden.

Mit -v oder --verbose wird auch die Untersekundenzeit angezeigt.

Es wird nichts geändert.

  dup
Listet alle doppelten Dateien auf. Zwei Dateien gelten als gleich, wenn ihre Hashes übereinstimmen. Die Dateidaten werden nicht gelesen; es werden nur die vorab berechneten Hashes verwendet.

Es wird nichts geändert.

  pool
Erstellt oder aktualisiert eine virtuelle Ansicht aller Dateien in Ihrem Festplatten-Array im `pooling`-Verzeichnis.

Die Dateien werden nicht kopiert, sondern mithilfe symbolischer Links verknüpft.

Beim Aktualisieren werden alle vorhandenen symbolischen Links und leeren Unterverzeichnisse gelöscht und durch die neue Ansicht des Arrays ersetzt. Alle anderen regulären Dateien bleiben erhalten.

Außerhalb des Pool-Verzeichnisses wird nichts geändert.

  devices
Gibt die Low-Level-Geräte aus, die vom Array verwendet werden.

Dieser Befehl zeigt die Gerätezuordnungen im Array an und ist hauptsächlich als Skriptschnittstelle gedacht.

Die ersten beiden Spalten sind die Low-Level-Geräte-ID und der Pfad. Die nächsten beiden Spalten sind die High-Level-Geräte-ID und der Pfad. Die letzte Spalte ist der Festplattenname im Array.

In den meisten Fällen haben Sie ein Low-Level-Gerät für jede Festplatte im Array, aber in einigen komplexeren Konfigurationen können mehrere Low-Level-Geräte von einer einzigen Festplatte im Array verwendet werden.

Es wird nichts geändert.

  touch
Setzt einen beliebigen Untersekunden-Zeitstempel für alle Dateien, deren Untersekunden-Zeitstempel auf Null gesetzt ist.

Dies verbessert die Fähigkeit von SnapRAID, verschobene und kopierte Dateien zu erkennen, da es den Zeitstempel fast eindeutig macht und mögliche Duplikate reduziert.

Genauer gesagt, wenn der Untersekunden-Zeitstempel nicht Null ist, wird eine verschobene oder kopierte Datei als solche identifiziert, wenn sie mit Name, Größe und Zeitstempel übereinstimmt. Wenn der Untersekunden-Zeitstempel Null ist, wird sie nur als Kopie betrachtet, wenn der vollständige Pfad, die Größe und der Zeitstempel alle übereinstimmen.

Der Zeitstempel mit Sekundenpräzision wird nicht geändert, sodass alle Daten und Zeiten Ihrer Dateien erhalten bleiben.

  rehash
Plant eine Neu-Hash-Berechnung (rehash) des gesamten Arrays.

Dieser Befehl ändert die verwendete Hash-Art, typischerweise beim Upgrade von einem 32-Bit-System auf ein 64-Bit-System, um von MurmurHash3 auf den schnelleren SpookyHash umzuschalten.

Wenn Sie bereits den optimalen Hash verwenden, tut dieser Befehl nichts und informiert Sie darüber, dass keine Aktion erforderlich ist.

Die Neu-Hash-Berechnung wird nicht sofort durchgeführt, sondern findet schrittweise während `sync` und `scrub` statt.

Sie können den Neu-Hash-Zustand mithilfe von `status` überprüfen.

Während der Neu-Hash-Berechnung behält SnapRAID die volle Funktionalität bei, mit der einzigen Ausnahme, dass `dup` keine doppelten Dateien mit einem anderen Hash erkennen kann.

  locate
Lokalisiert Dateien, die auf den Paritätsfestplatten gespeichert sind. Für jede übereinstimmende Datei wird deren Position innerhalb der Paritätsdatei und die Anzahl der belegten Fragmente ausgegeben.

Sie können die Option -t, --tail verwenden, um den Vorgang auf Dateien zu beschränken, die den angegebenen Endbereich (Tail) der Parität belegen.

Wenn Sie diese Dateien neu zuweisen möchten, können Sie die Option -W, --force-realloc-tail verwenden. Beachten Sie, dass solche Dateien während des Neuzuweisungsprozesses nicht durch die Parität geschützt sind.

OPTIONS
SnapRAID bietet die folgenden Optionen:

-c, --conf CONFIG
    Wählt die zu verwendende Konfigurationsdatei aus. Wenn nicht angegeben, wird unter Unix die Datei `/usr/local/etc/snapraid.conf` verwendet, falls sie existiert, andernfalls `/etc/snapraid.conf`. Unter Windows wird die Datei `snapraid.conf` im selben Verzeichnis wie `snapraid.exe` verwendet.

-f, --filter PATTERN
    Filtert die zu verarbeitenden Dateien in `check` und `fix`. Nur die Dateien, die dem angegebenen Muster entsprechen, werden verarbeitet. Diese Option kann mehrmals verwendet werden. Weitere Details zu Musterspezifikationen finden Sie im Abschnitt PATTERN. Unter Unix stellen Sie sicher, dass Globbing-Zeichen in Anführungszeichen gesetzt werden, wenn sie verwendet werden. Diese Option kann nur mit `check` und `fix` verwendet werden. Sie kann nicht mit `sync` und `scrub` verwendet werden, da diese immer das gesamte Array verarbeiten.

-d, --filter-disk NAME
    Filtert die zu verarbeitenden Festplatten in `check`, `fix`, `up` und `down`. Sie müssen einen Festplattennamen angeben, wie in der Konfigurationsdatei definiert. Sie können auch Paritätsfestplatten mit den Namen `parity`, `2-parity`, `3-parity`, usw. angeben, um Vorgänge auf eine bestimmte Paritätsfestplatte zu beschränken. Wenn Sie mehrere --filter, --filter-disk und --filter-missing Optionen kombinieren, werden nur Dateien ausgewählt, die allen Filtern entsprechen. Diese Option kann mehrmals verwendet werden. Diese Option kann nur mit `check`, `fix`, `up` und `down` verwendet werden. Sie kann nicht mit `sync` und `scrub` verwendet werden, da diese immer das gesamte Array verarbeiten.

-m, --filter-missing
    Filtert die zu verarbeitenden Dateien in `check` und `fix`. Nur die Dateien, die im Array fehlen oder gelöscht wurden, werden verarbeitet. Bei Verwendung mit `fix` fungiert dies als `undelete`-Befehl (Wiederherstellung von Gelöschtem). Wenn Sie mehrere --filter, --filter-disk und --filter-missing Optionen kombinieren, werden nur Dateien ausgewählt, die allen Filtern entsprechen. Diese Option kann nur mit `check` und `fix` verwendet werden. Sie kann nicht mit `sync` und `scrub` verwendet werden, da diese immer das gesamte Array verarbeiten.

-e, --filter-error
    Verarbeitet die Dateien mit Fehlern in `check` und `fix`. Es verarbeitet nur Dateien, deren Blöcke während `sync` und `scrub` als mit stillen oder Eingabe-/Ausgabefehlern markiert wurden, wie in `status` aufgelistet. Diese Option kann nur mit `check` und `fix` verwendet werden.

-p, --plan PERC|bad|new|full
    Wählt den Scrub-Plan aus. Wenn PERC ein numerischer Wert von 0 bis 100 ist, wird er als Prozentsatz der zu scrubbenden Blöcke interpretiert. Anstelle eines Prozentsatzes können Sie einen Plan angeben: `bad` scrubbt fehlerhafte Blöcke, `new` scrubbt Blöcke, die noch nicht gescrubbed wurden, und `full` scrubbt alles. Diese Option kann nur mit `scrub` verwendet werden.

-o, --older-than DAYS
    Wählt den ältesten Teil des Arrays aus, der in `scrub` verarbeitet werden soll. DAYS ist das Mindestalter in Tagen, damit ein Block gescrubbed werden kann; der Standardwert ist 10. Blöcke, die als fehlerhaft markiert sind, werden immer gescrubbed, unabhängig von dieser Option. Diese Option kann nur mit `scrub` verwendet werden.

-a, --audit-only
    Überprüft in `check` den Hash der Dateien, ohne die Paritätsdaten zu überprüfen. Wenn Sie nur an der Überprüfung der Dateidaten interessiert sind, kann diese Option den Überprüfungsprozess erheblich beschleunigen. Diese Option kann nur mit `check` verwendet werden.

-h, --pre-hash
    Führt in `sync` eine vorläufige Hash-Phase aller neuen Daten zur zusätzlichen Überprüfung vor der Paritätsberechnung durch. Normalerweise wird in `sync` keine vorläufige Hash-Berechnung durchgeführt, und die neuen Daten werden unmittelbar vor der Paritätsberechnung gehasht, wenn sie zum ersten Mal gelesen werden. Dieser Vorgang tritt auf, wenn das System unter starker Last steht, wobei alle Festplatten drehen und eine ausgelastete CPU vorliegt. Dies ist ein Extremzustand für die Maschine, und wenn sie ein latentes Hardwareproblem hat, können stille Fehler unentdeckt bleiben, da die Daten noch nicht gehasht sind. Um dieses Risiko zu vermeiden, können Sie den `pre-hash`-Modus aktivieren, um alle Daten zweimal lesen zu lassen und so ihre Integrität sicherzustellen. Diese Option überprüft auch im Array verschobene Dateien, um sicherzustellen, dass die Verschiebeoperation erfolgreich war, und ermöglicht es Ihnen, bei Bedarf eine `fix`-Operation durchzuführen, bevor Sie fortfahren. Diese Option kann nur mit `sync` verwendet werden.

-i, --import DIR
    Importiert aus dem angegebenen Verzeichnis alle Dateien, die nach dem letzten `sync` aus dem Array gelöscht wurden. Wenn Sie solche Dateien noch haben, können sie von `check` und `fix` verwendet werden, um den Wiederherstellungsprozess zu verbessern. Die Dateien werden gelesen, auch in Unterverzeichnissen, und unabhängig von ihrem Namen identifiziert. Diese Option kann nur mit `check` und `fix` verwendet werden.

-s, --spin-down-on-error
    Dreht bei jedem Fehler alle verwalteten Festplatten herunter, bevor mit einem von Null verschiedenen Statuscode beendet wird. Dies verhindert, dass die Laufwerke nach einem abgebrochenen Vorgang aktiv bleiben und drehen, was unnötige Hitzeentwicklung und Stromverbrauch vermeiden hilft. Verwenden Sie diese Option, um sicherzustellen, dass die Festplatten auch bei einem Befehlsfehler sicher gestoppt werden.

-w, --bw-limit RATE
    Wendet eine globale Bandbreitenbegrenzung für alle Festplatten an. RATE ist die Anzahl der Bytes pro Sekunde. Sie können einen Multiplikator wie K, M oder G angeben (z.B. --bw-limit 1G).

-t, --tail GRÖSSE
    Beschränkt die Dateiliste auf diejenigen, die nicht mehr als die angegebene Tail-Größe der Paritätsfestplatten belegen. Sie können Multiplikatoren wie K, M, G oder T verwenden (z. B. --tail 1G). Diese Option ist nur in Verbindung mit dem Befehl `locate` gültig.

-A, --stats
    Aktiviert eine erweiterte Statusansicht, die zusätzliche Informationen anzeigt. Der Bildschirm zeigt zwei Diagramme an: Das erste Diagramm zeigt die Anzahl der gepufferten Stripes für jede Festplatte sowie den Dateipfad der Datei, auf die derzeit auf dieser Festplatte zugegriffen wird. Typischerweise hat die langsamste Festplatte keinen verfügbaren Puffer, was die maximal erreichbare Bandbreite bestimmt. Das zweite Diagramm zeigt den Prozentsatz der Wartezeit über die letzten 100 Sekunden. Es wird erwartet, dass die langsamste Festplatte die meiste Wartezeit verursacht, während andere Festplatten wenig oder keine Wartezeit haben sollten, da sie ihre gepufferten Stripes verwenden können. Dieses Diagramm zeigt auch die Zeit an, die mit Warten auf Hash-Berechnungen und RAID-Berechnungen verbracht wurde. Alle Berechnungen laufen parallel zu den Festplattenoperationen. Solange für mindestens eine Festplatte eine messbare Wartezeit vorhanden ist, deutet dies daher darauf hin, dass die CPU schnell genug ist, um mit der Arbeitslast Schritt zu halten.

-Z, --force-zero
    Erzwingt den unsicheren Vorgang der Synchronisierung einer Datei mit Nullgröße, die zuvor nicht Null war. Wenn SnapRAID eine solche Bedingung erkennt, stoppt es den Vorgang, es sei denn, Sie geben diese Option an. Dies ermöglicht es Ihnen, leicht zu erkennen, wann nach einem Systemabsturz einige zugegriffene Dateien abgeschnitten (truncated) wurden. Dies ist eine mögliche Bedingung unter Linux mit den ext3/ext4-Dateisystemen. Diese Option kann nur mit `sync` verwendet werden.

-E, --force-empty
    Erzwingt den unsicheren Vorgang der Synchronisierung einer Festplatte, bei der alle ursprünglichen Dateien fehlen. Wenn SnapRAID erkennt, dass alle ursprünglich auf der Festplatte vorhandenen Dateien fehlen oder überschrieben wurden, stoppt es den Vorgang, es sei denn, Sie geben diese Option an. Dies ermöglicht es Ihnen, leicht zu erkennen, wann ein Daten-Dateisystem nicht gemountet (eingehängt) ist. Diese Option kann nur mit `sync` verwendet werden.

-U, --force-uuid
    Erzwingt den unsicheren Vorgang der Synchronisierung, Überprüfung und Behebung mit Festplatten, deren UUID geändert wurde. Wenn SnapRAID erkennt, dass einige Festplatten ihre UUID geändert haben, stoppt es den Vorgang, es sei denn, Sie geben diese Option an. Dies ermöglicht es Ihnen, zu erkennen, wann Ihre Festplatten an den falschen Einhängepunkten gemountet sind. Es ist jedoch erlaubt, eine einzelne UUID-Änderung mit einfacher Parität zu haben und mehr mit mehrfacher Parität, da dies der normale Fall beim Austausch von Festplatten nach einer Wiederherstellung ist. Diese Option kann nur mit `sync`, `check` oder `fix` verwendet werden.

-D, --force-device
    Erzwingt den unsicheren Vorgang der Behebung mit unzugänglichen Festplatten oder mit Festplatten auf demselben physischen Gerät. Wenn Sie beispielsweise zwei Datenfestplatten verloren haben und eine Ersatzfestplatte haben, um nur die erste wiederherzustellen, können Sie die zweite unzugängliche Festplatte ignorieren. Oder wenn Sie eine Festplatte in dem auf einer bereits verwendeten Festplatte verbleibenden freien Speicherplatz wiederherstellen möchten, wobei sie dasselbe physische Gerät gemeinsam nutzen. Diese Option kann nur mit `fix` verwendet werden.

-N, --force-nocopy
    Deaktiviert in `sync`, `check` und `fix` die Kopiererkennungsheuristik. Ohne diese Option geht SnapRAID davon aus, dass Dateien mit den gleichen Attributen, wie Name, Größe und Zeitstempel, Kopien mit denselben Daten sind. Dies ermöglicht die Identifizierung von kopierten oder von einer Festplatte auf eine andere verschobenen Dateien und die Wiederverwendung der bereits berechneten Hash-Informationen, um stille Fehler zu erkennen oder fehlende Dateien wiederherzustellen. In einigen seltenen Fällen kann dieses Verhalten zu falsch positiven Ergebnissen oder einem langsamen Vorgang aufgrund vieler Hash-Überprüfungen führen, und diese Option ermöglicht es Ihnen, solche Probleme zu beheben. Diese Option kann nur mit `sync`, `check` und `fix` verwendet werden.

-F, --force-full
    Erzwingt in `sync` eine vollständige Neuberechnung der Parität. Diese Option kann verwendet werden, wenn Sie eine neue Paritätsstufe hinzufügen oder wenn Sie zu einer alten Content-Datei mit neueren Paritätsdaten zurückgekehrt sind. Anstatt die Parität von Grund auf neu zu erstellen, ermöglicht dies die Wiederverwendung der in der Content-Datei vorhandenen Hashes zur Validierung von Daten und zur Aufrechterhaltung des Datenschutzes während des `sync`-Vorgangs unter Verwendung der vorhandenen Paritätsdaten. Diese Option kann nur mit `sync` verwendet werden.

-R, --force-realloc
    Erzwingt in `sync` eine vollständige Neuallokation von Dateien und eine Wiederherstellung der Parität. Diese Option kann verwendet werden, um alle Dateien vollständig neu zuzuweisen und die Fragmentierung zu entfernen, während die in der Content-Datei vorhandenen Hashes zur Validierung von Daten wiederverwendet werden. Diese Option kann nur mit `sync` verwendet werden. WARNUNG! Diese Option ist nur für Experten gedacht, und es wird dringend empfohlen, sie nicht zu verwenden. Sie haben während der `sync`-Operation KEINEN Datenschutz.

-W, --force-realloc-tail GRÖSSE
    Funktioniert wie -R, --force-realloc, ist jedoch auf den angegebenen Endbereich (die letzten GRÖSSE Bytes) jeder Paritätsdatei beschränkt. Erzwingt die Neuzuweisung (Verschiebung) aller Dateifragmente/-blöcke, die derzeit in diesem Endabschnitt gespeichert sind, sodass sie an beliebiger Stelle in den Paritätsdateien platziert werden können, wo freier Speicherplatz verfügbar ist (einschließlich vorhandener Lücken). Der Hauptzweck dieser Option besteht darin, die Größe der Paritätsdatei auf der Festplatte zu verringern. Wenn die Neuzuweisung den gesamten Endabschnitt erfolgreich leert (keine Blöcke verbleiben dort), wird die Paritätsdatei gekürzt, wodurch der ungenutzte Endbereich freigegeben wird. Sie können Multiplikatoren wie K, M, G oder T verwenden (z. B. --force-realloc-tail 1G). Sie können locate -t, --tail verwenden, um die betroffenen Dateien im Voraus zu ermitteln. WARNUNG! Diese Option ist nur für Experten gedacht und es wird dringend empfohlen, sie nicht zu verwenden. Während des `sync`-Vorgangs besteht für die betroffenen Dateien KEIN Datenschutz.

-l, --log FILE
    Schreibt ein detailliertes Protokoll in die angegebene Datei. Wenn diese Option nicht angegeben ist, werden unerwartete Fehler auf dem Bildschirm ausgegeben, was bei vielen Fehlern möglicherweise zu einer übermäßigen Ausgabe führt. Wenn -l, --log angegeben ist, werden nur schwerwiegende Fehler, die SnapRAID zum Stoppen bringen, auf dem Bildschirm ausgegeben. Wenn der Pfad mit `>>` beginnt, wird die Datei im Anhängemodus (append mode) geöffnet. Vorkommen von `%D` und `%T` im Namen werden durch Datum und Uhrzeit im Format YYYYMMDD bzw. HHMMSS ersetzt. In Windows-Batch-Dateien müssen Sie das `%`-Zeichen verdoppeln, z.B. result-%%D.log. Um `>>` zu verwenden, müssen Sie den Namen in Anführungszeichen setzen, z.B. `">>result.log"`. Um das Protokoll an die Standardausgabe oder den Standardfehler auszugeben, können Sie `">&1"` bzw. `">&2"` verwenden. Beschreibungen der Protokoll-Tags finden Sie in der Datei snapraid_log.txt oder in der Manpage.

-L, --error-limit NUMBER
    Legt ein neues Fehlerlimit fest, bevor die Ausführung gestoppt wird. Standardmäßig stoppt SnapRAID, wenn es mehr als 100 Eingabe-/Ausgabefehler feststellt, was darauf hindeutet, dass eine Festplatte wahrscheinlich ausfällt. Diese Option wirkt sich auf `sync` und `scrub` aus, denen es gestattet ist, nach dem ersten Satz von Festplattenfehlern fortzufahren, um ihre Vorgänge abzuschließen. `check` und `fix` stoppen jedoch immer beim ersten Fehler.

-S, --start BLKSTART
    Startet die Verarbeitung ab der angegebenen Blocknummer. Dies kann nützlich sein, um die Überprüfung oder Behebung spezifischer Blöcke im Falle einer beschädigten Festplatte zu wiederholen. Diese Option ist hauptsächlich für die erweiterte manuelle Wiederherstellung gedacht.

-B, --count BLKCOUNT
    Verarbeitet nur die angegebene Anzahl von Blöcken. Diese Option ist hauptsächlich für die erweiterte manuelle Wiederherstellung gedacht.

-C, --gen-conf CONTENT
    Generiert eine Dummy-Konfigurationsdatei aus einer vorhandenen Content-Datei. Die Konfigurationsdatei wird in die Standardausgabe geschrieben und überschreibt keine vorhandene. Diese Konfigurationsdatei enthält auch die Informationen, die zur Rekonstruktion der Festplatten-Einhängepunkte erforderlich sind, falls Sie das gesamte System verlieren.

-v, --verbose
    Gibt mehr Informationen auf dem Bildschirm aus. Wenn einmal angegeben, werden ausgeschlossene Dateien und zusätzliche Statistiken gedruckt. Diese Option hat keine Auswirkung auf die Protokolldateien.

-q, --quiet
    Gibt weniger Informationen auf dem Bildschirm aus. Wenn einmal angegeben, wird die Fortschrittsleiste entfernt; zweimal, die laufenden Operationen; dreimal, die Info-Meldungen; viermal, die Statusmeldungen. Schwerwiegende Fehler werden immer auf dem Bildschirm ausgegeben. Diese Option hat keine Auswirkung auf die Protokolldateien.

-H, --help
    Gibt eine kurze Hilfeanzeige aus.

-V, --version
    Gibt die Programmversion aus.

CONFIGURATION
SnapRAID benötigt eine Konfigurationsdatei, um zu wissen, wo sich Ihr Festplatten-Array befindet und wo die Paritätsinformationen gespeichert werden sollen.

Unter Unix wird die Datei `/usr/local/etc/snapraid.conf` verwendet, falls sie existiert, andernfalls `/etc/snapraid.conf`. Unter Windows wird die Datei `snapraid.conf` im selben Verzeichnis wie `snapraid.exe` verwendet.

Sie muss die folgenden Optionen (Groß- und Kleinschreibung beachten) enthalten:

  parity FILE [,FILE] ...
Definiert die Dateien, die zum Speichern der Paritätsinformationen verwendet werden sollen. Die Parität ermöglicht den Schutz vor einem einzelnen Festplattenausfall, ähnlich wie bei RAID5.

Sie können mehrere Dateien angeben, die sich auf unterschiedlichen Festplatten befinden müssen. Wenn eine Datei nicht mehr wachsen kann, wird die nächste verwendet. Der gesamte verfügbare Platz muss mindestens so groß sein wie die größte Datenfestplatte im Array.

Sie können später zusätzliche Paritätsdateien hinzufügen, aber Sie können sie nicht neu anordnen oder entfernen.

Das Reservieren der Paritätsfestplatten für Parität stellt sicher, dass sie nicht fragmentiert werden, was die Leistung verbessert.

Unter Windows werden 256 MB auf jeder Festplatte ungenutzt gelassen, um die Warnung vor vollen Festplatten zu vermeiden.

Diese Option ist obligatorisch und kann nur einmal verwendet werden.

  (2,3,4,5,6)-parity FILE [,FILE] ...
Definiert die Dateien, die zum Speichern zusätzlicher Paritätsinformationen verwendet werden sollen.

Für jede angegebene Paritätsstufe wird eine zusätzliche Schutzstufe aktiviert:
•   2-parity aktiviert RAID6 Dual-Parität.
•   3-parity aktiviert Triple-Parität.
•   4-parity aktiviert Quad- (vierfache) Parität.
•   5-parity aktiviert Penta- (fünffache) Parität.
•   6-parity aktiviert Hexa- (sechsfache) Parität.

Jede Paritätsstufe erfordert die Anwesenheit aller vorherigen Paritätsstufen.

Die gleichen Überlegungen wie bei der Option `parity` gelten.

Diese Optionen sind optional und können nur einmal verwendet werden.

  z-parity FILE [,FILE] ...
Definiert eine alternative Datei und ein alternatives Format zum Speichern von Triple-Parität.

Diese Option ist eine Alternative zu `3-parity`, die primär für Low-End-CPUs wie ARM oder AMD Phenom, Athlon und Opteron gedacht ist, die den SSSE3-Befehlssatz nicht unterstützen. In solchen Fällen bietet sie eine bessere Leistung.

Dieses Format ähnelt dem von ZFS RAIDZ3, ist aber schneller. Wie ZFS funktioniert es nicht jenseits der Triple-Parität.

Bei Verwendung von `3-parity` werden Sie gewarnt, wenn das `z-parity`-Format zur Leistungsverbesserung empfohlen wird.

Es ist möglich, von einem Format in ein anderes zu konvertieren, indem die Konfigurationsdatei mit der gewünschten z-parity- oder 3-parity-Datei angepasst und `fix` zur Neuerstellung verwendet wird.

  content FILE
Definiert die Datei, die zum Speichern der Liste und Prüfsummen aller im Festplatten-Array vorhandenen Dateien verwendet werden soll.

Sie kann auf einer für Daten, Parität oder einer anderen verfügbaren Festplatte platziert werden. Wenn Sie eine Datenfestplatte verwenden, wird diese Datei automatisch vom `sync`-Vorgang ausgeschlossen.

Diese Option ist obligatorisch und kann mehrmals verwendet werden, um mehrere Kopien derselben Datei zu speichern.

Sie müssen mindestens eine Kopie für jede verwendete Paritätsfestplatte plus eine speichern. Die Verwendung zusätzlicher Kopien schadet nicht.

  data NAME DIR
Definiert den Namen und den Einhängepunkt (Mount Point) der Datenfestplatten im Array. NAME wird zur Identifizierung der Festplatte verwendet und muss eindeutig sein. DIR ist der Einhängepunkt der Festplatte im Dateisystem.

Sie können den Einhängepunkt nach Bedarf ändern, solange Sie den NAME unverändert lassen.

Sie sollten eine Option für jede Datenfestplatte im Array verwenden.

Sie können eine Festplatte später umbenennen, indem Sie den NAME direkt in der Konfigurationsdatei ändern und dann einen `sync`-Befehl ausführen. Im Falle einer Umbenennung erfolgt die Zuordnung mithilfe der gespeicherten UUID der Festplatten.

  extra NAME DIR
Definiert den Namen und Einhängepunkt zusätzlicher Festplatten, die mit den Befehlen `smart` und `probe` überwacht werden sollen.

Dies ist nützlich für die Überwachung von Festplatten, die nicht Teil des Arrays sind, aber für das Funktionieren des Systems erforderlich sind, wie z. B. die Boot-Festplatte.

Beachten Sie, dass solche Festplatten nicht von den Befehlen `up` und `down` betroffen sind, da von ihnen erwartet wird, dass sie sich immer drehen.

  nohidden
Schließt alle versteckten Dateien und Verzeichnisse aus. Unter Unix sind versteckte Dateien solche, die mit `.` beginnen. Unter Windows sind es solche mit dem versteckten Attribut.

  exclude/include PATTERN
Definiert die Datei- oder Verzeichnismuster, die im `sync`-Vorgang ausgeschlossen oder eingeschlossen werden sollen. Alle Muster werden in der angegebenen Reihenfolge verarbeitet.

Wenn das erste übereinstimmende Muster ein `exclude`-Muster ist, wird die Datei ausgeschlossen. Wenn es ein `include`-Muster ist, wird die Datei eingeschlossen. Wenn kein Muster übereinstimmt, wird die Datei ausgeschlossen, wenn das zuletzt angegebene Muster ein `include` ist, oder eingeschlossen, wenn das zuletzt angegebene Muster ein `exclude` ist.

Weitere Details zu Musterspezifikationen finden Sie im Abschnitt PATTERN.

Diese Option kann mehrmals verwendet werden.

  blocksize SIZE_IN_KIBIBYTES
Definiert die grundlegende Blockgröße in Kibibytes für die Parität. Ein Kibibyte entspricht 1024 Bytes.

Die Standard-Blockgröße ist 256, was für die meisten Fälle ausreichen sollte.

WARNUNG! Diese Option ist nur für Experten gedacht, und es wird dringend empfohlen, diesen Wert nicht zu ändern. Um diesen Wert zukünftig zu ändern, müssen Sie die gesamte Parität neu erstellen!

Ein Grund für die Verwendung einer anderen Blockgröße ist, wenn Sie viele kleine Dateien in der Größenordnung von Millionen haben.

Für jede Datei, auch wenn sie nur wenige Bytes groß ist, wird ein ganzer Block Parität zugewiesen, und bei vielen Dateien kann dies zu erheblichem ungenutztem Paritätsplatz führen. Wenn Sie die Paritätsfestplatte vollständig füllen, dürfen Sie keine weiteren Dateien zu den Datenfestplatten hinzufügen. Der verschwendete Paritätsplatz akkumuliert sich jedoch nicht über die Datenfestplatten hinweg. Verschwendeter Platz, der durch eine hohe Anzahl von Dateien auf einer Datenfestplatte entsteht, begrenzt nur die Datenmenge auf dieser Datenfestplatte, nicht auf anderen.

Als Annäherung können Sie davon ausgehen, dass die Hälfte der Blockgröße für jede Datei verschwendet wird. Mit beispielsweise 100.000 Dateien und einer Blockgröße von 256 KiB verschwenden Sie 12,8 GB Parität, was zu 12,8 GB weniger verfügbarem Speicherplatz auf der Datenfestplatte führen kann.

Sie können die Menge des verschwendeten Platzes auf jeder Festplatte mithilfe von `status` überprüfen. Dies ist die Menge an Platz, die Sie auf den Datenfestplatten freilassen oder für Dateien verwenden müssen, die nicht im Array enthalten sind. Wenn dieser Wert negativ ist, bedeutet dies, dass Sie kurz davor sind, die Parität zu füllen, und er stellt den Platz dar, den Sie noch verschwenden können.

Um dieses Problem zu vermeiden, können Sie eine größere Partition für die Parität verwenden. Wenn die Paritätspartition beispielsweise 12,8 GB größer ist als die Datenfestplatten, haben Sie genügend zusätzlichen Platz, um bis zu 100.000 Dateien auf jeder Datenfestplatte ohne verschwendeten Platz zu verarbeiten.

Ein Trick, um eine größere Paritätspartition unter Linux zu erhalten, ist die Formatierung mit dem Befehl:

    mkfs.ext4 -m 0 -T largefile4 DEVICE

Dies führt zu etwa 1,5% zusätzlichem Speicherplatz, ungefähr 60 GB für eine 4 TB Festplatte, was etwa 460.000 Dateien auf jeder Datenfestplatte ohne verschwendeten Platz ermöglicht.

  hashsize SIZE_IN_BYTES
Definiert die Hash-Größe in Bytes für die gespeicherten Blöcke.

Die Standard-Hash-Größe beträgt 16 Bytes (128 Bit), was für die meisten Fälle ausreichen sollte.

WARNUNG! Diese Option ist nur für Experten gedacht, und es wird dringend empfohlen, diesen Wert nicht zu ändern. Um diesen Wert zukünftig zu ändern, müssen Sie die gesamte Parität neu erstellen!

Ein Grund für die Verwendung einer anderen Hash-Größe ist, wenn Ihr System über begrenzten Speicher verfügt. Als Faustregel benötigt SnapRAID typischerweise 1 GiB RAM für jede 16 TB Daten im Array.

Genauer gesagt benötigt SnapRAID zum Speichern der Hashes der Daten ungefähr TS*(1+HS)/BS Bytes RAM, wobei TS die Gesamtgröße in Bytes Ihres Festplatten-Arrays ist, BS die Blockgröße in Bytes und HS die Hash-Größe in Bytes.

Mit beispielsweise 8 Festplatten à 4 TB, einer Blockgröße von 256 KiB (1 KiB = 1024 Bytes) und einer Hash-Größe von 16 erhalten Sie:

RAM = (8 * 4 * 10^12) * (1+16) / (256 * 2^10) = 1.93 GiB

Bei einem Wechsel zu einer Hash-Größe von 8 erhalten Sie:

RAM = (8 * 4 * 10^12) * (1+8) / (256 * 2^10) = 1.02 GiB

Bei einem Wechsel zu einer Blockgröße von 512 erhalten Sie:

RAM = (8 * 4 * 10^12) * (1+16) / (512 * 2^10) = 0.96 GiB

Bei einem Wechsel zu einer Hash-Größe von 8 und einer Blockgröße von 512 erhalten Sie:

RAM = (8 * 4 * 10^12) * (1+8) / (512 * 2^10) = 0.51 GiB

  autosave SIZE_IN_GIGABYTES
Speichert den Zustand beim Synchronisieren oder Scrubben automatisch nach der angegebenen Menge an verarbeiteten GB. Diese Option ist nützlich, um zu vermeiden, dass lange `sync`-Befehle von vorne gestartet werden müssen, wenn sie durch einen Maschinenabsturz oder ein anderes Ereignis unterbrochen werden.

  temp_limit TEMPERATURE_CELSIUS
Legt die maximal zulässige Festplattentemperatur in Celsius fest. Wenn angegeben, überprüft SnapRAID regelmäßig die Temperatur aller Festplatten mithilfe des smartctl-Tools. Die aktuellen Festplattentemperaturen werden während des Betriebs von SnapRAID angezeigt. Wenn eine Festplatte diesen Grenzwert überschreitet, werden alle Vorgänge gestoppt, und die Festplatten werden für die durch die Option `temp_sleep` definierte Dauer heruntergefahren (in den Standby-Modus versetzt). Nach der Schlafperiode werden die Vorgänge fortgesetzt und möglicherweise erneut pausiert, wenn der Temperaturgrenzwert erneut erreicht wird.

Während des Betriebs analysiert SnapRAID auch die Heizkurve jeder Festplatte und schätzt die langfristige stationäre Temperatur, die erwartet wird, wenn die Aktivität fortgesetzt wird. Die Schätzung wird nur durchgeführt, nachdem die Festplattentemperatur viermal angestiegen ist, um sicherzustellen, dass genügend Datenpunkte zur Verfügung stehen, um einen zuverlässigen Trend festzustellen. Diese vorhergesagte stationäre Temperatur wird in Klammern neben dem aktuellen Wert angezeigt und hilft bei der Beurteilung, ob die Kühlung des Systems ausreichend ist. Diese geschätzte Temperatur dient nur zu Informationszwecken und hat keine Auswirkung auf das Verhalten von SnapRAID. Die Aktionen des Programms basieren ausschließlich auf den tatsächlich gemessenen Festplattentemperaturen.

Um diese Analyse durchzuführen, benötigt SnapRAID eine Referenz für die Systemtemperatur. Es versucht zunächst, diese von verfügbaren Hardwaresensoren zu lesen. Wenn kein Systemsensor zugänglich ist, wird die niedrigste zu Beginn des Laufs gemessene Festplattentemperatur als Fallback-Referenz verwendet.

Normalerweise zeigt SnapRAID nur die Temperatur der heißesten Festplatte an. Um die Temperatur aller Festplatten anzuzeigen, verwenden Sie die Option -A oder --stats.

  temp_sleep TIME_IN_MINUTES
Legt die Standby-Zeit in Minuten fest, wenn der Temperaturgrenzwert erreicht wird. Während dieser Zeit bleiben die Festplatten heruntergefahren. Der Standardwert ist 5 Minuten.

  pool DIR
Definiert das Pooling-Verzeichnis, in dem die virtuelle Ansicht des Festplatten-Arrays mithilfe des Befehls `pool` erstellt wird.

Das Verzeichnis muss bereits existieren.

  share UNC_DIR
Definiert den Windows UNC-Pfad, der für den Remote-Zugriff auf die Festplatten erforderlich ist.

Wenn diese Option angegeben ist, verwenden die im Pool-Verzeichnis erstellten symbolischen Links diesen UNC-Pfad, um auf die Festplatten zuzugreifen. Ohne diese Option verwenden die generierten symbolischen Links nur lokale Pfade, was die Freigabe des Pool-Verzeichnisses über das Netzwerk nicht ermöglicht.

Die symbolischen Links werden unter Verwendung des angegebenen UNC-Pfads gebildet, wobei der in der `data`-Option angegebene Festplattenname und schließlich das Dateiverzeichnis und der Name hinzugefügt werden.

Diese Option ist nur für Windows erforderlich.

  smartctl DISK/PARITY OPTIONS...
Definiert benutzerdefinierte smartctl-Optionen, um die SMART-Attribute für jede Festplatte abzurufen. Dies kann für RAID-Controller und einige USB-Festplatten erforderlich sein, die nicht automatisch erkannt werden können. Der Platzhalter %s wird durch den Gerätenamen ersetzt, ist aber für feste Geräte wie RAID-Controller optional.

DISK ist derselbe Festplattenname, der in der `data`-Option angegeben ist. PARITY ist einer der Paritätsnamen: `parity`, `2-parity`, `3-parity`, `4-parity`, `5-parity`, `6-parity` oder `z-parity`.

In den angegebenen OPTIONS wird die Zeichenfolge `%s` durch den Gerätenamen ersetzt. Bei RAID-Controllern ist das Gerät wahrscheinlich fest, und Sie müssen `%s` möglicherweise nicht verwenden.

Weitere mögliche Optionen finden Sie in der smartmontools-Dokumentation:

    https://www.smartmontools.org/wiki/Supported_RAID-Controllers
    https://www.smartmontools.org/wiki/Supported_USB-Devices

Zum Beispiel:

    smartctl parity -d sat %s

  smartignore DISK/PARITY ATTR [ATTR...]
Ignoriert das angegebene SMART-Attribut bei der Berechnung der Wahrscheinlichkeit eines Festplattenausfalls. Diese Option ist nützlich, wenn eine Festplatte ungewöhnliche oder irreführende Werte für ein bestimmtes Attribut meldet.

DISK ist derselbe Festplattenname, der in der `data`-Option angegeben ist. PARITY ist einer der Paritätsnamen: `parity`, `2-parity`, `3-parity`, `4-parity`, `5-parity`, `6-parity` oder `z-parity`. Der Sonderwert * kann verwendet werden, um das Attribut auf allen Festplatten zu ignorieren.

Um beispielsweise das Attribut `Current Pending Sector Count` auf allen Festplatten zu ignorieren:

    smartignore * 197

Um es nur auf der ersten Paritätsfestplatte zu ignorieren:

    smartignore parity 197

  Examples
Ein Beispiel für eine typische Konfiguration für Unix ist:

    parity /mnt/diskp/snapraid.parity
    content /mnt/diskp/snapraid.content
    content /var/lib/snapraid/snapraid.content
    data d1 /mnt/disk1/
    data d2 /mnt/disk2/
    data d3 /mnt/disk3/
    exclude /lost+found/
    exclude /tmp/
    smartctl d1 -d sat %s
    smartctl d2 -d usbjmicron %s
    smartctl parity -d areca,1/1 /dev/sg0
    smartctl 2-parity -d areca,2/1 /dev/sg0

Ein Beispiel für eine typische Konfiguration für Windows ist:

    parity E:\snapraid.parity
    content E:\snapraid.content
    content C:\snapraid\snapraid.content
    data d1 G:\array\
    data d2 H:\array\
    data d3 I:\array\
    exclude Thumbs.db
    exclude \$RECYCLE.BIN
    exclude \System Volume Information
    smartctl d1 -d sat %s
    smartctl d2 -d usbjmicron %s
    smartctl parity -d areca,1/1 /dev/arcmsr0
    smartctl 2-parity -d areca,2/1 /dev/arcmsr0

PATTERN
Muster bieten eine flexible Möglichkeit, Dateien für die Einbeziehung oder den Ausschluss zu filtern. Durch die Verwendung von Globbing-Zeichen können Sie Regeln definieren, die mit bestimmten Dateinamen oder ganzen Verzeichnisstrukturen übereinstimmen, ohne jeden Pfad manuell auflisten zu müssen.

Das Fragezeichen `?` entspricht einem beliebigen einzelnen Zeichen außer dem Verzeichnistrennzeichen. Dies macht es nützlich für den Abgleich von Dateinamen mit variablen Zeichen, während das Muster auf eine einzelne Verzeichnisebene beschränkt bleibt.

Der einfache Stern `*` entspricht einer beliebigen Folge von Zeichen, aber wie das Fragezeichen überschreitet er niemals Verzeichnisgrenzen. Er stoppt beim Schrägstrich, was ihn für den Abgleich innerhalb einer einzelnen Pfadkomponente geeignet macht. Dies ist das Standardverhalten von Wildcards, das vom Shell- Globbing bekannt ist.

Der Doppelstern `**` ist mächtiger; er entspricht jeder Folge von Zeichen einschließlich Verzeichnistrennzeichen. Dies ermöglicht es Mustern, über mehrere Verzeichnisebenen hinweg übereinzustimmen. Wenn `**` direkt in ein Muster eingebettet ist, kann es null oder mehr Zeichen einschließlich Schrägstrichen zwischen dem umgebenden wörtlichen Text entsprechen.

Die wichtigste Verwendung von `**` ist in der speziellen Form `/**/`. Dies entspricht null oder mehr vollständigen Verzeichnisebenen, was es möglich macht, Dateien in jeder Tiefe eines Verzeichnisbaums abzugleichen, ohne die genaue Pfadstruktur zu kennen. Zum Beispiel entspricht das Muster `src/**/main.js` dem Pfad `src/main.js` (Überspringen von null Verzeichnissen), `src/ui/main.js` (Überspringen eines Verzeichnisses) und `src/ui/components/main.js` (Überspringen von zwei Verzeichnissen).

Zeichenklassen mit eckigen Klammern `[]` entsprechen einem einzelnen Zeichen aus einer bestimmten Menge oder einem Bereich. Wie die anderen Einzelzeichenmuster entsprechen sie nicht den Verzeichnistrennzeichen. Klassen unterstützen Bereiche und Negierung durch ein Ausrufezeichen.

Der grundlegende Unterschied, den man sich merken sollte, ist, dass `*`, `?` und Zeichenklassen alle Verzeichnisgrenzen respektieren und nur innerhalb einer einzelnen Pfadkomponente übereinstimmen, während `**` das einzige Muster ist, das über Verzeichnistrennzeichen hinweg übereinstimmen kann.

Es gibt vier verschiedene Arten von Mustern:

FILE
    Wählt jede Datei mit dem Namen FILE aus. Dieses Muster gilt nur für Dateien, nicht für Verzeichnisse.

DIR/
    Wählt jedes Verzeichnis mit dem Namen DIR und alles darin aus. Dieses Muster gilt nur für Verzeichnisse, nicht für Dateien.

/PATH/FILE
    Wählt den exakt angegebenen Dateipfad aus. Dieses Muster gilt nur für Dateien, nicht für Verzeichnisse.

/PATH/DIR/
    Wählt den exakt angegebenen Verzeichnispfad und alles darin aus. Dieses Muster gilt nur für Verzeichnisse, nicht für Dateien.

Wenn Sie einen absoluten Pfad angeben, der mit / beginnt, wird er auf das Array-Stammverzeichnis angewendet, nicht auf das lokale Dateisystem-Stammverzeichnis.

Unter Windows können Sie den Backslash \ anstelle des Forward-Slash / verwenden. Windows-Systemverzeichnisse, Junctions, Einhängepunkte (Mount Points) und andere spezielle Windows-Verzeichnisse werden als Dateien behandelt, was bedeutet, dass Sie zum Ausschließen eine Dateiregel verwenden müssen, nicht eine Verzeichnisregel.

Wenn der Dateiname ein Zeichen `*`, `?`, `[`, oder `]` enthält, müssen Sie es escapen, um zu vermeiden, dass es als Globbing-Zeichen interpretiert wird. Unter Unix ist das Escape-Zeichen `\`; unter Windows ist es `^`. Wenn sich das Muster in der Befehlszeile befindet, müssen Sie das Escape-Zeichen verdoppeln, um zu vermeiden, dass es von der Befehlsshell interpretiert wird.

In der Konfigurationsdatei können Sie verschiedene Strategien zum Filtern der zu verarbeitenden Dateien verwenden. Der einfachste Ansatz besteht darin, nur `exclude`-Regeln zu verwenden, um alle Dateien und Verzeichnisse zu entfernen, die Sie nicht verarbeiten möchten. Zum Beispiel:

    # Schließt jede Datei namens `*.unrecoverable` aus
    exclude *.unrecoverable
    # Schließt das Stammverzeichnis `/lost+found` aus
    exclude /lost+found/
    # Schließt jedes Unterverzeichnis namens `tmp` aus
    exclude tmp/

Der gegenteilige Ansatz besteht darin, nur die Dateien zu definieren, die Sie verarbeiten möchten, indem Sie nur `include`-Regeln verwenden. Zum Beispiel:

    # Schließt nur einige Verzeichnisse ein
    include /movies/
    include /musics/
    include /pictures/

Der letzte Ansatz besteht darin, `exclude`- und `include`-Regeln zu mischen. In diesem Fall ist die Reihenfolge der Regeln wichtig. Frühere Regeln haben Vorrang vor späteren. Zur Vereinfachung können Sie zuerst alle `exclude`-Regeln und dann alle `include`-Regeln auflisten. Zum Beispiel:

    # Schließt jede Datei namens `*.unrecoverable` aus
    exclude *.unrecoverable
    # Schließt jedes Unterverzeichnis namens `tmp` aus
    exclude tmp/
    # Schließt nur einige Verzeichnisse ein
    include /movies/
    include /musics/
    include /pictures/

In der Befehlszeile können Sie mit der Option -f nur `include`-Muster verwenden. Zum Beispiel:

    # Überprüft nur die .mp3-Dateien.
    # Unter Unix Anführungszeichen verwenden, um die Globbing-Erweiterung durch die Shell zu vermeiden.
    snapraid -f "*.mp3" check

Unter Unix müssen Sie Globbing-Zeichen in der Befehlszeile in Anführungszeichen setzen, um zu verhindern, dass die Shell sie erweitert.

DATEIEN IGNORIEREN
Zusätzlich zu den globalen Regeln in der Konfigurationsdatei können Sie `.snapraidignore`-Dateien in jedem Verzeichnis innerhalb des Arrays platzieren, um dezentrale Ausschlussregeln zu definieren.

Regeln, die in `.snapraidignore` definiert sind, werden nach den Regeln in der Konfigurationsdatei angewendet. Dies bedeutet, dass sie eine höhere Priorität haben und verwendet werden können, um Dateien auszuschließen, die zuvor durch die globale Konfiguration eingeschlossen wurden. Effektiv wird eine Datei ausgeschlossen, wenn eine lokale Regel zutrifft, unabhängig von den globalen Include-Einstellungen.

Die Musterlogik in `.snapraidignore` spiegelt die globale Konfiguration wider, verankert die Muster jedoch an dem Verzeichnis, in dem sich die Datei befindet:

FILE
    Wählt jede Datei namens FILE in diesem Verzeichnis oder darunter aus. Dies folgt denselben Globbing-Regeln wie das globale Muster.

DIR/
    Wählt jedes Verzeichnis namens DIR und alles darin aus, das sich in diesem Verzeichnis oder darunter befindet.

/PATH/FILE
    Wählt die exakt angegebene Datei relativ zum Speicherort der `.snapraidignore`-Datei aus.

/PATH/DIR/
    Wählt das exakt angegebene Verzeichnis und alles darin aus, relativ zum Speicherort der `.snapraidignore`-Datei.

Im Gegensatz zur globalen Konfiguration unterstützen `.snapraidignore`-Dateien nur Ausschlussregeln; Sie können keine `include`-Muster oder Negationen (!) verwenden.

Wenn Sie beispielsweise eine `.snapraidignore` in `/mnt/disk1/projects/` haben:

    # Schließt NUR /mnt/disk1/projects/output.bin aus
    /output.bin
    # Schließt jedes Verzeichnis namens `build` innerhalb von projects/ aus
    build/
    # Schließt jede .tmp-Datei innerhalb von projects/ oder deren Unterordnern aus
    *.tmp

CONTENT
SnapRAID speichert die Liste und Prüfsummen Ihrer Dateien in der Content-Datei.

Es ist eine Binärdatei, die alle im Festplatten-Array vorhandenen Dateien auflistet, zusammen mit allen Prüfsummen zur Überprüfung ihrer Integrität.

Diese Datei wird von den Befehlen `sync` und `scrub` gelesen und geschrieben und von den Befehlen `fix`, `check` und `status` gelesen.

PARITY
SnapRAID speichert die Paritätsinformationen Ihres Arrays in den Paritätsdateien.

Dies sind Binärdateien, die die berechnete Parität aller in der `content`-Datei definierten Blöcke enthalten.

Diese Dateien werden von den Befehlen `sync` und `fix` gelesen und geschrieben und nur von den Befehlen `scrub` und `check` gelesen.

ENCODING
SnapRAID ignoriert unter Unix jede Kodierung. Es liest und speichert die Dateinamen mit derselben Kodierung, die vom Dateisystem verwendet wird.

Unter Windows werden alle vom Dateisystem gelesenen Namen konvertiert und im UTF-8-Format verarbeitet.

Um Dateinamen korrekt auszugeben, müssen Sie die Windows-Konsole mit dem Befehl `chcp 65001` auf den UTF-8-Modus einstellen und eine TrueType-Schriftart wie `Lucida Console` als Konsolenschriftart verwenden. Dies betrifft nur die gedruckten Dateinamen; wenn Sie die Konsolenausgabe in eine Datei umleiten, ist die resultierende Datei immer im UTF-8-Format.

COPYRIGHT
Diese Datei ist Copyright (C) 2025 Andrea Mazzoleni

SEE ALSO
snapraid_log(1), snapraidd(1)