파티션 간에 대량의 데이터를 복사하는 가장 좋은 방법

파티션 간에 대량의 데이터를 복사하는 가장 좋은 방법

HP-UX 서버의 2lv를 통해 데이터를 전송하려고 합니다. 몇 가지 전송 작업이 있는데 그 중 일부는 대부분 바이너리(Oracle 테이블스페이스...)이고 다른 일부는 텍스트 파일(로그...)입니다. 볼륨에 사용되는 데이터 크기는 100Gb에서 1Tb 사이입니다. 또한 일부 파티션의 블록 크기를 1K에서 8K로 변경할 예정입니다.

내가 찾고 있는 것:

  • 데이터 무결성 보장
  • 가장 빠른 데이터 전송 속도
  • 파일 소유권 및 권한을 유지합니다.

지금 당장 dd, cp, rsync에 대해 생각해 봤는데 어떤게 가장 좋은 것인지, 어떻게 사용하는 것이 가장 좋은 것인지 잘 모르겠습니다...

답변1

dd를 사용하고 싶지 않습니다. 이는 전체 파일 시스템이 아닌 하나의 파일 또는 스트림에서 작업하기 위한 것입니다.

rsync는 원하는 작업을 수행하도록 설계되었지만 이전 포스터에서 언급했듯이 내 테스트에서 알 수 있듯이 가장 빠르지는 않습니다. "좋아요, 파일 A를 보고 있습니다. 파일 A가 대상에 있습니까? 그렇다면 더 새로운 것입니까, 오래된 것입니까, 같은 것입니까?" 기타 rsync는 두 번 이상 실행되어야 하기 때문에 약간 복잡합니다. 이름에서 알 수 있듯이 두 위치를 동기화하는 데 사용됩니다.

원하는 작업을 수행하려면 tar 복사본이 빠르고 쉽고 안정적이라는 것을 알았습니다. Tar는 하드 링크에 대해 알고 있습니다. Tar는 장치에 대해 알고 있습니다. Tar는 파일 시스템에서 직면하게 될 거의 모든 상황을 처리합니다(매우 긴 경로는 제외하고, Gnu tar를 사용하지 않는 경우 경로 이름 시작 부분에 /를 넣는 것을 주의해야 할 수도 있습니다).

어쨌든 저는 지난 20년 동안 다음과 같이 하여 99.98%의 성공을 거두었습니다.

cd /my/source; tar cf - subdirectory | (cd /destination/path; tar xf -)

...복사하려는 하위 디렉터리가 /destination/path 에 표시됩니다.

진행 상황을 보고 싶다면 해당 문자열의 뒷부분에 "xf" 대신 "xvf"를 사용할 수 있습니다.

...나의 0.02% 실패는 정말 긴 파일 경로에서 비롯되었습니다... :-(

Tar는 파일 무결성을 보장하지 않습니다. 즉, 오류 메시지가 표시되지 않는 한 매우 신뢰할 수 있는 것으로 나타났습니다. 권한과 소유권이 올바르게 유지됩니다.

하지만! 귀하의 게시물에는 파일 무결성이 구체적으로 언급되어 있으며 몇 년 전 제 답변에 솔루션을 포함하지 않은 것에 대해 사과드립니다.

tar 후에는 간단히 이렇게 합니다. 내가 한 짓을 한 척

cd /path/to/source/dir; tar cf - * | (cd /path/to/dest/dir; tar xf -)

이제 파일 보증은 다음과 같이 수행할 수 있습니다.

find * -exec md5sum {} /path/to/dest/dir/{} \; > /path/to/dest/dir/md5-manifest.txt

완료되면 매니페스트 파일을 살펴보거나 awk 스크립트(사용자의 연습용으로 남겨둠)를 작성하여 find/md5sum 명령의 두 줄 출력을 비교할 수 있습니다.

답변2

보세요이 게시물. 일부 답변은 tar. 다른 사람들은 rsync. 그들은 두 컴퓨터 간에 데이터를 복사하는 작업을 수행하고 있습니다. 문제는 비슷하지만 네트워크를 통해 파일을 복사하는 대신 로컬로 파일을 복사해야 합니다.

답변3

rsync대부분의 우려 사항을 구체적으로 해결하는 기능이 있으므로 사용을 권장합니다 . 적절한 옵션(예: 옵션)을 사용하면 -a모든 파일 소유권, 권한 및 시간이 보존됩니다. 또한 rsync자동으로 체크섬을 사용하여 전송된 모든 파일이 그대로 대상에 도착하는지 확인하므로 데이터 무결성이 보장됩니다(실행 성공 가정).

유일한 지점은rsync 5월특히 와 같은 경량 대안과 비교할 때 속도는 최적이 아니지만 cp처리 능력이 매우 낮지 않는 한 큰 차이를 느낄 수 있을지 의문입니다.

답변4

기본적으로 세 가지 옵션이 있습니다.

  1. 전체 파티션/블록 장치 복사
  2. 전체 파일 시스템을 덤프합니다.
  3. 데이터 복사내부에파일 시스템

백업해야 하는 항목과 원하는 결과에 따라 세 가지 옵션 중 하나를 선택하세요. 귀하의 구체적인 경우에는 옵션 n.1(블록 장치 복사)이 다음과 결합되어 있다고 생각합니다.구출가는 길입니다. 어쨌든 사용 가능한 옵션 모음을 살펴보겠습니다.

사례 1: 파티션 복사
PRO: 전체 블록 장치를 복사하면 메모가 남겨진 것이 확실합니다.
단점: 블록 장치를 사용하는 것은 파일 작업보다 덜 편리합니다. 잘못된 블록 장치나 옵션을 선택하면 데이터가 손상될 수 있습니다.

전체 블록 개발의 바이너리 복사본을 갖고 싶다면 dd 또는 유사한 도구를 사용해야 했습니다. 다른 매우 유용한 도구는 다음과 같습니다.dcfldd(해시 준비 dd 포크) 및구출(더 발전된 dd와 유사한 도구)

사례 2: 파일 시스템 덤프
PRO: 전체 파일 시스템을 복사하면 그 안에 있는 모든 데이터와 메타데이터가 백업되었음을 확신할 수 있습니다.
단점: 백업할 파일 시스템이 여러 개인 경우 다중 패스(파일 시스템용으로 하나)를 수행해야 했습니다.
파일 시스템을 다루는 데 유용한 도구는 다음과 같습니다.FSArchive. 또한 많은 파일 시스템에는 효율적인 방식으로 콘텐츠를 덤프하기 위한 통합 유틸리티가 있습니다(예: XFS에는 xfsdump가 있고 Ext2/3/4에서는 dumpe2fs를 사용하는 등).

사례 3: 파일 시스템 내부에 데이터 복사
PRO: 파일 시스템 내부에서 데이터를 복사하면 백업할 항목을 매우 구체적으로 선택할 수 있습니다. 이는 빠른 백업/복원 시간과 작은 백업 이미지를 보장합니다.
단점: 백업할 내용과 방법을 완벽하게 알아야 했습니다. 중요한 메타데이터(예: 소유자, 권한, ACL, EA...)에는 특별한 주의를 기울여야 합니다.
재동기화여기 당신의 가장 친한 친구가 있어요.스냅샷그리고rdiff-백업rsync/librsync 위에 구축된 훌륭한 도구입니다.타르Unix 시스템 관리자의 스위스 칼입니다.

관련 정보