전송 도중 rsnapshot / rdiff-backup이 중단되면 어떻게됩니까?


20

질문은 모든 것을 말합니다 :

전송 도중 rsnapshot 또는 rdiff-backup이 중단되면 어떻게됩니까?

rsnapshot은 회전 방식으로 시스템의 전체 스냅 샷을 작성하려고 시도하고 rdiff-backup은 이전에 저장된 파일을 기반으로하는 차등 백업을 만듭니다.

중간에 중단되면 어떻게됩니까?

"불완전한 스냅 샷"이 발생합니까?

이 스냅 샷에 종속 된 다른 스냅 샷이 손상됩니까? (확실하지는 않지만 ...?)


1
이 질문을 두 개의 다른 질문으로 분리했다면 훨씬 명확하지 않습니까?
andol

2
@andol 그가 중단 된 전송에서 복구하는 방법에 대한 정보를 찾고 있다면 두 가지 질문이 더 낫다고 생각합니다. 나는 이것이 "어떻게 사용할 것인지 결정하는 데 도움이되는"변종과 같이 각 유틸리티를 사용했을 때 얼마나 많은 문제가 발생했는지 비교하는 데 더 많은 요청이라고 해석했다.
ændrük

감사합니다 Andol; 하지만 아니요, 이것이 하나의 질문이라고 생각합니다. 기본적으로 "전송 도중 rsnapshot / rsync가 중단되면 어떻게됩니까?"라고 생각합니다. 도구가 특정 틈새 시장에 해당되므로 IMO가 두 가지 별도의 질문을 보증하지 않습니다. 나는 명확하지 않은 목적으로 하나의 잠재적 결과로 '불완전한 스냅 샷'이라는 문제를 제기했다.
emf

답변:


22

내 이해는 ...

rdiff-backup 은 다음에 실행될 때 불완전한 증가분을 감지합니다. 백업 위치가 인터럽트 된 백업 시도가 시작된 적이없는 것과 같도록 불완전한 증가분을 삭제합니다.

rsnapshot 은 루틴이 더 단계적이며 sync_firstuse_lazy_deletes옵션 의 사용에 따라 다르기 때문에 조금 더 복잡 합니다.

  • 당신이 사용 sync_first하고 rsnapshot sync중단되면, 당신은 단순히 rsnapshot sync일을 똑바로 다시 실행할 수 있습니다 . 실수 rsnapshot <backup level>로이 시점에서 실행 하면 최신 백업 지점이 불완전한 상태로 유지되고 회전을 통해 전달됩니다.
  • 를 사용하지 않으면 sync_first이전 버전과 새 버전의 파일이 혼합 된 불완전한 백업 지점이 고수 된 것입니다. 각 백업 지점을 수동으로 역 회전시키지 않으면 불완전한 백업 지점은 회전을 통해 수행됩니다.
  • 두 경우 모두 실행 rsnapshot <backup level>하면 use_lazy_deletes활성화 하지 않으면 가장 오래된 백업 지점이 손실됩니다 .

참고 sync_firstuse_lazy_deletes디스크 공간을 사용하는 비용에 온다.


리마인더 / 면책 조항 : 이것은 말할 것도없이 진행되어야하지만 인터넷상에서 다른 사람들의 조언을 맹목적으로 믿지 마십시오. 미션 크리티컬 한 용도로 rdiff-backup 또는 rsnapshot을 사용하려는 경우 설명서의 모든 단어를 읽고 테스트하고 모든 것을 직접 테스트 하십시오!


1
우리는 이런 종류의 "적절한 방법"문화를 따라 잡는 좋은 알림과 모범 사례를 통해 리눅스가 벙어리 소비국으로 변하는 것을 원하지 않습니다. 메모 주셔서 감사합니다.
emf

그래서 제대로 이해 : 두 가지에 달할 것 rsnapshot도 내용은 "회전을 통해 수행"불완전한 백업 갖는 모든 높은 수준의 스냅 샷을 것입니다 나중에 2에서 다시 언급하면 스냅 샷이 완료되지 않으므로 1. 그건 아직 완료를 , 그러나 불완전한 스냅 샷에서 누락 된 이전 하드 링크 가능 파일을 제대로 다시 참조하지 않습니다. 이 올바른지?
emf

1

그것은 나에게 일어난 일입니다. rsnapshot의 증분 백업을 통해 내 외부 드라이브가 반쯤 가득 찼습니다.

rsync: write failed on "<path>": No space left on device (28) 

이제 나는 이것으로부터 배운 몇 가지를 공유하고 싶습니다. 즉, 그러한 경우에 대해 물린 상당한 기회를 수리하고 제한하는 것;)

Rsnapshot의 중단 된 백업 재개

안전하게 롤백하는 두 가지 방법을 알고 있습니다.

수동으로

  1. 마지막 디렉토리를 삭제하십시오 (예 : daily.0)
  2. 연속 디렉토리의 이름을 바꿉니다 (daily.1-> daily.0, ...). 가능한 스크립트 1
  3. 평소와 같이 백업을 다시 실행하십시오.

자동으로

rsnapshot에는 일시 정지 / 중지 및 재개 기능이 없으므로 ( 롤백 계획으로 인해 " 건너 뛴 제한" " 2 제외) 래퍼를 사용하여 이러한 기능을 처리해야합니다.

rsnapshot-oncePhilipp C. Heckel의 3 은 PHP에서 rsnapshot의 래퍼입니다.

  • rsnapshot의 conf를 수정하지 않고 작동
  • cron (노트북에 적합)을 통해 매일, 매주 및 매월 작업이 해당 기간에 한 번만 실행되도록합니다.
  • 실패한 백업 롤백 (마지막 백업이 완료되었는지 확인합니다. 마지막 디렉토리가 삭제되지 않으면 연속 디렉토리의 이름이 바뀝니다 (예 : daily1-> daily.0, ...)

일년 동안 사용하면 나는 행복한 사용자입니다 : 나는 openbase_dir백업 필요와 짜잔에 대한 php.ini를 편집했습니다 . 행운의 날 ^ _ ^ 이전의 원시 rsnapshot 기반 솔루션보다 부드럽고 안전합니다.

참고 : slm은 중복 질문에서 나를 연결했습니다 : Rsnapshot destination full-안전하게 다시 실행하는 방법은 무엇입니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.