Löscht rsync standardmäßig Dateien und Ordner am Zielort?

44

Dateien

Angenommen, das /foo/srcenthält nur A.cund das /foo/destenthält beide A.cund B.c. Angenommen, ich führe den folgenden Befehl aus:

rsync /foo/src/ /foo/dest

Wird rsynclöschen B.c?

Ordner

Nehmen wir nun an, dass /foo/srcdas Verzeichnis Aeinige Dateien /foo/destenthält und dass beide Verzeichnisse Aund Bjeweils einige Dateien enthalten. Angenommen, ich führe den folgenden Befehl aus (die Option -a enthält -r, rekursiv):

rsync -a /foo/src/ /foo/dest

Wird rsynclöschen Bund seinen Inhalt?

Pulver
quelle
Du brauchst den --deleteSchalter.
Fideli

Antworten:

51

Standardmäßig löscht rsync keine Dateien, dies hängt jedoch von den von Ihnen angegebenen Befehlsoptionen ab. Sie können Folgendes verwenden, wenn Sie Dateien löschen möchten:

  • −−del (Alias ​​für −−delete − during)
  • −−delete (löscht fremde Dateien aus dem Zielverzeichnis)
  • −−delete − before (Empfänger löscht vor xfer [default])
  • −−delete − during (Empfänger löscht während xfer, nicht vorher)
  • −−delete − after (Empfänger löscht nach xfer, nicht vorher)
  • −−delete − excluded (löscht auch ausgeschlossene Dateien aus dem Zielverzeichnis)
  • −−max − delete = NUM ​​(lösche nicht mehr als NUM Dateien)

Da Sie speziell die Option -a aufgerufen haben, heißt es auf der Manpage:

−a, −−archive >

Dies entspricht −rlptgoD . Es ist eine schnelle Möglichkeit zu sagen, dass Sie eine Rekursion wollen und fast alles erhalten wollen (wobei −H eine bemerkenswerte Auslassung ist). Die einzige Ausnahme zu der obigen Äquivalenz besteht darin, dass −−files − from angegeben wird. In diesem Fall wird −r nicht impliziert.

Beachten Sie, dass -a keine Hardlinks beibehält , da das Auffinden mehrfach verknüpfter Dateien teuer ist. Sie müssen −H separat angeben .

Die Antwort auf Ihre Frage scheint also NEIN zu sein. Sie wird anhand Ihrer Beispiele nicht gelöscht.
HTH

SaxDaddy
quelle