SSH 폴더 깊이 제한을 초과하는 Rsync?

SSH 폴더 깊이 제한을 초과하는 Rsync?

서버 마이그레이션을 진행 중인데 다음과 같은 문제가 발생했습니다.

모든 데이터를 마이그레이션하기 위해 rsync를 실행하고 있는데 어떤 이유로 폴더 깊이 제한이 있습니다... 이 작업은 rsync over ssh 명령을 통해 수행됩니다.

rsync -raz --verbose --update --delete --exclude-from 'rsync-exclude.txt' /home 192.168.70.50:/

70.50은 새 서버이고 이전 서버에서 명령을 실행하고 있습니다. 폴더 구조는 최대 20개 폴더까지 매우 깊습니다.

따라서 대부분의 파일과 폴더는 복사되지만 폴더 깊이 10 이상의 모든 파일과 폴더는 복사되지 않습니다. 더 깊은 폴더를 지정하면

rsync -raz --verbose --update --delete --exclude-from 'rsync-exclude.txt'/home/user/blablabla/domain/web to 192.168.70.50:/home/user/blablabla/domain

나머지 폴더를 재귀적으로 복사하기 시작합니다...

이 문제를 해결할 수 있는 사람이 있나요?

답변1

rsync는 통과할 하위 디렉터리의 깊이에 제한이 없습니다. 보다 구체적으로 말하면 Linux 파일 시스템의 한계를 초과합니다. 방금 약 500레벨 깊이의 항목을 복사했는데 rsync가 제대로 복사했습니다.

이 문제가 발생하는 경우 다음을 확인하세요.

  • 대상 파일 시스템이 그렇게 많은 하위 디렉터리를 처리할 수 없습니까?
  • 목적지가 가득 찼나요?
  • --exclude-from 파일이 파일을 제한하는 항목을 지정합니까?
  • 파일 시스템이 허용하는 것보다 경로의 총 길이("d/d/d/d"는 4레벨이지만 7자임)가 무엇입니까?
  • 증분 재귀를 끄면 작동합니까? --no-inc-recursive(이것은 최신 알고리즘이므로 버그를 발견했을 수도 있습니다.)
  • 다른 기술을 사용하여 복사가 작동합니까?
  • 압축을 사용하면(또는 압축하지 않으면) 문제가 해결됩니까?-z

시도해 볼 수 있는 또 다른 기술이 있습니다. 작동하지만 rsync작동하지 않는다면 다음에서 버그를 발견했을 수 있습니다 rsync.

한쪽에는 파일이 있고 tartar 파일은 stdout으로 보내고, ssh는 다른 쪽으로 보내고 거기에서 파일을 untar합니다.

SOURCEDIR=/path/to/source
DESTHOST=machinename
DESTDIR=/path/to/destination
cd "$SOURCEDIR" && tar -c -v -f - . | ssh "$DESTHOST" "cd $DESTDIR && tar -x -p -f -"

경고: $DESTDIR에 공백이나 특수 문자가 있는 경우 위의 내용을 좀 더 주의 깊게 인용해야 합니다.

관련 정보