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 OS에서는 다음과 같습니다.

rsync -avRL --files-from=<(find ${BACKUP}/backup/symlinks/ -exec readlink {} \;) / /${BACKUP}/backup/data/

find명령이 올바른 절대 경로를 출력한다고 가정합니다 . 그것은 ${BACKUP}절대적인 디렉토리입니다.

관련 정보