에 의해 대용량 HDD를 백업 할 계획 rsync
이며 며칠이 걸릴 것으로 예상합니다. rsync
작동 하는 동안 원래 HDD (파일 추가)를 사용하는 것이 안전 합니까? 또는 rsync
완료 될 때까지 HDD를 그대로 두는 것이 좋습니다 ?
에 의해 대용량 HDD를 백업 할 계획 rsync
이며 며칠이 걸릴 것으로 예상합니다. rsync
작동 하는 동안 원래 HDD (파일 추가)를 사용하는 것이 안전 합니까? 또는 rsync
완료 될 때까지 HDD를 그대로 두는 것이 좋습니다 ?
답변:
다른 사람들이 이미 지적했듯이 rsync가 실행되는 동안 소스 디스크를 읽거나 대상 디렉토리 외부에서 대상 디스크를 사용하는 것이 안전합니다. 특히 대상 디렉토리가 rsync 실행으로 만 채워지는 경우 대상 디렉토리 내에서 읽는 것이 안전 합니다.
일반적으로 안전 하지 않은 것은 rsync가 실행되는 동안 소스 디렉토리 내에 쓰는 것 입니다. "쓰기"는 소스 디렉토리 또는 그 하위 디렉토리의 내용을 수정하는 것이므로 파일 업데이트, 삭제, 생성 등을 포함합니다.
그렇게해도 실제로 아무 것도 깨지지 는 않지만 대상 위치에 복사하기 위해 rsync에 의해 변경 사항이 실제로 선택 될 수도 있고 그렇지 않을 수도 있습니다. 변경 유형, rsync가 해당 특정 디렉토리를 아직 스캔했는지 여부 및 rsync가 해당 파일 또는 디렉토리를 아직 복사했는지 여부에 따라 다릅니다.
그러나 다음과 같은 쉬운 방법이 있습니다. 완료되면 동일한 매개 변수를 사용하여 rsync를 다시 실행하십시오. 펑키 삭제 매개 변수가없는 경우에는 더주의해야합니다. 그렇게하면 소스를 다시 스캔하고 원래 실행 중에 발견되지 않은 차이를 전송합니다.
두 번째 실행은 이전 rsync 실행 중에 발생한 차이점 만 전송해야 하므로 훨씬 빨리 완료됩니다. 따라서 첫 번째 실행 중에는 컴퓨터를 정상적으로 사용할 수 있지만 두 번째 실행 중에는 소스를 변경하지 않아야합니다. 가능하면 두 번째 rsync 실행을 시작하기 전에 소스 파일 시스템을 읽기 전용으로 다시 마운트하는 것이 좋습니다. (무언가처럼 mount -o ro,remount /media/source
해야합니다.)
@reboot root find / -print &>/dev/null
내 시스템 crontab에서 와 같이 캐시를 채우는 것과 같은 항목을 가지고 있습니다 . (실제 항목은 특정 시스템에서 몇 가지 특수한 경우를 설명하기가 더 복잡합니다.) 시작 후 초기에 약간의 RAM과 벽시계 시간을 사용하여 디렉토리 트리 스캔을 약간 IME로 향상시킵니다.
updatedb
locate의 데이터베이스 작성) 또는 slocate -u
(slocate가있는 경우 동일 ) 실행해야 합니까? 이렇게하면 여전히 계층 구조를 캐시 할 수 있지만 또한 찾기 또는 배치 데이터베이스를 구축하여 해당 명령을 사용하여 많은 파일을 빠르게 찾을 수 있습니까?
이것은 사용하는 백업 시스템에 따라 다르지만 일반적으로 백업하는 동안 장치의 내용 을 수정 하는 것은 좋지 않습니다 . 그러나 내용을 읽을 수 있습니다 . 프로세스가 느려지더라도 안전한 작업입니다.
귀하의 경우 rsync
파일 목록을 작성한 다음 백업을 시작합니다. 따라서 백업이 시작된 후 소스 HDD에 추가 한 파일은 복사 되지 않습니다 .
내가하는 것은 백업 중에 장치를 전혀 사용하지 않는 것입니다. 이것은 빠르고 일관된 백업을 얻는보다 안전한 방법입니다.
rsync
중에 변경된 파일 만 복사되기 때문에 몇 초 안에 끝나는 두 번째 실행을 수행합니다 . 모든 것이 캐시에 저장되므로 해당 기간 동안 수정을 자제하는 것이 훨씬 쉽습니다.
rsync
작동 하는 동안 소스 영역에서 데이터를 읽는 것이 안전 하지만, 무엇이든 업데이트 rsync
하면 작성 / 업데이트 하는 사본이 일치하지 않을 수 있습니다.
rsync가 이미 스캔 한 파일을 업데이트하면 나중에 실행할 때까지 업데이트가 표시되지 않습니다. 파일을 업데이트하면 아직 스캔하지 않았으므로 대상에서 변경 사항이 적용됩니다. 스캔하지 않았거나 스캔하지 않은 파일을 업데이트하면 대상에 이전 버전과 새 버전이 혼합되어 나타납니다.
이미 스캔 한 디렉토리에 파일을 추가하면 이번에는 대상 사본에서 파일이 누락됩니다. 이미 스캔 한 디렉토리에서 파일을 제거하면 이번에는 대상 사본에 남아 있습니다. 호출 방법에 따라 rsync
시작시 전체 트리가 스캔되거나 동기화 프로세스가 진행됨에 따라 점진적으로 스캔 될 수 있습니다.
어떤 상황에서는 rsync
불일치를보고 경고합니다. 이미 스캔되었지만 내용을 스캔하지 않은 디렉토리에서 파일 또는 하위 디렉토리를 제거하면 객체가 누락되었다는 오류 메시지가 표시됩니다. 비슷한 상황에서 때때로 (크기 및 / 또는 타임 스탬프가 변경된 경우) 파일이 스캔 도중 변경되는 것에 대해 경고 할 수 있습니다.
일부 백업의 경우이 불일치가 큰 문제는 아니지만 대부분의 경우 활발하게 변경되는 소스를 동기화하지 않는 것이 좋습니다.
LVM을 사용하여 스토리지 시스템을 분할하는 경우 임시 스냅 샷을 사용하여 특정 시점 백업을 수행 할 수 있습니다. 이를 위해서는 볼륨 그룹에 충분한 공간이 있어야 스냅 샷이 필요한 기간 동안 발생할 수있는 모든 변경 사항을 보유 할만큼 큰 스냅 샷 볼륨을 작성할 수 있습니다. 자세한 내용은 LVM 설명서 (또는 많은 온라인 예 중 하나 : "LVM 스냅 샷 백업"등을 검색)를 확인하십시오.
LVM이 없어도 일부 파일 시스템은 스냅 샷 자체를 지원하므로 해당 옵션도 살펴볼 수 있습니다.
긴 중단 시간없이 대용량 활성 볼륨을 백업하고 스냅 샷을 사용할 수없는 경우 "실시간"스캔을 완료 한 다음 볼륨에 대한 액세스를 중지하고 시간이 훨씬 덜 소요되는 다른 rsync 프로세스를 실행하는 것으로 충분할 수 있습니다 ( 디렉토리 트리를 스캔 한 다음 업데이트 된 파일을 스캔합니다. 이렇게하면 변경을 피해야하는 기간이 훨씬 짧아 질 수 있습니다.
현재의 모든 답변은 일관성과 완벽한 하드웨어를 가정하여 데이터 안전성에 대해 이야기하고 있습니다.
고려해야 할 또 다른 사항은 하드웨어 안전 자체입니다. 고장이 나기 직전의 백업되지 않은 하드 드라이브가 있고 (아직 알지 못할 수도 있음) 초기 종합 백업을 사용하는 경우에는 사용하지 마십시오. 데이터가 중요한 경우에는 마운트하지 마십시오. dd
디스크를 블록 장치로 복제하는 등의 도구를 사용할 수 있습니다 . 디스크 헤드가 원하지 않는 것, 백업을 시도하는 동안 쓸 수있는 것. 플러스 dd
는 비트를 순서대로 복사하기 때문에 초기 백업 속도가 더 빨라야합니다 (드라이브가 거의 가득 차지 않은 경우 초기에 rsync가 승리한다고 가정).
후속 증분 백업의 경우 rsync를 선택하는 것이 좋으며 다른 답변은 100 %에 동의합니다.
dd
가있는 경우 최선의 선택이 아닙니다. ddrescue
대신 사용하십시오 . 부분 실패를 훨씬 잘 처리합니다. 그러나 그것은 원래의 질문에서 고려되지 않았습니다.