rsync вопрос: как синхронизировать файлы в папке, на которую указывает символическая ссылка? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть две машины linux с одинаковой структурой каталогов, и я пытаюсь синхронизировать 2 директории в /home/inkjet.Один из каталогов является фактическим каталогом, а другой - символической ссылкой на каталог.Папка /home/inkjet выглядит так на обеих машинах:

ls -l /home/inkjet
drwxr-xr-x    2 root     root          1024 Aug 16 17:44 other
drwxrwxrwx    2 root     root          1024 Aug 17 06:21 bmps
lrwxrwxrwx    1 root     root            22 Aug 17 05:39 fnts -> /usr/local/inkjet/fnts

На машине под управлением rsync --daemon есть следующее /etc/rsyncd.conf:

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
port = 12000

[files]
path = /home/inkjet
comment = RSYNC FILES
read only = no
hosts allow = 192.168.4.1

Если я запускаю rsync сОпции -r --delete на клиенте:

rsync -r --delete /home/inkjet/bmps /home/inkjet/fnts rsync://192.168.4.94:12000/files
skipping non-regular file "fnts"

Папка /home/inkjet/bmps работает нормально, но папка /home/inkjet/fnts не работает, потому что это символическая ссылка.Если я добавлю опции --copy-dirlinks и --keep-dirlinks:

rsync -rkK --delete /home/inkjet/prds /home/inkjet/fnts rsync://192.168.4.94:12000/files
rsync: delete_file: unlink(fnts) failed: Permission denied (13)
could not make way for new directory: fnts

Какие опции необходимы для синхронизации файлов в /home/inkjet/fnts (->/usr/local/inkjet/fnts) (без создания другого модуля /usr/local/inkjet и запуска на нем rsync тоже)?

Спасибо

1 Ответ

0 голосов
/ 11 февраля 2019

Когда вы rsync каталогах, вы всегда должны добавлять трейлинг /.Отчасти это происходит из-за того, что последующие синхронизации не пытаются создать новый каталог внутри более старого каталога, а отчасти, чтобы избежать этой проблемы.

К сожалению, при синхронизации нескольких каталогов это значение отличается, поэтому вам необходимо использоватьнесколько команд:

rsync -rkK --delete /home/inkjet/fnts/ rsync://192.168.4.94:12000/files/fnts/
rsync -rkK --delete /home/inkjet/prds/ rsync://192.168.4.94:12000/files/prds/
...