Rsync 保留完整的符号链接目录结构

Rsync 保留完整的符号链接目录结构

所以,我试图在传输文件时保留同步链接结构,所以我的文件夹结构:

$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}是一个绝对目录。

相关内容