Willkommen Gast 

Infos ein-/ausblenden

Willkommen Gast! Um Beiträge zu verfassen musst Du registriert sein.





Seiten: 1 [2] 3
Autor Thema:Kein Erkennen verschobener Dateien
lupinho
Administrator
Beiträge: 711
Permalink
avatar
Beitrag Re: Kein Erkennen verschobener Dateien
am February 25, 2018, 19:23
Zitat

Kann sein, dass die Datei ersetzt werden würde und zwischenzeitlich die Platte vollläuft. In späteren Versionen baue ich ein, dass alte Backups während des Backups gelöscht wenn der Speicherplatz knapp wird. Momentan geht das leider nicht. Ich würde also zunächst - per Hand oder mit dem mitgelieferten Kommandozeilentool RemoveDir - ein altes Backup und das abgebrochene Backup löschen. Dann bitte nochmal probieren. Wenn Du übrigens massenhaft Dateien verschoben hast, mag es wirklich sein, dass nicht alle ersetzt werden. Das hängt damit zusammen, dass HardlinkBackup einen Cache mit Checksummen hält, der nicht beliebig groß werden kann. Dabei werden aber große Dateien gegenüber kleinen priorisiert.
Gruß,
Lupinho.

Yo
Neuling
Beiträge: 14
Permalink
avatar
Beitrag Re: Kein Erkennen verschobener Dateien
am February 25, 2018, 23:51
Zitat

Das hört sich enorm schlecht an. Ein älteres Backup zu löschen reicht nicht aus, da dadurch nicht genügend Speicherplatz frei wird.

Wo ist eigentlich das Sternchen im Programm an den Behauptungen, dass verschobene und umbenannte Dateien erkannt werden? Irgendwo sollte doch stehen, dass es Einschränkungen gibt... Grml. Ich denke mal über eine Lösung nach, aber ich befürchte, ohne die Erkennung verschobener und umbenannter Dateien komplett neu zu gestalten, wird das nix.

Aus dem Bauch heraus würde ich behaupten, dass man die Checksummen irgendwie mit Suchbäumen oder ähnlichem so auf einer Festplatte ablegen kann, dass man zumindest schnell feststellen kann, ob es die gerade berechnete Checksumme in einem älteren Backup bereits gibt... Mein Backup umfasst knapp 500.000 Dateien. Selbst wenn ich für jede Datei die Checksumme und den Speicherort im Arbeitsspeicher vorhalten würde, und ich für diese Informationen 2kb Speicher benötige, wäre das gerade mal 1 GB Speicher...

Also, ich finde, es sollte eine Option geben "Mir ist egal, wenn es länger dauert, Hauptsache umbenannte/verschobene Dateien werden zuverlässig erkannt und werden nahezu unmittelbar nach dem Kopieren durch Links ersetzt". Jetzt muss ich erstmal schlafen. Und danach überlege ich, ob ich mich von HLB abwenden muss und mir etwas eigenes programmieren muss. Denn der Fall, dass ich ganze Verzeichnisbäume umsortiere, wird demnächst öfter vorkommen. 🙁

Yo
Neuling
Beiträge: 14
Permalink
avatar
Beitrag Re: Kein Erkennen verschobener Dateien
am February 26, 2018, 21:26
Zitat

Ich habe spaßeshalber mal mit Python die index.hbi eingelesen und daraus ein dictionary gemacht:

import re, sys
from datetime import datetime

checksums = {}
start = datetime.now()

print("Reading file...")
i = 0
with open('index.hbi', 'rt', encoding='latin-1') as file:
  for line in file:
    name = re.search(r'name="(.*?)"', line)
    checksum = re.search('checksum="(.*?)"', line)
    if name and checksum:
      checksums[checksum.group(1)] = name.group(1) + name.group(1) + name.group(1) + name.group(1) + name.group(1) + name.group(1) + name.group(1) + name.group(1) + name.group(1) + name.group(1)
      # added the name several times because I don't read directory information and I want more realistic lengths.
      i += 1
      if i % 10000 == 0:
        print('Read {:,d} checksums'.format(i))
      
print("Size of dictionary: {:,d}, ({:,d} elements)".format(sys.getsizeof(checksums), len(checksums)))
end = datetime.now()
print("Duration: {}".format(end - start))
start = datetime.now()
print("Now try to identify some checksums...")
print(checksums['53e04d59389b35d8308c265630a4bcb4f29c5ce06c6377a12c41e87e802fbb94'])
print(checksums['aa38e98bbfd6b7440536e87c85b49d432e80f4d057a4915be866c023b2399b88'])
print(checksums['563e063321190a5cc17ba69df586ee5eeb833883571f147a01abe0692ce92597'])
end = datetime.now()
print("Duration: {} microseconds.".format((end - start).microseconds))
input("ENTER to continue...")

Python braucht dafür laut Task-Manager ca. 135 MB bei 413.000 Dateien. Das Einlesen dauert bei mir etwa 6 Sekunden. Der Zugriff auf Checksummen (quer in der Datei verteilt) geht so schnell, dass Windows inkl. Ausgabe nur etwa 1000 mikrosekunden benötigt.

135 MB finde ich jetzt nicht so schrecklich viel. Wie groß ist denn dein Cache, der die Checksummen vorhält?

BTW: In der document type definition https://www.lupinho.net/dtd/fileindex.dtd fehlt übrigens die Definition für "hardlink".

lupinho
Administrator
Beiträge: 711
Permalink
avatar
Beitrag Re: Kein Erkennen verschobener Dateien
am February 26, 2018, 22:39
Zitat

