rsync를 사용하여 실행중인 시스템을 새 하드 디스크에 가장 잘 복제하는 방법은 무엇입니까? 같지 않습니다 (두 배 더 큼). 내 생각은 시스템의

하드 드라이브에 문제가있는 서버로 시스템을 실행하고 있습니다. 모든 중요한 데이터는 RAID에 있고 백업 및 모든 데이터가 있지만 시스템 자체의 이미지는 없습니다. 물론 설치할 수있는 특정 요구 사항은 없지만 복원 경로를 내리기 전에 먼저 핫 카피를 먼저 시도하고 싶습니다. 나는 이것이 프로세스로서 단점이 있다는 것을 알고 있지만, 첫 번째 수단으로 시도하는 데 많은 단점이 있다고 생각하지 않습니다.

  • 운영체제 : Ubuntu 12.04.4 LTS
  • 목이 없는
  • 디스크가 이미 실패했기 때문에 너무 많은 새 소프트웨어를 설치하고 싶지 않습니다. 🙂
  • 시스템이 실행 중입니다. 디스크가 멈추지 않을 가능성이 높아지는 것을 두려워합니다. dd가 나왔을까요?
  • 새 디스크는 dd 문제를 더 복잡하게 만드는 이전 디스크와 크기가 같지 않습니다 (두 배 더 큼).

내 생각은

  • 시스템의 새 드라이브를 핫 플러그
  • 파일 시스템을 만들다
  • / mnt / somedir에 마운트
  • 파일을 재 동기화
  • 일부 fstab 마술
  • 부팅 마법

내가 아직도 가지고있는 질문은 :

좋은 rsync 명령은 무엇입니까?
나는 계획하고 있었다 :

rsync -aAXx  / /mnt/somedir/
   --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}

(나는 더 많은 dir을 건너 뛰고 있습니다. 예를 들어 탑재 된 raid 등)

옵션은 다음과 같습니다.

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-A, --acls                  preserve ACLs (implies -p)
-X, --xattrs                preserve extended attributes
-x, --one-file-system       don't cross filesystem boundaries

특히 프로세스 속도를 높이기 위해 -H, -v 및 –progress를 건너 뜁니다.
우분투에서도 효과가 있습니까? 우분투가 하드 링크를 사용하는지 확실하지 않지만 옵션이 필요하다고 생각하지 않습니다.

이 실행 후 이전 디스크가 여전히 시작되면 재부팅 (라이브 USB 드라이브로)하고 rsync를 다시 실행할 수 있습니다. 시스템이 실행 중이기 때문에 읽을 수 없거나 변경된 파일을 수정합니다.


부팅을 수정하는 방법?
그런 다음 내 계획은 /내 fstab에서 UUID를 변경하고 (여전히 uuid를 찾는 방법을 Google에 저장해야 함) 시스템이 실제로 새 디스크에서 부팅되도록 마법을 수행합니다.

무언가를 잊었거나 특별히 어리석은 것을 계획 했습니까?



답변

blkid명령을 사용하여 모든 블록 장치의 UUID를 가져올 수 있습니다 . (당신은 PARTUUID가 아니라 UUID라고 말하는 것을 원합니다)

내가 사용하는 rsync 옵션은 -avhPHAXx입니다.

매우 느린 콘솔 / tty에 있지 않으면 -v 또는 –progress가 속도를 높일 것이라고 생각하지 않습니다.

-x를 사용하면 모든 파일 시스템이 서로 다른 파일 시스템에 있다고 가정 할 때 모든 제외가 필요하지 않습니다 (내 시스템에서는 lost + found를 제외한 모든 제외).

내가 아는 유일한 프로그램은 하드 링크 (적어도 내 시스템에서는)를 사용 git하므로 -H 옵션을 추가하는 이유입니다. 내가 -H를 사용하지 않아도 될 것이라고 생각하는 유일한 문제는 약간 더 많은 공간을 차지한다는 것입니다.

부트 로더의 경우 GRUB2를 MBR과 함께 사용하는 경우 내가 사용하는 명령은 grub-install /dev/sdasda를 올바른 드라이브로 교체하는 것입니다. 새 드라이브를 부팅 가능하게 만들어야합니다. 다른 부트 로더 또는 UEFI를 사용하는 경우 새 드라이브를 올바르게 부팅하는 방법을 Google에서 확인합니다. 새 드라이브의 / boot는 현재와 동일한 파티션에 있어야한다는 점을 명심하십시오 (/ boot에 UUID를 사용하지 않는 경우) fstab을 적절히 수정해야합니다.


답변

방금이 작업을 성공적으로 수행했습니다 (커플 시도 후).

나는 사용했다

sudo rsync -ahPHAXx --delete --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} / /mnt

그런 다음 /mnt/etc/fstab부트 파티션 스왑 공간에 대한 파일을 재설정했습니다 .

그런 다음 GRUB을 재설정해야했습니다.

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
sudo grub-install --recheck /dev/sdX
sudo update-grub

답변

이 드라이브로 부팅을 수정하지 마십시오. 내 추천 :

  1. 고장난 시스템의 핫스왑 위험을 감수하지 않고 다른 시스템 의 드라이브 를 연결하십시오.
  2. rsync 비 시스템 파일을 새 디스크로 복사합니다.
  3. 별도의 하드 디스크에서 부팅, 최소 루트 및 스왑을 만듭니다. 문제가있는 하드 디스크에서 복제 할 운영 체제와 동일한 운영 체제를 설치하십시오.
  4. 이 새 디스크에서 부팅합니다 (대상 호스트에서 가동 중지 시간이 발생할 위험이없는 경우 별도의 시스템에서 이상적임). 그렇지 않으면이 디스크로 대상 호스트를 부팅 할 수 있습니다.
  5. 올바른 마운트 지점을 사용하여 2 단계의 디스크를이 새로운 시스템에 추가하십시오. 이제 시스템 드라이브의 복제본이 있습니다. 파티션을이 새 디스크에 (선택적으로) 복사 할 수 있지만 디스크를 OS 부팅에 필요한 최소 요구 사항으로 유지하는 것이 좋습니다. 알다시피, 주 파티션에 너무 많은 것들이 있으면 복구가 어렵습니다. 서버가 헤드리스이므로 네트워크 구성을 올바르게 복사하십시오.
  6. 4 단계에서 처음에 대상을 부팅하지 않기로 선택한 경우에는 이상 시스템의 드라이브를이 새 디스크 쌍으로 교체하십시오.
  7. 재부팅하십시오.

답변

나는 rsync에 Centos Freepbx 배포판에서 많은 시간을 보내고 부팅 가능한 새 디스크를 가지고 있으며 마지막으로 fstab 및 grub UUID를 수정하면 작동하지 않습니다.

그것을 작동시키는 마지막 단계는

dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1
dd if=/tmp/mbrsda.bak of=/dev/sdb bs=446 count=1
grub

Grub CLI에있을 때 (즉, grub>프롬프트에서) :

device (hd0) /dev/sda
device (hd1) /dev/sdb
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit

를 누르면 enter이제 종료하고 기존 디스크를 제거한 다음 새 디스크로 부팅 할 수 있습니다.