我有两台具有相同目录结构的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)?
谢谢
答案 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/