마운트된 디스크에서 원격으로 마운트된 다른 디스크로 "복제"합니다. 나는 그들을 로컬과 원격이라고 부를 것이다. 로컬은 슬랙웨어, 원격 우분투는 로컬
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
코드에서는 이를 rsync
with 에 전달합니다 $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를 사용하여 수정했습니다.