所以,我试图在传输文件时保留同步链接结构,所以我的文件夹结构:
$HOME/backup/backup/symlinks
- $HOME/Documents/hello.txt
$HOME/backup/backup/data
现在,当我同步时,我想保留符号链接的完整文件夹结构。
它现在做什么:
$HOME/backup/backup/symlinks
- $HOME/Documents/hello.txt
$HOME/backup/backup/data
- hello.txt
我想要它做什么
$HOME/backup/backup/symlinks
- $HOME/Documents/hello.txt
$HOME/backup/backup/data
- /home/user/Documents/hello.txt (aka, create the full structure inside the backup/data folder)
因此,我想在数据文件夹内创建一个完整路径,指向原始符号链接内容的来源。
我已经尝试过以下方法:
rsync -a ${BACKUP}/backup/symlinks/ /${BACKUP}/backup/data/
rsync -aK ${BACKUP}/backup/symlinks/ /${BACKUP}/backup/data/
rsync -aKL ${BACKUP}/backup/symlinks/ /${BACKUP}/backup/data/
rsync 可以做到这一点吗?如果是这样,我怎样才能实现这一目标。
答案1
我认为您需要首先解析链接,然后对各个文件运行 rsync。这样它就可以通过-R
. IE。在 Linux 上试试这个:
rsync -avRL --files-from=<(find ${BACKUP}/backup/symlinks/ -exec readlink -f {} \;) / /${BACKUP}/backup/data/
Mac 操作系统上是这样的:
rsync -avRL --files-from=<(find ${BACKUP}/backup/symlinks/ -exec readlink {} \;) / /${BACKUP}/backup/data/
它假设该find
命令输出正确的绝对路径,即。那${BACKUP}
是一个绝对目录。