Das Ignorieren der rsync-Dateiduplizierung funktioniert nicht wie erwartet

Das Ignorieren der rsync-Dateiduplizierung funktioniert nicht wie erwartet

Ich bin verwirrt über die Funktionsweise von rsync. Hier ist, was ich getan habe und was ich erwartet habe.

Ich habe zwei Ordner mit den Namen „sbck“ und „dbck“ erstellt.

Szenario 1:

Ich habe eine Datei mit dem Namen erstellt a.txtund eine Kopie davon mit erstellt cp -rp a.txt aa.txt. Ich habe beide Dateien in sbckeinem Ordner abgelegt. Als nächstes habe ich getan rsync -rvch sbck/ dbck/. Dadurch wurden beide Dateien in dbck verschoben.

Frage: Da sowohl a.txt als auch aa.txt gleich sind, warum lässt rsync diese Kopie zu? Sollte es nicht nur eines von beiden sein?

Szenario 2:

Ich habe eine Datei mit dem Namen erstellt a.txtund eine Kopie davon mit erstellt cp -rp a.txt aa.txt. Ich habe beide Dateien in sbckeinem Ordner abgelegt. Als Nächstes habe ich getan cp -rp sbck/a.txt dbck/. Später habe ich getan rsync -rvch sbck/ dbck/. Dadurch wurde die aa.txtin dbck verschoben.

Frage: Da sowohl a.txt als auch aa.txt gleich sind und ich a.txt bereits nach dbck verschoben habe. Warum erlaubt rsync das Kopieren von aa.txt nach dbck? Wie genau hilft mir -c in diesem Szenario?

Antwort1

Ich glaube, Sie verstehen nicht, was das -ctut. rsyncführt keine Dateideduplizierung durch, mit oder ohne die -cOption. -cEs ändert lediglich, wie rsyncentschieden wird, ob eine Datei am Ziel aktualisiert werden muss.

Angenommen sbck/a.txtund dbck/a.txt, und Sie führen aus rsync -rvh sbck/ dbck/(Hinweis: keine -cOption). Dabei rsyncwerden die Größe und Änderungszeit dieser beiden Dateien verglichen. Wenn sie übereinstimmen, wird davon ausgegangen, dass auch der Inhalt der Dateien übereinstimmt, und das Kopieren nach wird nicht sbck/a.txtdurchgeführt dbck/a.txt.

Nehmen wir nun an, Sie führen rsync -rvch sbck/ dbck/(mit -cdieser Zeit) aus. Dieses Mal rsyncberechnet Prüfsummen von sbck/a.txtund dbck/a.txtund verwendet diese (anstelle ihrer Größe und Mod-Zeiten), um zu bestimmen, ob die Dateien gleich sind und daher der neue Inhalt von sbck/a.txtnicht nach kopiert werden muss dbck/a.txt. Es vergleicht die Prüfsumme von nicht sbck/a.txtmit der einer anderen Datei im Quell- oder Zielbaum.

verwandte Informationen