리눅스 시스템의 완전한 복원


20

rsync를 사용하여 시스템에서 다양한 파일을 백업하는 것에 익숙하지만 머신을 완전히 복원하는 가장 좋은 방법은 무엇입니까?

내가 과거에 시도한 것은 :

  1. Fedora 설치 디스크에서 기본 포맷 / 재설치
  2. 네트워킹이 활성화되어 있는지 확인
  3. 새로 설치된 시스템의 상단에 rsync 백업에서 모든 것을 복사

이런 식으로 작동하지만 설치된 모든 패키지가 나중에 100 % 작동한다고 생각하지 않습니다.

최소한의 노력으로 시스템을 복원 할 수 있기를 원하며 모든 것이 백업 시점과 동일하게 작동합니다. 또한 가능한 경우 다른 시스템에 설치하고 essentailly는 동일한 패키지 및 데이터를 가진 두 개의 시스템을 갖습니다.


다른 컴퓨터에 설치하고 싶다고 말하면 다른 '동일한 / 컴퓨터 또는 더 데스크탑이나 랩톱과 같은 것입니까?
Ichorus 2016 년

하드웨어는 다를 것이지만 둘 다 동일한 소프트웨어 패키지를 원할 것입니다
Simon Foster

답변:


17

여기 내가 한 일이 있습니다 (/ dev / sda의 단일 디스크로 가정)

  • dd를 사용하여 MBR 및 파티션 테이블을 백업하십시오. "dd bs = 512 count = 1 if = / dev / sda of = / backups / sda.layout"

  • "rsync -axvPH --numeric-ids ..."와 같이 rsync를 사용하여 전체 내용을 복사하십시오.

복원시 나는 이것을한다 :

  • sysrescuecd로 대상 시스템을 부팅 하면 일반적으로 USB 스틱에 'sda.layout'파일이 있습니다.

  • dd를 사용하여 MBR / 파티션 테이블을 복원하십시오. "dd bs = 512 count = 1 if = / path / to / sda.layout of = / dev / sda"

  • 커널이 파티션 테이블을 다시 읽도록 하려면 partprobe (감사 자 Mark 에게 감사) 를 사용하십시오 .

  • / restore / 아래에 모든 다양한 부분을 마운트하십시오. 복원시 마운트 지점을 동일하게 만들므로 소스에 / boot, / var가 있으면 / restore / boot, / restore / var 등이됩니다.

  • rsync를 사용하여 전체를 복원하십시오.


3
이 작업을 여러 번 수행했으며 표준 Linux CLI 명령을 사용할 수 있다는 장점이 있습니다. rsyncshot을 사용하여 rsync 주위의 perl 스크립트를 사용하여 중앙 서버에 백업합니다. 그런 다음 sysrescuecd에서 부팅하고 파티션 테이블을 dd 한 후 전체를 다시 동기화하십시오. BTW, "partprobe"가 파티션 테이블을 다시 읽습니다
Mark Porter

좋아, 이것은 사악한 해킹으로 보일 수 있지만 fdisk처럼 sysctl ()을 실행하여 커널이 파티션 테이블을 다시 읽도록 할 수 있기 때문에 partdisk와 달리 fdisk가있을 수 있습니다. 그것은 : FDISK / 디바이스 / yourdisk << EOF w EOF
번드 호그

모두의 제안에 감사드립니다. 더 나은 솔루션이 있어야한다는 것을 알고있었습니다. 이러한 제안을 시도해보고 나에게 가장 적합한 것이 무엇인지 살펴보십시오.
Simon Foster 2018 년

3
dd의 개수를 잊지 마십시오! "dd bs = 512 if = / dev / sda of = / backups / sda.layout count = 1"및 "dd bs = 512 if = / path / to / sda.layout of = / dev / sda count = 1"
Steven

@ 스티븐 : 크랩! 캐치 주셔서 감사합니다. 의견을 투표 할 수 있습니까?
kbyrd

6

