Führen Sie rsync aus, während Sie sym-Links folgen

67

Ich habe ein Verzeichnis, das symbolische Links zu anderen Verzeichnissen enthält, die sich auf verschiedenen Datenträgern meines Systems befinden:

/opt/lun1/2011
/opt/lun1/2010
/opt/lun2/2009
/opt/lun2/2008
/opt/lun3/2007

Die symbolischen Links werden jedoch wie folgt angezeigt:

/files/2011
/files/2010
/files/2009
/files/2008
/files/2007

Wie kann ich ein ausführen rsync, das den symbolischen Links folgt?

z.B:

rsync -XXX /files/ user@server:/files/

ensnare
quelle

Antworten:

98

Das -LFlag für rsync synchronisiert den Inhalt der verknüpften Dateien oder Verzeichnisse und nicht den symbolischen Link.

MadHatter
quelle
1
Wenn ich dies tue, werden alle symbolischen Empfängerlinks gelöscht und mein Absender beginnt, die Dateien erneut zu senden.
ensnare
Willst du das nicht? Ich dachte, Sie wollten die echten Dateien auf der Empfängerseite haben, nicht nur die Symlinks. Wollen Sie, dass die Symlinks als Symlinks kopiert, aber automatisch neu geschrieben werden, um auf die "richtige" Stelle im empfangenden System zu verweisen? Wenn ja, ist das normalerweise nicht mit "rsync, das den symbolischen Links folgt" gemeint.
MadHatter
4
Hallo - das sind Verzeichnisse. Ich habe dies mit der -K-Flagge arbeiten.
ensnare
4
Ich bin sicher, SO macht mich mehr dumm ..
John Hunt
4
Um zu verdeutlichen, -LKob Sie sowohl verknüpften Dateien als auch Verzeichnissen folgen möchten
Mahn
17

Bin gerade auf dieses Problem gestoßen. Und wenn Sie möchten, dass rsync verknüpfte Verzeichnisse als Verzeichnisse behandelt, möchten Sie die KOption

rsync -K /files/ user@server:/files/

Jmeyering
quelle
Vielleicht möchten Sie auch die Option --copy-unsafe-links hinzufügen
Gregory Magarshak
2

Sie brauchen beides -L und -Kwenn Sie Symlinks auf beiden Seiten haben, z. B. hatten Sie bereits Ihren 1. rsync und möchten das Backup mit rsync aktualisieren.

    -L, --copy-links            transform symlink into referent file/dir
    -K, --keep-dirlinks         treat symlinked dir on receiver as dir

In solchen Fällen werden, wenn Sie nur verwenden -L, die Symlinks auf der Empfängerseite gelöscht und es wird ein neues Echtverzeichnis erstellt.

HongboZhu
quelle