Ho esaminato attentamente la manpage di rsync e diverse domande correlate qui su serverfault. Ho giocato con le opzioni -R e -L e -l, ma senza fortuna.
Ecco la domanda:quando si invia una directory da locale a remota, esiste un'opzione (o una combinazione di opzioni) che riposiziona i collegamenti simbolici relativi alla directory locale in modo che diventino relativi alla directory di destinazione sulla macchina remota?
Ecco un esempio minimo di ciò che voglio inviare:
dir locale: /home/bob/foo
/home/bob/foo/a --> /home/bob/foo/bar
/home/bob/foo/bar
ed ecco come vorrei che si concretizzasse nel
directory remota: /u/apps/foo
/u/apps/foo/a --> /u/apps/foo/bar
/u/apps/foo/bar
Ad esempio, rsync -az /home/bob/foo/ remote:/u/apps/foo/
non lo fa del tutto; finiamo con:
/u/apps/foo/a --> /home/bob/foo/bar
/u/apps/foo/bar
Sia /home/bob/foo/bar
esiste o meno sulla macchina remota è irrilevante; in entrambi i casi, il risultato non è sicuramente quello di cui ho bisogno.
Risposta accettata:
Se i collegamenti sono a percorsi assoluti, no, non c'è modo di aggirarlo. Puoi aggirarlo rendendo relativi i collegamenti simbolici:
/home/bob/foo/a --> ./bar /home/bob/foo/bar
ma potrebbe rivelarsi difficile, a seconda di come generi quei link e quanti ce ne sono.