Was willst Du mir sagen? Dass man einen File-basierten look-up implementieren kann ist mir schon klar. Ich habe für das nächste größere Release auch etwas in der Art eingebaut. Ich habe mich halt damals für einen In-Memory-Cache entschieden. Die Größe ist nur insofern relevant, wenn viele Dateien "weit auseinander" liegen (bezüglich der Abarbeitungsreihenfolge von HardlinkBackup).
Bei Deinem Problem ist mir ja noch nichtmal klar, ob die Dateien noch ersetzt werden würden. Es wäre sehr hilfreich, wenn das entsprechende Backup durchlaufen könnte, d.h. es müsste entsprechend genug Speicherplatz im Ziel vorhanden sein. Falls die Cachegröße eine Rolle spielt, könnten ich die erhöhen. Das ganze Verfahren kann ich vermutlich in einem Wartungsrelease nicht einfach so komplett umbauen...

Yo
Neuling
Beiträge: 14
Permalink
avatar
Beitrag Re: Kein Erkennen verschobener Dateien
am February 26, 2018, 23:02
Zitat

Das ganze Verfahren kann ich vermutlich in einem Wartungsrelease nicht einfach so komplett umbauen...

Das ist klar 😉 Was will ich sagen: Mein Problem sollte kein Problem sein. Mich hat mal interessiert, wie groß so ein Cache wäre und wie schnell er arbeitet. Ja, ich wüsste auch gern, ob die Dateien später noch umbenannt würden.

Du könntest ja eine Version zusammenstricken, die hin und wieder ins Log schreibt, wie viele Checksummen sich aktuell im Cache zum Vergleichen befinden... Oder so... Ich würde dem Problem auch gern auf den Grund gehen.

Welche Möglichkeiten habe ich, dass das Backup mal durchläuft? Hast du Ideen? Mir fällt ggf. folgendes ein, sag mal, ob ich da Denkfehler habe:

    Größere Festplatte als Ziellaufwerk kaufen.
    Könnte ich in den Backup-Einstellungen auch einfach bei auszuschließenden Dateien einen Großteil der Ordner ausschließen?
    Ich verschiebe haufenweise Daten vom Quelllaufwerk irgendwoanders hin.

Ich befürchte nur, dass man mit Punkten 2 und 3 schon so viel verändert, dass es kein echter "Test" mehr ist. Ich habe leider keine größere Festplatte parat, die müsste ich erst kaufen, und nur zum Testen fänd ich das etwas übertrieben...
Hast du noch Ideen, was ich machen kann?

Yo
Neuling
Beiträge: 14
Permalink
avatar
Beitrag Re: Kein Erkennen verschobener Dateien
am February 27, 2018, 19:11
Zitat

Wenn die Checksummen der kopierten Dateien im Log stünden, könnte ich in der index-Datei vom letzten Backup danach suchen. Vielleicht ist das ja schon mal aufschlussreich.

PS: Ich kann meine Beiträge nicht editieren. Es wird zwar abgesendet, aber dann ist der Beitrag noch wie vorher. Liegt's an mir? Browser: Vivaldi 1.14.1064.3 (Offizieller Build) (64-Bit)

lupinho
Administrator
Beiträge: 711
Permalink
avatar
Beitrag Re: Kein Erkennen verschobener Dateien
am February 28, 2018, 16:08
Zitat

Sorry, dass ich erst jetzt zum antworten komme:
Du kannst es mit einem eingeschränkten Backupsatz probieren (vorher abgebrochene Backups per Hand löschen). Allerdings brauchen wir noch "genügend" verschobene Dateien, um zu sehen, ob welche nicht erkannt werden, weil der Cache zu klein ist.
Bzgl. der Checksummen: Die stehen ja auch in der neuen Index-Datei. Solange das Backup noch am Laufen ist, wird die Index-Datei unter "C:\ProgramData\Lupinho.Net\HardlinkBackup\CachedBackupSets" local gecached. Allerdings wird die Datei beim Abbruch wieder gelöscht; außerdem wird die Index-Datei verzögert geschrieben (nicht sofort, wenn die Datei kopiert wurde). Daher müsste eben mal ein Backup durchlaufen.

PeterP
Neuling
Beiträge: 16
Permalink
avatar
Beitrag Re: Kein Erkennen verschobener Dateien
am March 2, 2018, 07:55
Zitat

Zitat von lupinho am February 26, 2018, 22:39Falls die Cachegröße eine Rolle spielt, könnten ich die erhöhen.

Das, im Rahmen einer Testversion, könnte doch auch schon Aufschluss geben, oder?

Yo
Neuling
Beiträge: 14
Permalink
avatar
Beitrag Re: Kein Erkennen verschobener Dateien
am March 5, 2018, 21:20
Zitat

Was auch immer ich versuche, es scheitert, da ich nicht genug Platz frei habe. 🙁 Wie es scheint brauche ich eine weitere/größere externe Festplatte...

Mal eine Frage: Wie finde ich heraus, wie viel Speicher freigegeben wird, wenn ich einen bestimmten Backupsatz lösche? Also, im Grunde müsste man ja die Anzahl an Bytes aller Dateien aufsummieren, auf die es im Dateisystem keine weiteren Links gibt. Geht das? Oder hat HLB diese Funktionalität irgendwo und ich finde sie nicht?

lupinho
Administrator
Beiträge: 711
Permalink
avatar
Beitrag Re: Kein Erkennen verschobener Dateien
am March 5, 2018, 21:27
Zitat

Wenn der Platz soo knapp ist, macht es Sinn, für mehr Speicher zu sorgen.
Im HardlinkBackup Installationsverzeichnis findest Du ein Kommandozeilen-Tool „DirInfo“ mit dem Du den Speicherplatz ermitteln kannst, der beim Löschen freigegeben würde.

Seiten: 1 [2] 3
Mingle Forum by cartpauj
Version: 1.0.34 ; Die Seite wurde geladen in: 0.076 Sekunden.