rsync가 실행되는 동안 HDD를 사용해도 안전합니까?


27

에 의해 대용량 HDD를 백업 할 계획 rsync이며 며칠이 걸릴 것으로 예상합니다. rsync작동 하는 동안 원래 HDD (파일 추가)를 사용하는 것이 안전 합니까? 또는 rsync완료 될 때까지 HDD를 그대로 두는 것이 좋습니다 ?


1
"사용"은 브라우저가 아무것도하지 않는 것만 큼 간단 할 수 있습니다. 브라우저는 데이터 디렉토리에 많은 무작위 항목을 작성하는 경향이 있습니다. 최악의 경우, 일관성없는 백업, 즉 복원 할 때 탭을 복원 할 수 없거나 책갈피가 사라지거나 (데이터베이스가 손상 되었기 때문에) 그 정도의 순서로 백업이 이루어집니다.
Jonas Schäfer

백업 할 데이터가 많으면 백업을 작은 조각 (하위 트리)으로 분할하는 것이 좋습니다. 그런 다음 현재 실행중인 부분 만 가능한 한 정적으로 유지해야하며 스크립트 진행 상황 (로그 등)에 따라 어떤 부분을 볼 수 있습니다. 하나의 큰 백업이 아니기 때문에 일부 부분은 다른 부분과 거의 일치하지 않을 수 있지만 라이브 시스템에서 하나의 큰 백업을 실행하는 경우 어쨌든 일어날 것입니다.
Joe

답변:


34

다른 사람들이 이미 지적했듯이 rsync가 실행되는 동안 소스 디스크를 읽거나 대상 디렉토리 외부에서 대상 디스크를 사용하는 것이 안전합니다. 특히 대상 디렉토리가 rsync 실행으로 만 채워지는 경우 대상 디렉토리 내에서 읽는 것이 안전 합니다.

일반적으로 안전 하지 않은 것은 rsync가 실행되는 동안 소스 디렉토리 내에 쓰는 것 입니다. "쓰기"는 소스 디렉토리 또는 그 하위 디렉토리의 내용을 수정하는 것이므로 파일 업데이트, 삭제, 생성 등을 포함합니다.

그렇게해도 실제로 아무 것도 깨지지 는 않지만 대상 위치에 복사하기 위해 rsync에 의해 변경 사항이 실제로 선택 될 수도 있고 그렇지 않을 수도 있습니다. 변경 유형, rsync가 해당 특정 디렉토리를 아직 스캔했는지 여부 및 rsync가 해당 파일 또는 디렉토리를 아직 복사했는지 여부에 따라 다릅니다.

그러나 다음과 같은 쉬운 방법이 있습니다. 완료되면 동일한 매개 변수를 사용하여 rsync를 다시 실행하십시오. 펑키 삭제 매개 변수가없는 경우에는 더주의해야합니다. 그렇게하면 소스를 다시 스캔하고 원래 실행 중에 발견되지 않은 차이를 전송합니다.

두 번째 실행은 이전 rsync 실행 중에 발생한 차이점 전송해야 하므로 훨씬 빨리 완료됩니다. 따라서 첫 번째 실행 중에는 컴퓨터를 정상적으로 사용할있지만 두 번째 실행 중에는 소스를 변경하지 않아야합니다. 가능하면 두 번째 rsync 실행을 시작하기 전에 소스 파일 시스템을 읽기 전용으로 다시 마운트하는 것이 좋습니다. (무언가처럼 mount -o ro,remount /media/source해야합니다.)


7
하나는도 할 수있는 세 번째 실행을 ;-) ... 그것은 더 적은 시간이 걸릴 수 있습니다 : 두 번째 실행 후
겔 로스

5
@gerlos 패턴이 떠오르고있는 것 같습니다. 거의 모든 사용 세션이 끝날 때마다 rsync 명령을 계속 실행할 수있는 것처럼 들리며 며칠 내에 곧 완료됩니다.
Monty Harder

