깊게 중첩된 디렉터리 구조 복사

깊게 중첩된 디렉터리 구조 복사

애플리케이션 마이그레이션의 일부로 디렉터리 구조를 새 호스트에 복사해야 했습니다. 디렉토리 구조는 다음과 같습니다.

{10 - ff} / {00 - ff} / {00 - ff}(제외) / 고유한 파일 이름

그래서 수백만 개의 파일이 있습니다. 트리의 세 번째 수준은 아직 완전히 채워지지 않았으며 모든 세 번째 수준 디렉터리에 파일이 있는 것은 아닙니다.

보조 폴더의 경우에도 du를 완료하는 데 시간이 오래 걸립니다. tar|nc를 사용하는 데는 10일이 걸립니다. 하루 동안은 힘이 없을 수 있지만 10일은 안 됩니다.

답변1

이를 위해 사용됩니다 rsync.

  1. 새 서버를 사용하도록 전환하기 전에 rsync한 호스트에서 다른 호스트로 전체 디렉터리에 대한 작업을 수행하십시오. 이 작업을 완료하는 데 오랜 시간이 걸릴 것 같습니다.
  2. 완료되면 rsync다시 실행하여 첫 번째 rsync 중에 수정된 모든 파일을 캡처합니다.
  3. rsync변환을 수행할 때까지 주기적으로 계속 실행하십시오. 이는 전송해야 하는 데이터의 양을 낮게 유지하기 위한 것입니다.
  4. 중단이 발생하고 이전 서버에 대한 모든 쓰기가 중지됩니다.
  5. 마지막으로 실행됨rsync
  6. 새 서버에서 서비스 시작

답변2

이 디렉토리 구조가 해당 장치/파티션에 있는 데이터의 대부분인 경우 문제를 일으키는 경우 디렉토리 구조를 무시하십시오.

대신, 장치를 마운트 해제(또는 읽기 전용으로 다시 마운트)하고 dd(1)netcat을 사용하여 파일 시스템 블록을 새 호스트의 동일한 크기의 파티션에 복사하십시오.

원하는 계층 구조 외부에 불필요한 데이터가 있는 경우 마이그레이션 후 삭제하세요.

호스트 간 네트워크에 병목 현상이 발생할 수 있는 경우 드라이브를 가져와 새 호스트에 연결하는 것도 고려할 수 있습니다.

답변3

일회성 복사의 경우 동일한 시스템에 소스와 대상을 설치할 수 있으면 다음을 수행할 수 있습니다.

find [source top dir] | cpio -dump [target mountpoint]

파일 속성을 복사하고 보존합니다. cpio 도구에도 압축 매개변수가 있어야 합니다.

관련 정보