시스템을 완전히 복제하지는 않습니다. 변경 사항이 무엇인지 알 수 없으며 시스템 복제 이미지는 변경이 발생한 순간 이미 날짜가 지났습니다. 이를 수행하는 가장 좋은 방법은 기능적으로 동일한 시스템을 생성 할 수있는 절차를 수립하는 것입니다. 한 가지 가능성은 킥 스타트, AutoYaST 또는 이와 유사한 도구입니다. 구성을 올바르게 백업하고 Bcfg2, Puppet 또는 CFEngine과 같은 구성 관리 시스템을 사용하여 모든 것을 직접 구성하는 대신 구성하십시오. 그런 다음 다른 시스템과 유사한 새 시스템을 만들거나 기존 시스템을 다시 만들어야하는 경우 간단하고 명확하게 정의 된 절차입니다.


3

더 많은 노력이 필요하지만 KickstartRevisor를 사용하면 설치를 사용자 정의하고 다른 시스템에서 사용할 수 있습니다. 사용자 정의 된 버전의 설정 파일을 포함 할 수 있습니다.

홈 디렉토리를 별도의 파티션에 유지하는 것이 좋습니다. 다른 파티션에서 새로 설치하는 동안 해당 파티션을 그대로 둘 수 있습니다.


2

시스템 복구 cd 사본을 확보 하고 최소 설치 후 부팅 한 후 디스크에 마운트하고 chroot 한 다음 rsync를 수행하십시오. 완료되면 update-grub을 실행하여 올바른 부팅 장치 및 커널에서 부팅해야합니다.


2

나는 항상 새로운 시스템 (백업 등)을 설치하는 Gentoo 방식이 단순성 때문에 최선이라고 생각했습니다.

  1. 작동하는 최소한의 시스템을 만듭니다.
  2. livecd에서 작업 시스템을 하드 드라이브로로드하십시오.
  3. 파일 시스템을 타르 고 어딘가에 저장하십시오.
  4. livecd를 사용하여 대상 시스템을로드하십시오.
  5. 대상 하드 드라이브를 준비하고 마운트하십시오.
  6. 마운트 된 하드 드라이브를 풉니 다.
  7. chroot를 입력하십시오.
  8. 부트 로더 및 기타 시스템 종속 항목을 설정하십시오.
  9. 재부팅하고 가십시오.
  10. 필요에 따라 새 소프트웨어를 설치하거나 사용자 폴더를 복사하거나 다른 파일을 추가하십시오.

2

clonezilla live CD를 사용해보십시오. 아무것도 설치하지 않고도 라이브 세션으로 부팅하고 머신 이미지를 생성 할 수 있습니다. 그런 다음 이미지 사본을 네트워크 공유 또는 원격 시스템 등에 저장할 수 있습니다.


0

정확히 같은 머신이라면 dd디스크 이미지를 생성 한 다음 필요에 따라 이미지를 다시 생성합니다 (적절한 경우 나중에 일부 구성 변경 가능).

하드웨어를 전환하는 경우 파일 시스템 루트의 tarball 또는 완전한 rsync 백업을 작성하는 데 성공했습니다. 전체 백업을 수행하는 한 기본 Fedora 설치가 전제 조건이되어서는 안되는 이유가 무엇인지 잘 모르겠습니다.


0

절차는 많은 문제를 일으킬 수 있으므로 피해야합니다.

이 문제를 해결하기 위해 권장되는 두 가지 방법이 있으며 개발 환경을 순수하게 구축하려는 경우 세 번째 방법이 있습니다.

이미징

복원 할 하드웨어가 동일하거나 유사 할 경우 디스크 이미징 도구를 사용하여 전체 하드 드라이브 또는 어레이의 사본을 만드십시오. 복원하려는 경우이 이미지로 문제가되는 시스템을 재 이미징하십시오. 여러 컴퓨터로 이미지를 생성하는 경우 다른 장치 (호스트 이름, 고정 IP 주소 등)에서 서로 충돌하지 않도록 컴퓨터 별 설정을 업데이트해야합니다.

실제 이미징을 수행하려면 하드 드라이브를 복제 할 수있는 도구 또는 제품을 권장합니다.

구성 / 홈 디렉토리 백업

기본 머신에서 필요한 다음 디렉토리 중 하나를 정기적으로 백업하십시오 (원하는 방법으로).

/ home-모든 사용자 개인 설정, 문서 및 파일
/ etc-구성
/ opt-패키지 관리자를 통해 설치되지 않은 특수 소프트웨어
/ usr / local-패키지 관리자를 통해 설치되지 않은 특수 소프트웨어
/ var-로그 및 기타