5
@gerlos rsync를 두 번째로 실행하기 전에 읽기 전용으로 다시 마운트하는 경우에는 필요하지 않으며 소스 파일 시스템에 쓸 수없는 시간을 최소화하면서 백업은 일관성이 보장됩니다.
CVn

1
@gerlos 제쳐두고, 그래서 나는 @reboot root find / -print &>/dev/null내 시스템 crontab에서 와 같이 캐시를 채우는 것과 같은 항목을 가지고 있습니다 . (실제 항목은 특정 시스템에서 몇 가지 특수한 경우를 설명하기가 더 복잡합니다.) 시작 후 초기에 약간의 RAM과 벽시계 시간을 사용하여 디렉토리 트리 스캔을 약간 IME로 향상시킵니다.
CVn

1
@ MichaelKjörling : 계층 구조를 캐시하기위한 아이디어를 삽입합니다. 그러나 대신 ( updatedblocate의 데이터베이스 작성) 또는 slocate -u(slocate가있는 경우 동일 ) 실행해야 합니까? 이렇게하면 여전히 계층 구조를 캐시 할 수 있지만 또한 찾기 또는 배치 데이터베이스를 구축하여 해당 명령을 사용하여 많은 파일을 빠르게 찾을 수 있습니까?
Olivier Dulac

22

이것은 사용하는 백업 시스템에 따라 다르지만 일반적으로 백업하는 동안 장치의 내용 을 수정 하는 것은 좋지 않습니다 . 그러나 내용을 읽을 수 있습니다 . 프로세스가 느려지더라도 안전한 작업입니다.

귀하의 경우 rsync파일 목록을 작성한 다음 백업을 시작합니다. 따라서 백업이 시작된 후 소스 HDD에 추가 한 파일은 복사 되지 않습니다 .

내가하는 것은 백업 중에 장치를 전혀 사용하지 않는 것입니다. 이것은 빠르고 일관된 백업을 얻는보다 안전한 방법입니다.


14
나는 보통 그것을 실행시킨 다음 실행 rsync중에 변경된 파일 만 복사되기 때문에 몇 초 안에 끝나는 두 번째 실행을 수행합니다 . 모든 것이 캐시에 저장되므로 해당 기간 동안 수정을 자제하는 것이 훨씬 쉽습니다.
Martin Ueding 2012 년

15

rsync작동 하는 동안 소스 영역에서 데이터를 읽는 것이 안전 하지만, 무엇이든 업데이트 rsync하면 작성 / 업데이트 하는 사본이 일치하지 않을 수 있습니다.

  1. rsync가 이미 스캔 한 파일을 업데이트하면 나중에 실행할 때까지 업데이트가 표시되지 않습니다. 파일을 업데이트하면 아직 스캔하지 않았으므로 대상에서 변경 사항이 적용됩니다. 스캔하지 않았거나 스캔하지 않은 파일을 업데이트하면 대상에 이전 버전과 새 버전이 혼합되어 나타납니다.

  2. 이미 스캔 한 디렉토리에 파일을 추가하면 이번에는 대상 사본에서 파일이 누락됩니다. 이미 스캔 한 디렉토리에서 파일을 제거하면 이번에는 대상 사본에 남아 있습니다. 호출 방법에 따라 rsync시작시 전체 트리가 스캔되거나 동기화 프로세스가 진행됨에 따라 점진적으로 스캔 될 수 있습니다.

  3. 어떤 상황에서는 rsync불일치를보고 경고합니다. 이미 스캔되었지만 내용을 스캔하지 않은 디렉토리에서 파일 또는 하위 디렉토리를 제거하면 객체가 누락되었다는 오류 메시지가 표시됩니다. 비슷한 상황에서 때때로 (크기 및 / 또는 타임 스탬프가 변경된 경우) 파일이 스캔 도중 변경되는 것에 대해 경고 할 수 있습니다.

일부 백업의 경우이 불일치가 큰 문제는 아니지만 대부분의 경우 활발하게 변경되는 소스를 동기화하지 않는 것이 좋습니다.

