rsync를 사용하여 기존 대상 심볼릭 링크 유지


10

rsync (1) 을 사용하여 로컬 데비안 저장소를 업데이트했습니다. 최근에 디스크를 저장하는 데 사용하는 디스크 공간이 부족해지기 시작했기 때문에 일부 디렉토리를 비슷한 크기의 다른 디스크로 옮길 수 있도록 심볼릭 링크를 사용하기로 결정했습니다.

불행히도 rsync가 심볼릭 링크를 삭제하고 거의 전체 디스크를 채우는 것 같습니다. 검색 한 후 --keep-dirlinksrsync 옵션을 발견했습니다.이 옵션은 내 문제를 해결하기 위해 맞춤형으로 보입니다.

그렇지 않습니다. 대상의 심볼릭 링크가 여전히 삭제되고 있습니다.
내 rsync 명령은 다음과 같습니다.

rsync --recursive --keep-dirlinks --links --hard-links --times --verbose \
 --delete --delete-excluded $EXCLUDE $SOURCE_EXCLUDE \
 $RSYNC_HOST::$RSYNC_DIR/pool/ $TO/pool/

EXCLUDE는의 관심 영역에 따라 관심없는 많은 아키텍처를 제거하기 위해 확장됩니다 --exclude binary-alpha/ --exclude disks-alpha .... rsync가 시작되기 전에 내 풀 디렉토리는 다음과 같습니다.

lrwxrwxrwx  1 root root   23 2014-09-22 13:58 contrib -> /u2/debian/pool/contrib
drwxrwxr-x 62 root root 4096 2012-04-09 03:02 main
lrwxrwxrwx  1 root root   24 2014-09-22 13:58 non-free -> /u2/debian/pool/non-free

rsync가 시작되면 이것을 얻습니다.

receiving incremental file list
deleting non-free
deleting contrib
./
contrib/
contrib/a/

계속해서 심볼릭 링크는 파일로 가득 찬 디렉토리로 대체됩니다.

다른 rsync 옵션 중 일부가 간섭 --keep-dirlinks합니까? 어떤 것을 결합 할 수 없습니까? 아니면 내 문제를 일으키는 옵션의 순서입니까?

답변:


7

--delete--delete-excluded옵션은 심볼릭 링크는 소스가없는 것을 알 수로, 당신의 계획을 방해하므로 삭제합니다.

이것은 rsync전체 디렉토리를 source/ target표기법 (소스 뒤의 슬래시) 으로 복사하도록 지시 할 때만 발생합니다 . source/* target대신에 사용한다면 , 쉘은 복사 할 파일과 디렉토리의 목록을 확장시킬 것이며 이것은 일어나지 않을 것입니다 (그러나 --dry-run먼저 시도하십시오 ).

그러나이 취약한 설정 대신 두 디스크를 LVM의 도움과 결합하여 이러한 종류의 속임수가 필요없는 하나의 큰 볼륨을 형성하는 것이 좋습니다.


감사! 스크립트를 변경했는데 작동하는 것 같습니다. 이렇게하면 시간이 조금 걸릴 것입니다. 디스크가 여전히 가득 차는 경향이 있지만 일을 바꿀 시간이 있습니다. 두 가지를 LVM과 결합하는 것이 옳습니다. 나는 이미 그것을 고려하고 있었지만, 물건을 옮겼다가 다시 옮길 것을 의미하기 때문에 발을 드래그하는 것입니다. 그래도 나중에보다 빠르다고 생각합니다.
unkilbeeg

내가 사용하고있는 -a 옵션없이 --keep-dirlinks를 사용하여 해결 된 비슷한 문제가있었습니다. 세 번째 단락의 "사소한"성가심, 내가 사용하는 파일 시스템은 64 T 바이트 SAN "디스크"입니다. 256 테라 바이트 드라이브와 같이 여러 개를 더 큰 크기로 결합 할 수는 있지만 관리자는 크기가 큰 이유가 있다고 생각합니다. 때때로 "속임수"처럼 보이는 것은 당신이 가진 것과 함께 사는 방법을 연구하는 것입니다.
user1683793

나의 궁극적 인 해결책은 새로운 하드웨어였다. 원래 머신은 IDE 드라이브 만 지원할만큼 오래되었으며 그 당시 얻을 수있는 가장 큰 드라이브는 512G였습니다.
unkilbeeg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.