Synchronisieren Sie zwei lokale Ordner in Bash

Synchronisieren Sie zwei lokale Ordner in Bash

Ich habe einen großen Ordner „X“ in meinem Home-Verzeichnis und eine veraltete Kopie davon auf einem Flash-Laufwerk – Y. Was ist das Analogon zu rm Y; cp X Y, jedoch ohne bereits vorhandene Dateien zu überschreiben?

Antwort1

Es gibt noch viele weitere Eigenschaften zursyncals in der vorherigen Antwort erwähnt. Sie sollten sich diese selbst ansehen:

man rsync

Aber für Ihr Problem würde ich vorschlagen:

rsync -a --delete X Y

Auf diese Weise löscht der Empfänger (Y) alle Dateien, die sich nicht in X befinden. Achten Sie jedoch darauf, dass Sie es richtig machen. Falsche Verwendung als Root kann Ihr System leicht zerstören ... :)

Antwort2

Schauen Sie sich anrsync(1). Es soll so ziemlich genau das tun, was Sie wollen.

rsync -av X Y

Es unterstützt Remote-Kopieren über ein eigenes Protokoll oder SSH, kann aber auch lokal verwendet werden.

Abhängig vom gewünschten Verhalten möchten Sie diese --updateOption möglicherweise auch übergeben. Dadurch wird rsync angewiesen, keine Dateien zu überschreiben, die bereits auf dem Ziel vorhanden und neuer als die in der Quelle sind.

Wenn Sie zusätzliche Dateien entfernen möchten (d. h. Dateien, die in Y, aber nicht in X vorhanden sind), können Sie die --deleteOption hinzufügen.

Antwort3

Sie könnten verwendenFitus/Zaloha.sh. Es berechnet zunächst die notwendigen Synchronisationsaktionen, präsentiert sie Ihnen, fragt nach einer Bestätigung und führt sie dann aus:

$ Zaloha.sh --sourceDir="X" --backupDir="Y"

Antwort4

Ich denke, dass einige der Funktionen, die Sie in der Option -u (Update) suchen, tatsächlich in dieser Option vorhanden sind:

"--ignore-existing" - Überspringen der Aktualisierung von Dateien, die auf dem Empfänger vorhanden sind

verwandte Informationen