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 von rm Y; cp X Y, aber ohne bereits vorhandene Dateien zu überschreiben?

 24
Author: Journeyman Geek, 2012-04-08

5 answers

Es gibt viel mehr Eigenschaften zu rsync als die vorherige Antwort erwähnt. Sie sollten selbst in sie schauen:

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) jede Datei, die sich nicht in X befindet. Seien Sie sicher, dass Sie es richtig machen. Falsch verwendet als root kann Ihr System leicht töten... :)

 26
Author: Mattias Åslund,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-04-09 12:42:22

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

rsync -av X Y

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

Abhängig vom genauen Verhalten möchten Sie möglicherweise auch die Option --update. Dadurch wird rsync angewiesen, Dateien, die bereits auf dem Ziel vorhanden und neuer als die in der Quelle sind, nicht zu überschreiben.

Wenn Sie zusätzliche Dateien entfernen möchten (dh Dateien, die in Y, aber nicht in X) Sie können die Option --delete hinzufügen.

 16
Author: Kristof Provost,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-04-09 12:42:09

Versuchen Sie es mit rsnyc, möglicherweise mit dem folgenden Befehl:

rsync -avzu /home/x /y

-u = überschreiben Sie eine Datei nicht am Ziel, wenn sie geändert wird

 0
Author: bwDraco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-07-12 19:38:37

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

"--ignore-existing " - Überspringen Sie das Aktualisieren von Dateien, die auf dem Empfänger vorhanden sind

 0
Author: promet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-01-25 00:21:13

Sie können Fitus/Zaloha.sh. Es berechnet zuerst die notwendigen Synchronisierungsaktionen, präsentiert sie Ihnen, bittet um Bestätigung und führt sie dann aus:

$ Zaloha.sh --sourceDir="X" --backupDir="Y"
 0
Author: Petas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-07-10 21:33:24