그래서 파일을 전송할 때 동기화 링크 구조를 유지하려고 하므로 폴더 구조는 다음과 같습니다.
$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}
절대적인 디렉토리입니다.