Estamos usando links simbólicos para criar árvores de pastas / arquivos "virtuais" usando o conteúdo de todo o disco. Em essência, temos uma bagunça e um script criará uma árvore de arquivos organizada criando links simbólicos para esses arquivos desorganizados originais, ao mesmo tempo em que obtém os nomes dos arquivos, etc.
Feito isso, queremos sincronizar essa árvore de arquivos "virtual" com um servidor remoto, para que possamos usar o rsync com o --copy-links
param.
O problema que encontramos é que o rsync ignora completamente quaisquer alterações nos nomes dos links simbólicos. Então, por exemplo:
mkdir export # make a dir for export
ln -s /file.jpg export/fileLink.jpg # create a link to file.jpg
rsync --copy-links -avzhs --delete export/ /tmp/rsyncExport # rsync with an export dir
ls /tmp/rsyncExport/
fileLink.jpg
# we find our file (not a symlink) with the symlink name.
Até aí tudo bem, mas se mudarmos o nome do link e re-sincronizarmos:
rm export/fileLink.jpg
ln -s /file.jpg export/fileLink2.jpg # create a link to file.jpg but with another name
rsync --copy-links -avzhs --delete export/ /tmp/rsyncExport # rsync again
ls /tmp/rsyncExport/
fileLink.jpg
# we find our file (not a symlink) with the old symlink name and not the new one.
Obviamente o rsync "segue" o link e o arquivo não mudou, então ele simplesmente ignora o fato de que o link é diferente.
Existe alguma maneira de corrigir o comportamento acima?
Obrigado pela sua ajuda.
Tags symbolic-link sync rsync linux