하드링크 파일을 복구하는 방법

하드링크 파일을 복구하는 방법

다른 파일 시스템의 날짜가 표시된 일련의 아카이브 백업이 포함된 파일 시스템이 있습니다. 백업에서는 하드 링크를 사용하여 연속 아카이브 인스턴스 간의 델타만 복사합니다. 드라이브에 일부 데이터가 손상되어 교체하려고 노력하고 있지만 일부 파일이 손상되어 성공적으로 복사되지 않습니다. 복구하는 데 사용할 수 있는 손상된 파일의 다른 복사본이 있지만 하드 링크 구조에서 손상된 파일을 교체할 수 있는 좋은 방법을 모릅니다.

01/01       02/01       03/01        
 -file1  >>  -file1  x               Added in 01/01, deleted by 03/01
 -file2  >>  -file2  >>  -file2      Added in 01/01, never deleted
             -file3  >>  -file3      Added in 02/01, never deleted

file2위의 경우에는 2개(또는 계산 방법에 따라 3개)의 하드 링크가 있는 데이터 저장소가 있습니다 . 기본 파일 데이터가 손상된 경우 백업 파일을 사용하여 이를 복원 file2하고 하드 링크를 유지하려면 어떻게 해야 합니까?

추가 정보:

  1. 원시 데이터는 물리적 장치에 폴더 구조로 저장됩니다.
  2. 백업/아카이브 복사본은 원본 데이터 장치(1.)에 저장된 전체 폴더 구조를 갖습니다. 시간상 연속되어 있고 중복이 제거되며 백업 장치에 하드 링크되어 있습니다.
  3. 복원하려는 복사본은 장기 콜드 스토리지용 백업 장치의 이미지를 저장하는 세 번째 장치입니다.
  4. (2.)에 나열된 백업 장치에서 오류가 발생했습니다. 백업/아카이브 구조 내의 원래 위치(1.) 또는 콜드 스토리지 장치(3.)에서 이 백업 장치의 손상된 파일을 복원하고 싶습니다.
  5. 백업 논리:

    <last backup folder>5.1. 장치에서 마지막 날짜/시간 스탬프가 찍힌 백업 폴더 찾기 (2.)

    5.2. <new folder>현재 날짜/시간 스탬프를 사용하여 새로운 빈 백업 폴더를 생성합니다.

    5.3. 마지막 백업 폴더에 파일의 하드 링크 복사본을 만듭니다.

    cp -al <last backup folder> <new folder>
    

    5.4. (1.)의 데이터를 <source data>새 백업 폴더에 복사하고 (5.3.)에서 생성된 하드 링크된 백업 폴더를 덮어씁니다.

    rsync -azH --delete <source data> <new folder>
    

업데이트 날짜: 2017년 3월 14일

하나의 답변 제안을 시도한 후에 대상에서 손상된 파일을 제자리에서 교체할 수 없습니다. 분명히 해당 위치의 대상에 일종의 하드 오류가 발생했으며 교체 데이터를 디스크의 새로운 물리적 위치로 이동해야 했습니다.

답변1

사용rsync -azH --inplace

매뉴얼 페이지에는 이 옵션에 대한 많은 경고가 있습니다:

- 제자리에

이 옵션은 파일 데이터를 업데이트해야 할 때 rsync가 파일을 전송하는 방식을 변경합니다. 파일의 새 복사본을 만들고 완료되면 해당 위치로 이동하는 기본 방법 대신 rsync는 업데이트된 데이터를 대상 파일에 직접 씁니다. 여기에는 여러 가지 효과가 있습니다.

(1) 사용 중인 바이너리를 업데이트할 수 없습니다(운영 체제가 이러한 일이 발생하지 않도록 하거나 데이터를 교환하려고 하는 바이너리에서 예외가 발생하거나 충돌이 발생함).

(2) 파일의 데이터는 전송 과정에서 일관성 없는 상태가 됩니다.

(3) 전송이 중단되거나 업데이트에 실패할 경우 전송 후 파일 데이터가 일관성 없는 상태가 될 수 있으며,

(4) 쓰기 권한이 없는 파일은 업데이트할 수 없으며,

(5) rsync의 증분 전송 알고리즘은 파일의 뒷부분에 복사되기 전에 대상 파일의 일부 데이터를 덮어쓰는 경우 효율성이 떨어질 수 있습니다(한 가지 예외는 이 옵션이 --backup과 함께 사용되는 경우입니다). 백업 파일을 전송용 기본 파일로 사용할 만큼 똑똑합니다.)

경고: 다른 사람이 액세스하는 파일을 업데이트하는 데 이 옵션을 사용해서는 안 되므로 이 옵션을 사용하여 복사본을 만들 때는 주의하십시오. 이 옵션은 블록 기반 변경 사항이나 추가 데이터가 포함된 대용량 파일을 전송하는 경우와 네트워크 바인딩이 아닌 디스크 바인딩된 시스템에 유용합니다.

이 옵션은 --partial(중단된 전송은 파일을 삭제하지 않기 때문에)을 의미하지만 --partial-dir 및 --delay-updates와 충돌합니다. rsync 2.6.4 이전에는 --inplace가 --compare-dest 및 --link-dest와도 호환되지 않았습니다.

관련 정보