LVM을 사용하여 스토리지 시스템을 분할하는 경우 임시 스냅 샷을 사용하여 특정 시점 백업을 수행 할 수 있습니다. 이를 위해서는 볼륨 그룹에 충분한 공간이 있어야 스냅 샷이 필요한 기간 동안 발생할 수있는 모든 변경 사항을 보유 할만큼 큰 스냅 샷 볼륨을 작성할 수 있습니다. 자세한 내용은 LVM 설명서 (또는 많은 온라인 예 중 하나 : "LVM 스냅 샷 백업"등을 검색)를 확인하십시오.

LVM이 없어도 일부 파일 시스템은 스냅 샷 자체를 지원하므로 해당 옵션도 살펴볼 수 있습니다.

긴 중단 시간없이 대용량 활성 볼륨을 백업하고 스냅 샷을 사용할 수없는 경우 "실시간"스캔을 완료 한 다음 볼륨에 대한 액세스를 중지하고 시간이 훨씬 덜 소요되는 다른 rsync 프로세스를 실행하는 것으로 충분할 수 있습니다 ( 디렉토리 트리를 스캔 한 다음 업데이트 된 파일을 스캔합니다. 이렇게하면 변경을 피해야하는 기간이 훨씬 짧아 질 수 있습니다.


파일이 수정되면 어떻게되는지에 대해 자세히 설명하기 때문에 대답이 가장 좋습니다. 대안을 제공 할뿐만 아니라 발생할 수있는 불일치를 해결합니다 (업데이트 누락, 누락 된 파일에 대한 경고 등). 내 상황에서 rsync를 사용하여 긴 백업을 시드 한 다음 며칠 후 새로 고치는 것은 큰 문제가 아니며 OP의 상황과 비슷합니다. 처음으로 엔터프라이즈 수준의 백업을 요구하는 것처럼 들리지 않지만 그 동안 컴퓨터를 사용하려고합니다. 업데이트 된 파일을 잡기 위해 두 번째로 rsync를 실행한다고 말합니다.
ibennetch

11
  • 소스 HDD는 재 동기화 중에 모든 것을 읽을 수 있습니다.

  • 소스 HDD는 rsync 컨텐츠와 관련이없는 컨텐츠를 작성할 수 있습니다.

  • rsync 중에 대상 HDD가 무엇이든 읽을 수 있습니다.

  • 대상 HDD는 동기화 된 콘텐츠를 위해 충분한 공간을 예약하기위한 조건으로 재 동기화하는 동안 무엇이든 쓸 수 있습니다.

물론 어떤 경우에도 성능이 저하됩니다.


0

현재의 모든 답변은 일관성과 완벽한 하드웨어를 가정하여 데이터 안전성에 대해 이야기하고 있습니다.

고려해야 할 또 다른 사항은 하드웨어 안전 자체입니다. 고장이 나기 직전의 백업되지 않은 하드 드라이브가 있고 (아직 알지 못할 수도 있음) 초기 종합 백업을 사용하는 경우에는 사용하지 마십시오. 데이터가 중요한 경우에는 마운트하지 마십시오. dd디스크를 블록 장치로 복제하는 등의 도구를 사용할 수 있습니다 . 디스크 헤드가 원하지 않는 것, 백업을 시도하는 동안 쓸 수있는 것. 플러스 dd는 비트를 순서대로 복사하기 때문에 초기 백업 속도가 더 빨라야합니다 (드라이브가 거의 가득 차지 않은 경우 초기에 rsync가 승리한다고 가정).

후속 증분 백업의 경우 rsync를 선택하는 것이 좋으며 다른 답변은 100 %에 동의합니다.


1
미디어가 한계가 있거나 잠재적으로 한계 dd가있는 경우 최선의 선택이 아닙니다. ddrescue대신 사용하십시오 . 부분 실패를 훨씬 잘 처리합니다. 그러나 그것은 원래의 질문에서 고려되지 않았습니다.
CVn

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