rsync问题:如何同步符号链接指向的文件夹中的文件?

时间:2019-02-06 16:24:18

标签: rsync symlink

我有两台具有相同目录结构的Linux机器,我正在尝试同步/home/inkjet中的2个目录。目录之一是实际目录,而一个是目录的符号链接。两台计算机上的/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

如果我在客户端上使用-r --delete选项运行rsync:

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 :(得分:0)

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/