애플리케이션 마이그레이션의 일부로 디렉터리 구조를 새 호스트에 복사해야 했습니다. 디렉토리 구조는 다음과 같습니다.
{10 - ff} / {00 - ff} / {00 - ff}(제외) / 고유한 파일 이름
그래서 수백만 개의 파일이 있습니다. 트리의 세 번째 수준은 아직 완전히 채워지지 않았으며 모든 세 번째 수준 디렉터리에 파일이 있는 것은 아닙니다.
보조 폴더의 경우에도 du를 완료하는 데 시간이 오래 걸립니다. tar|nc를 사용하는 데는 10일이 걸립니다. 하루 동안은 힘이 없을 수 있지만 10일은 안 됩니다.
답변1
이를 위해 사용됩니다 rsync
.
- 새 서버를 사용하도록 전환하기 전에
rsync
한 호스트에서 다른 호스트로 전체 디렉터리에 대한 작업을 수행하십시오. 이 작업을 완료하는 데 오랜 시간이 걸릴 것 같습니다. - 완료되면
rsync
다시 실행하여 첫 번째 rsync 중에 수정된 모든 파일을 캡처합니다. rsync
변환을 수행할 때까지 주기적으로 계속 실행하십시오. 이는 전송해야 하는 데이터의 양을 낮게 유지하기 위한 것입니다.- 중단이 발생하고 이전 서버에 대한 모든 쓰기가 중지됩니다.
- 마지막으로 실행됨
rsync
- 새 서버에서 서비스 시작
답변2
이 디렉토리 구조가 해당 장치/파티션에 있는 데이터의 대부분인 경우 문제를 일으키는 경우 디렉토리 구조를 무시하십시오.
대신, 장치를 마운트 해제(또는 읽기 전용으로 다시 마운트)하고 dd(1)
netcat을 사용하여 파일 시스템 블록을 새 호스트의 동일한 크기의 파티션에 복사하십시오.
원하는 계층 구조 외부에 불필요한 데이터가 있는 경우 마이그레이션 후 삭제하세요.
호스트 간 네트워크에 병목 현상이 발생할 수 있는 경우 드라이브를 가져와 새 호스트에 연결하는 것도 고려할 수 있습니다.
답변3
일회성 복사의 경우 동일한 시스템에 소스와 대상을 설치할 수 있으면 다음을 수행할 수 있습니다.
find [source top dir] | cpio -dump [target mountpoint]
파일 속성을 복사하고 보존합니다. cpio 도구에도 압축 매개변수가 있어야 합니다.