Rsync 완벽한 사본: 소프트 링크는 ..dir이 됩니다.

Rsync 완벽한 사본: 소프트 링크는 ..dir이 됩니다.

마운트된 디스크에서 원격으로 마운트된 다른 디스크로 "복제"합니다. 나는 그들을 로컬과 원격이라고 부를 것이다. 로컬은 슬랙웨어, 원격 우분투는 로컬

df -h /mnt/
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/fedora-root   49G  4.3G   43G  10% /mnt

원격으로

 df -h /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk1p2   57G  7.2G   47G  14% /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29

로컬에서 이 명령을 사용한 후 rsync가 작업을 올바르게 완료하지 못하는 것을 발견했습니다.

cd /mnt
 for i in * ;do rsync -avP --delete --ignore-errors $i/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/$i; done

예를 들어 로컬에서 봅니다.

file bin
bin: symbolic link to usr/bin

그리고 원격으로...

file /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/bin/
/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/bin/: directory

저장소를 원격으로 파기하고 심볼릭 링크(로컬로)가 되어야 합니다. rsync에 대한 옵션은 무엇입니까? 사용:

rsync -avPl rsync -rvPl

작동하지 않습니다

답변1

-l( ) 옵션은 ( ) 에 의해 암시되지만 -links대상 디렉토리가 심볼릭 링크가 되도록 하려면 -K ( )도 필요합니다. 기존 구조를 수정해야 할 수도 있습니다.-a--archive--keep-dirlinks--delete-before

rsync -avKP --delete --ignore-errors src/ 192.168.0.75:dst/

/bin원본 코드를 더 자세히 살펴보면 및 를 포함하여 지금 보이는 서버의 최상위 수준을 반복하고 있습니다 /usr. 이 경우에는 /bin심볼릭 링크이지만 /usr/bin코드에서는 이를 rsyncwith 에 전달합니다 $i/. 이는 와 동일합니다 /bin/. 따라서 역참조했기 rsync때문에 심볼릭 링크로 취급하지 마십시오 $i/.

for루프를 제거 하고 rsync전체 디렉토리 트리 자체를 처리하게 하면 최상위 심볼릭 링크를 보고 올바르게 전송할 수 있습니다.

답변2

훌륭한 "해결 방법"을 찾았습니다.

하는 대신

cd /mnt
 for i in * ;do rsync -avXHhP --delete --ignore-errors $i/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/$i; done

그래요

rsync --avXHhP --delete --ignore-errors /mnt/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29 ; done

작동하며 디렉토리는 심볼릭 링크에서도 동일합니다.

편집: 백업 부팅에 더 유리한 -avXHhP를 사용하여 수정했습니다.

관련 정보