Effectuer rsync en suivant les liens sym

67

J'ai un répertoire qui contient des liens symboliques vers d'autres répertoires situés sur différents supports de mon système:

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

Mais les liens symboliques apparaissent comme:

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

Comment puis-je effectuer un rsyncsuivi des liens symboliques?

par exemple:

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

piéger
la source

Réponses:

98

Le -Ldrapeau de rsync synchronisera le contenu des fichiers ou des répertoires liés, plutôt que le lien symbolique.

Chapelier Fou
la source
1
Lorsque je le fais, tous les liens symboliques du récepteur sont supprimés et mon expéditeur commence à renvoyer les fichiers.
Pris au piège
N'est-ce pas ce que tu veux? Je pensais que vous vouliez avoir les vrais fichiers du côté de la réception, pas seulement les liens symboliques. Voulez-vous dire que vous voulez que les liens symboliques soient copiés en tant que liens symboliques, mais réécrits automatiquement pour indiquer le "bon" emplacement sur le système récepteur? Si tel est le cas, ce n'est pas ce que l'on entend normalement par "un rsync qui suit les liens symboliques".
MadHatter
4
Salut - ce sont des répertoires. Je dois travailler avec le drapeau -K.
Pris au piège
4
Je suis sûr que SO me rend plus stupide ..
John Hunt
4
Pour clarifier, -LKsi vous voulez suivre à la fois les fichiers et les répertoires liés par un lien symbolique
Mahn
17

Je viens de rencontrer ce problème. Et si vous voulez que rsync traite les répertoires liés par un lien comme des répertoires, vous voulez l' Koption

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

Jmeyering
la source
Vous pourriez également vouloir ajouter l'option --copy-unsafe-links
Gregory Magarshak
2

Vous avez besoin des deux -L et -Ksi vous avez des liens symboliques des deux côtés, par exemple, vous avez déjà effectué votre 1 er rsync et souhaitez mettre à jour la sauvegarde à l'aide de rsync.

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

Dans ce cas, si vous utilisez uniquement -L, les liens symboliques situés du côté du récepteur seront supprimés et un nouveau répertoire réel sera créé.

HongboZhu
la source