Ich habe eine Situation, in der ich 2 große Verzeichnisbäume habe, einen old
und einen new
. Die meisten Dateien sind gleich, aber einige sind anders und/oder fehlen in der alten Version. Ich würde gerne einen Weg finden, automatisch eine Tar-Datei zu erstellen, die Folgendes enthält:
a) alle Dateien in new
, die nicht in sind b) alle Dateien, die sich zwischen und old
unterscheidennew
old
Dateien, die nur in vorhanden sind, old
sollten ignoriert werden. Symbolische Links müssen beibehalten werden. „Unterschiedlich“ muss durch einen vollständigen binären Vergleich bestimmt werden.
Wie Sie sich vielleicht denken können, versuche ich, einen Patch zu erstellen, um einen Baum mit einem anderen abzugleichen. Vielleicht gibt es bereits ein Tool dafür, oder ich muss einige Befehle aneinanderreihen.
Ich arbeite mit Ubuntu Linux.
Antwort1
Ich fand einige Ideen aufdieser Beitragwie man eine Liste der unterschiedlichen Dateien erhält. Ich habe mich für einen rsync-Ansatz mit der --dry-run
Option entschieden:
rsync -rv --dry-run --size-only --links old/ new/
Nachdem ich die Liste der Dateien hatte, habe ich tar mit diesen Dateien aufgerufen. Dies hat das Problem der Unterscheidung von Dateien nur an einer Stelle gegenüber der anderen nicht vollständig gelöst, aber mit etwas manuellem Eingreifen habe ich es zum Laufen gebracht. Ich wünschte, ich hätte eine vollständig automatisierte Lösung gefunden, aber ich konnte mein unmittelbares Problem mit diesen allgemeinen Schritten lösen.