부팅 한 현재 디스크를 복사 할 수 있습니까?


23

라이브 USB 디스크에서 실행되는 FreeNAS 사본이 있습니다. 그리고 나는 그것을 백업하고 싶습니다.

완벽하게 작동하는 시스템을 손상시키지 않으려 고 시도하는 dd동안 OS가 실행되는 동안 디스크를 사용할 수 있습니까?

아니면 머신을 종료하고 dd다른 머신 을 종료해야 합니까?

답변:


16

dd실행중인 디스크에서 실행할 수 있습니다 . 디스크 구조에 큰 변화가있을 때는 그렇게하지 않아야합니다. 또한 fschk일단 완료되면 목적지 가되어야 합니다. 백업하는 동안 시스템이 더 조용할수록 좋습니다.

`dd '를 사용하려면 콜드 백업 (파일 시스템 마운트 해제)을 실행하는 것이 가장 좋습니다.

실행중인 시스템을 백업하기위한 더 나은 옵션이 있습니다.

  • tar또는 cpio파일을 읽고 열린 파일을 합리적으로 처리합니다. 백업 중에 발생하는 일부 변경 사항이 누락 될 수 있습니다.
  • rsynctar열린 파일 및 백업 중에 변경 사항이없는 것처럼 작동 합니다. 초기 백업을 수행하는 데 사용할 수 있으며 증분 백업을 매우 잘 수행합니다. 증분 백업을 실행하면 변경되지 않은 파일 부분 복사를 건너 뛸 수 있습니다.

데이터베이스 데이터 파일로 파일 시스템을 백업하는 경우 핫 백업에 대한 지원을 조사하십시오.


- 높은 수준의 도구 사용에 대한 좋은 점 tar, cpio그리고 rsync모든 작업 파일 시스템 내를 이 적합 할 수 있도록. ddOTOH는 FS를 무시하고 디스크 블록과 직접 작동합니다.
— Piskvor

16

그것은이다 기술적으로 가능한 디스크의 파티션 중 하나가 쓸 수있는 특히, ( "촬영 - 스스로 - 인 - 더 - 발"에서와 같이), 그러나 매우 바람직하지 않다.

이 시나리오를 묘사하십시오 :

  • dd 시작 부분에서 디스크를 읽기 시작하고 끝까지 즐겁게 진행됩니다.
  • 중간에 있으면 OS가 파일을 디스크에 씁니다. 파일은 다소 조각화되어 있습니다. 파일의 한 부분은 실제로 디스크의 시작 부분을 향하고 다른 부분은 끝 부분을 향합니다.
  • OS에는 아무런 문제가 없습니다. 파일을 잘 작성하고 쓰기 캐시에서 밀어냅니다. 이제 디스크에 올바르게 기록됩니다.
  • 문제는 백업과 관련 dd이 있습니다. 이미 파일의 첫 번째 부분을지나 복사하여 두 번째 부분에 도달하면 일관성이없는 상태를 캡처합니다. 각 부분은 다른 버전에서 나옵니다!

당신이와 USB 디스크의 모든 파티션을 다시 마운트 할 수있는 경우 읽기 전용,이 문제는 ( "강조 발생하지 않습니다 해야 하지를"); 이것은 /파티션에 대한 사전 설치 / 오프라인 준비 및 부팅 시간 설정이 필요합니다. 일반적으로 /r / o를 즉시 다시 마운트 할 수 있다고 생각하지 않습니다. r / w가 필요한 몇 가지 사항이 있습니다. 접속하다.

따라서 복사본을 실행해도 실행중인 시스템이 손상 되지는 않지만 작업 가능한 내용을 렌더링하여 실행 가능한 백업을 제공하지는 않습니다 . 복사본을 오프라인으로 만드는 것이 좋습니다. 컴퓨터를 종료해야합니다.


1
큰 답변을 주셔서 감사합니다, 나는 쉬운 탈출구를 기대하고 있었지만, 당신이 옳았습니다, 당신이 지적한 것에서 발생하는 좋은 시나리오를 상상할 수 없습니다.
— stuartc

1
@stuartc : 그것은 필요 주요 FS 드라이버에서 협력 - 복사가 시작된 이후 일어난 모든 변화의 복사 과정을 알리는를, 그리고 일관성있는 상태에 도달 여부. 이것이 중대한 문제인 경우와 같이 스냅 샷을 지원하는 파일 시스템을 살펴보십시오 btrfs.
— Piskvor

4

마운트 된 파티션의 이미지를 작성해서는 안됩니다. 부팅 여부에 관계없이.

그러나 부팅 한 파티션을 마운트 해제하는 데 어려움을 겪을 수 있습니다.


4

이를 위해 dump(8)FreeBSD를 사용 합니다. 예 :dump -auLf /mnt/some-other-disk/root.dmp /

이 -L옵션을 사용하면 스냅 샷을 만들어 라이브 파일 시스템을 복사 할 수 있습니다.

을 사용하여 덤프를 복원 할 수 있습니다 restore(8).

UFS에서만 작동 할 수 있습니다. 확실하지 않습니다.


0

다음을 언급하지 않은 백업 팁 수는 놀랍습니다.

백업 및 복원하는 동안 Linux 시스템 (및 대부분의 다중 스레드 OS)은 일반적으로 정지 상태 여야합니다.

이미지를 생성하는 동안 OS를 실행하지 않으면 가장 쉽게 수행 할 수 있습니다.

백업 및 복원을 위해 마운트 할 수 있으며 실제로는 실행중인 OS가 루트 (/)가 아니어야합니다.


이유 : 모든 멀티 태스킹 운영 체제 (리눅스 포함)에는 파일 전체에 영향을주는 동시 코드 스레드가있어 시스템 전체의 파일 세트 백업 또는 복원을 정확하게 수행 할 수 없습니다.

특히 파일을 가져 오는 동안 백업이 특정 시점에 파일 시스템의 진실하고 정확한 이미지를 나타내지 않도록 파일을 작성하거나 삭제하는 다른 작업이있을 수 있습니다. 이 백업을 복원하려고하면 데이터 손상이 발생하여 충돌 및 다른 예외가 발생할 수 있습니다.


옵션 : 백업은 특수 소프트웨어 및 / 또는 디스크 시스템 (예 : 실행중인 OS를 백업 할 수있는 Windows의 Acronis와 같은) 또는 수행하려는 실행되지 않는 OS 파일에 액세스하는 외부 보조 OS에 의해 수행되어야합니다. 백업 또는 복원.

!!! 따라서 백업을 수행하기 위해 Deja-dup 을 사용하라는 웹 페이지가 표시 /home되면 /homedeja-dup을 실행하는 동안 영향을 받는 프로그램을 실행하지 않는 경우 에만 작동합니다 . (그리고 심지어 데몬을 통해 파일을 만질 수있는 것이 무엇인지 실제로 알지 않는 한 손가락을 가로 질러 가고 싶을 수도 있습니다.)


0

나는 이미 테스트 환경에서 성공적으로 장치를 복사 할 수 있도록 fsck 및 rsync를 사용 하여이 작업을 이미 수행합니다.


1
rsync로 만든 전체 디스크 (전체 파일 시스템) 덤프를 개선하는 데  사용하는 방법을 설명 할 수 있습니까 dd? (그리고 액세스 권한이 있으면 rsync보조 보조 도구가 아닌 기본 백업 도구로 사용하지 않는 이유는 무엇입니까?)………………………  명확하고 완전하게 답변을 편집 하십시오.
— 스캇
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.