SSH를 통해 실행 중인 서버의 루트 파일 시스템을 복제할 수 있나요?

SSH를 통해 실행 중인 서버의 루트 파일 시스템을 복제할 수 있나요?

실행 중인 서버를 백업하고 싶습니다. 모든 구성 파일과 모든 것을 끄지 않고 사용할 수 있습니다.

이 작업을 어떻게 수행할 수 있습니까? 다 복사해봐도 괜찮나요? 디렉토리 에 문제가 있었기 때문입니다 root.

중요한 구성이 있기 때문에 많은 실험을 하고 싶지 않습니다.

나는 이 모든 것을 ssh. 이 백업을 어떻게 할 수 있나요?

어떤 아이디어가 있나요?

답변1

모든 데이터를 백업하려면 SSH를 통해 서버에 로그인한 다음 모든 파일을 복사하면 됩니다. 예를 들어 와 함께 scp또는 rsync.

다음을 사용하면 OS 파일을 포함한 모든 것을 복사할 수도 있습니다.
rsync -zvr --exclude /dev/ / destination_computer_name_or_ip

-r: 재귀
-v: 자세한 내용
-z: 압축 활성화

부트 레코드는 복사되지 않습니다. 그렇게 하려면 전체 디스크를 복사하고 디스크가 마운트되지 않은 상태에서 복사하려고 합니다. (읽기: 완전히 전체 백업하려는 머신을 종료하고 liveCD에서 부팅하거나 다른 파티션에서 부팅하십시오.)

그런 다음 dd를 사용하여 전체 드라이브를 읽습니다.

예제 코드:

백업을 저장할 PC:
nc -l 4242 | gunzip | cat > my_full_disk_backup_of_PC_named_foo

그리고 백업할 PC에서는 다음을 수행합니다.
dd if=/dev/sda of=- bs=1M | gzip | nc -p 4242 name_of_the_destination

dd는 디스크에서 읽습니다. 부트 섹터와 빈 섹터를 포함한 전체 디스크.
이 예에서는 sd에 표시된 대로 첫 번째 디스크에 대해 설정했습니다.. 두 번째 디스크는 sdb, 세 번째 디스크는 sdc 등으로 조정합니다.

로 표시된 표준 출력으로 출력합니다 -.

bs=1M은 블록 크기를 설정합니다. 이것이 필요하지는 않지만, 그렇지 않으면 작은 읽기 작업이 많이 발생하고 오버헤드가 커집니다. 이 값을 512바이트 또는 4K보다 큰 값으로 설정하면 작업 속도가 빨라집니다.

다음으로 출력을 gzip으로 파이프하여 |압축합니다. 이는 CPU가 네트워크보다 훨씬 빠르다고 가정합니다. 소스에서 gzip을 건너뛰고 대상에서 gunzip을 건너뛸 수 있습니다. 이 경우 네트워크를 통해 압축된 데이터 대신 원시 데이터를 보내게 됩니다.

마지막은 nc또는 netcat입니다. 이전 파이프의 입력을 받아 네트워크에 있는 컴퓨터의 포트 4242에 배치합니다.name_of_the_destination.


수신 측에서는 그 반대를 수행합니다.

포트 4242의 입력을 nc -l을 통해 수신합니다.

필요한 경우 gzip을 풀고,

그리고 마지막으로 파일에 씁니다.


중요 사항:

백업 중인 디스크에서 부팅하는 동안 이 작업을 수행할 수 있습니다. 그러나 백업 중에 파일 시스템이 동일하게 유지된다는 보장은 없습니다. 따라서 디스크를 읽기 전용으로 부팅할 수 있는 경우에만 시도하십시오. (예: 순수하게 램 디스크를 사용하는 경우)

답변2

내가 할 일은 다음과 많이 비슷하다헤네스

만약을 대비해 iso 파일을 만들고, 다운로드하고, 디스크나 USB에 넣고, 사본을 드롭박스에 업로드하겠습니다.

mkisofs -V LABEL -r DIRECTORY | gzip > backup.iso.gz

rsync내 친구는 Rackspace에서 호스트하고 있는데 Rackspace 사용자에게는 자동으로 iso 파일을 생성할 수 있는 옵션이 있으며, 새 서버로 마이그레이션하는 경우에는 무엇이든 사용하여 이전 클라우드 서버에 이전 백업을 저장하고 종료 할 수 있다고 말했습니다. , 그들은 여전히 ​​​​지불하지만 저렴합니다.

귀하의 호스팅이 자동 백업 시스템을 제공하는지, 아니면 지원 비용을 지불하고 있는지 모르겠습니다. 처음이라면 그들에게 물어보고 그렇게 하도록 놔두는 것이 좋습니다.

관련 정보