Kopieren von Dateien und Erstellen von Hardlinks anstatt Kopieren, wenn Dateien identisch sind

3

Gibt es irgendwelche Tools für Windows, die das können?

  • kopiere ein Verzeichnis in ein anderes
  • kopierten Inhalt lesen
  • MD5 erzeugen
  • Wenn die aktuelle Datei mit einer zuvor kopierten identisch ist, erstellen Sie einen Hardlink im Zielverzeichnis, anstatt den Inhalt zu schreiben.
est
quelle

Antworten:

5

Wenn Sie den Inhalt kopieren, um ihn unmittelbar danach zu verknüpfen, können Sie die Hardlinks nicht gleich sofort generieren. Link Shell-Erweiterung macht diesen Job einfach.

Wenn es einen Grund gibt, warum Sie diese bestimmte Abfolge von Aktionen durchlaufen müssen, hat der Autor von LSE auch ein Befehlszeilentool geschrieben Dupemerge fast genau das zu tun, was Sie fragen.

Dabei ist zu beachten, dass NTFS keine Semantik "Kopieren beim Schreiben" für Hardlinks ausführt. Wenn etwas den Inhalt einer Datei ändert, werden alle Versionen mit festem Link sofort "aktualisiert", da sie alle Verzeichniseinträge mit demselben Datenumfang auf der Festplatte enthalten. Darüber hinaus führen viele Programme eine Prozedur zum Speichern in eine temporäre Datei, zum Löschen des Originals und zum Umbenennen des alten in einen alten Namen durch, anstatt eine Datei zu überschreiben. Dadurch werden andere Hardlinks zu den Daten wirksam, da sie auf den alten Datenumfang verweisen.

afrazier
quelle
& gt; Warum nicht gleich die Hardlinks generieren? weil es sich um zwei Festplatten handelt, eine davon herausnehmbar ist, die andere über einen begrenzten freien Speicherplatz verfügt
est
1
Sie sollten Ihre Frage mit Ihren Einschränkungen und der jeweiligen Reihenfolge der Aktionen, die Sie ausführen möchten, bearbeiten. Sind Sie sicher, dass es genügend doppelte Dateien gibt, um das zu tun, was Sie möchten? Wenn ja, könnten Sie verwenden dupemerge auf der Quelle, dann LSE oder es ist CLI-Begleiter ln So erstellen Sie eine Smart Copy, die die inneren Verbindungen beibehält.
afrazier
du an der Quelle ist eine gute Idee. danke: D
est
1

Sie können dies mit FINDDUPE tun, das Sie finden können Hier .
Erwägen src als Quellordner und dest Als Zielordner können Sie Folgendes tun:

xcopy /I /E src dest
finddupe -hardlink -ref src dest

Hinweis: Hardlinks funktionieren nur unter NTFS

qwertzguy
quelle
danke, ich kenne finddupe, aber das HDD-Ziel hat begrenzten freien Speicherplatz und Quell-HDD haben viele Dup-Dateien. Wie kann man VOR der Kopie prüfen?
est
Ich glaube nicht, dass Sie Hardlinks zwischen zwei verschiedenen Festplatten erstellen können. Wollen Sie das tun?
qwertzguy
Kopieren Sie Dateien auf eine andere Festplatte, wenn Sie dup verwenden, erstellen Sie einen Hardlink, anstatt Inhalte zu kopieren.
est
1
Ah ok ... jetzt habe ich es verstanden: Du willst doppelte Dateien prüfen, dann nur Nicht-Duplikate kopieren und Hardlinks machen, um den Rest der Dateien wiederherzustellen. Nun können Sie verwenden finddupe -bat find.bat src Dann entfernen Sie in der erstellten Datei find.bat alle del-Zeilen, erstellen Sie eine eindeutige Liste der fest verbundenen Dateien (letzter Parameter von fsutil), kopieren Sie diese Dateien und führen Sie das Skript aus. Natürlich wäre ein Skript dazu am besten, aber ich habe jetzt keine Zeit dafür.
qwertzguy