복원 할 때는 해당 시스템에 OS를 다시 설치 한 다음 각 파일 (또는 관련 파일 만)을 적절한 위치에 복사하십시오.

스냅 샷이있는 가상 머신

VMWare (또는 원하는 다른 것)에서 가상 머신을 작성하십시오. 원하는대로 구성되면 스냅 샷을 만듭니다. 그런 다음이 스냅 샷을 여러 개의 새로운 또는 기존 가상 머신으로 쉽게 복원 할 수 있습니다.

일반적으로 데이터 및 구성 만 백업해야합니다 (단,이를 정의하십시오). 언제든지 OS와 소프트웨어를 간단하게 재 구축 할 수 있습니다. 자신 만의 컨텐츠 만 가치가 있습니다. 이 설정이 개발 용이고 동일한 환경을 보장해야하는 경우 (단순히 작업을 다시 수행하는 것이 아니라) 가상 머신의 스냅 샷이 가장 좋습니다.

이미징은 무차별 대입 솔루션입니다. 가능하다면 데이터를 백업하고 OS 자체에 대해 걱정하지 마십시오. 완전히 복원하려고하면 문제가 발생합니다.

최종 의도가 무엇인지 명확히 할 수 있으면 더 자세한 솔루션을 제공 할 수 있습니다.


0

"하드웨어가 다를 것"이라고 말하면 SystemImager 가 매우 유용 할 수 있습니다.

PXE 및 Rsync와 관련된 래퍼 스크립트입니다. 따라서 생성되는 "백업"은 백업 된 Linux 서버의 완전한 디렉토리 구조 일뿐입니다. 당신은이 디렉토리에 "cd"와 피드로 주위에 물건을 변경할 수 있습니다. (이미지를 푸시 아웃 할 때 SystemImager가 네트워크 설정 변경을 자체적으로 관리합니다.)

이미지를 푸시 아웃하기 전에 백업 된 서버에 chroot하고 yum 또는 apt를 실행하여 소프트웨어를 설치할 수 있습니다.

편집 : 파티션 / 논리 볼륨을 생성하고 대상 시스템의 디스크 크기에 따라 수정하는 SI 스크립트를 살펴볼 수 있습니다. 커널 모듈을 추가 / 제거 할 수도 있습니다.


0

나는 Mondo Rescue와 함께 행운을 빕니다. 기본적으로 나중에 사용할 수 있도록 모든 파일과 파티션을 부팅 가능한 CD에 백업합니다. 파티션과 드라이브의 변경을 처리 할 수 ​​있습니다.

http://www.mondorescue.org/



0
  • 가장 안전한 방법은 전체 디스크 또는 최소한 관련 파티션 을 복제 하고 Live CD를 사용하여 복원하는 것입니다.

  • 보다 공간 효율적인 다른 방법은 dump (XFS의 경우 xfsdump )를 사용하는 것이지만이 경우 수동으로 파티션을 다시 작성 (포맷)해야합니다. 동일한 매개 변수, 특히 UUID 및 LABEL을 사용하여 작성하는 것을 잊지 마십시오.

  • tar--xattrs 매개 변수 와 함께 사용 하여 각 파일의 확장 된 속성을 저장할 수도 있습니다 .


1
Linux의 최신 rsync에는 각각 확장 된 속성 및 ACL에 대해 -X 및 -A가 있습니다.
kbyrd 2016 년

0

partimage 및 partclone (Clonezilla의 일부)은 전체 시스템 이미지를 만드는 데 유용한 유틸리티입니다.

알다시피, 전체 시스템 이미지는 반드시 시스템 이름 일 필요는 없습니다. 일반적으로 장치 이름 때문입니다.

GRUB (가급적 별도의 / boot 파티션에) 및 MBR (예 : LiveCD)을 다시 설치하는 것만 큼 간단 할 수 있습니다.

또 다른 방법은 구성 관리 도구를 사용하여 기본 이미지 (예 : Vagrant 기본 상자)에 적용되는 정책을 정의하는 것입니다. 데이터 백업을 블록 및 / 또는 객체 스토리지 (EBS / S3, Openstack Block Storage / Openstack Object Storage)로 분리

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