CentOS 5에서 백업용 서버 스냅샷을 어떻게 생성하나요?

CentOS 5에서 백업용 서버 스냅샷을 어떻게 생성하나요?

VPS에서 전용 서버로 전환 중입니다. 불행하게도 대부분의 전용 서버는 관리형 VPS처럼 서버 백업을 제공하지 않으며 문제가 발생할 경우 모든 스크립트/파일을 백업해 두는 것이 마음에 듭니다(이전에는 그랬습니다).

따라서 문제는 동일한 서버에 서로 다른 폴더에 저장되는 특정 디렉터리의 "스냅샷"을 매일 생성하는 것이 가능하다는 것입니다.

당연히 이러한 백업은 외부 재해로부터 보호되지 않습니다. 악의적인 스크립트/해킹 등으로 인한 피해로부터 보호받기를 더 원합니다.

답변1

아마도 Webmin과 같은 것을 찾고 있을 것입니다.http://webmin.com/

CentOS 서버 설정의 필수 부분입니다. 설치가 정말 쉽고 서버 관리, 특히 백업 작업이 매우 간편합니다. 여기 문서를 살펴보십시오.http://doxfer.webmin.com/Webmin/FilesystemBackup

답변2

동일한 서버에 다른 폴더에 저장되는 특정 디렉터리의 "스냅샷"을 매일 만드는 것이 가능합니까? ...악성 스크립트/해킹 등으로 인한 손상으로부터 보호합니다.

예, 다음 중 하나라도 해당됩니다.많은 개정 관리 소프트웨어 도구그게 바로 그 일이 될 것입니다.

나는 종종 예쁜 GUI TortoiseHg 프론트엔드와 함께 Mercurial("hg")을 사용합니다.

많은 서버에는 설정 파일, 템플릿, 사용자 정의 서버측 cgi-bin 스크립트, 사용자 정의 브라우저 등 백업하려는 모든 항목이 포함된 하나의 폴더(*), 아마도 "/var/www/"가 있습니다. 사이드 .js 스크립트, .html 콘텐츠 등(머신의 다른 모든 것은 상용구 운영 체제 및 애플리케이션 항목입니다. 해당 항목이 손상되면 되돌리기보다는 지우고 최신 버전을 설치할 것입니다. 내가 사용하고 있던 오래되고 쓸모없는 버전으로).

처음 설정할 때 해당 폴더에 CD를 넣고 일회성 설정을 수행합니다.

hg init
hg add
hg commit -u dc -m "initial setup"

"init" 라인은 언젠가 압축된 스냅샷을 저장할 ".hg/" 폴더를 생성합니다. (따라서 인기 있는 Mercurial 튜토리얼의 이름은http://hginit.com/). 기본적으로 "추가" 줄과 "커밋" 줄은 하위 하위 폴더에 얼마나 깊이 중첩되어 있는지에 관계없이 해당 폴더의 모든 파일을 검색하고 (압축) 복사본을 해당 ".hg/" 폴더에 저장합니다. .

작업 파일의 손상 또는 기타 변경이 의심되는 경우(그리고 모든 스냅샷이 포함된 ".hg" 폴더가 손상되지 않았다고 가정할 때) 다음을 입력합니다.

hg status

하위 폴더에 아무리 깊게 중첩되어 있어도 어떤 파일이 변경되었는지 정확히 알려주는 다음 다음을 입력합니다.

hg diff

각 파일에서 무엇이 변경되었는지 정확하게 알려줍니다.

내가 본 내용이 마음에 들지 않으면 악의적인 수정이거나 더 일반적으로 내가 지금 후회하는 것은 내 자신의 어리석은 편집입니다.

hg revert --all

모든 변경 사항을 가장 최근 커밋으로 되돌립니다.

만약 내가하다제가 보는 것과 같습니다. 실제로 더 나은 결과를 얻기 위해 수정했습니다. 다음과 같이 입력합니다.

hg add
hg commit -u dc -m "tweaked .htaccess so we now have Clean URLs."

내가 이러한 변경을 한 이유를 설명하는 의견과 함께. (되돌리는 방법만 있습니다.일부파일 중 커밋만일부파일, 커밋하는 방법까지일부단일 파일에 적용된 많은 변경 사항 - 자세한 내용은 설명서를 참조하세요.

아마도 매일 다음과 같은 작업을 수행하는 크론 작업을 갖고 싶을 수도 있습니다.

hg add
hg commit -u mr_backup -m "cron automated snapshot of the server."

커밋된 모든 버전의 압축된 스냅샷은 ".hg/" 폴더에 유지됩니다. 커밋된 버전으로 되돌리는 "hg update" 명령이 있습니다. 첫 번째 커밋과 두 번째 커밋 사이에 정확히 무엇이 변경되었는지 확인하려면 "hg diff -r 1:2" 명령이 있습니다.

더 복잡한 상황

(*) 백업하고 싶은 폴더가 하나만 있는 경우가 많습니다( "/var/www/" ). 그러나 상황이 좀 더 복잡한 경우도 있습니다. 백업하려는 파일이 여러 폴더에 분산되어 있고 그 사이의 유일한 공통 폴더는 루트 폴더 "/"뿐이므로 백업하고 싶지 않습니다. 루트 폴더 "/.hg/" 의 ".hg/" 저장소.

아마도 더 나은 처리 방법이 있을 것입니다. 하지만 지금 제가 하고 있는 일은 다음과 같습니다.

  • 백업하려는 모든 파일에 대해 읽기 전용 권한을 가진 "MrBackup"이라는 특수 사용자를 만듭니다.
  • 백업하려는 모든 폴더가 /home/mr_backup의 하위 폴더로 표시되도록 설정했습니다. 현재 다음이 무작위로 혼합되어 있습니다.
    • 일부 파일은 실제로 MrBackup의 홈 폴더에 있고 "필요한" 다른 위치에는 해당 파일에 대한 소프트 링크가 있습니다.
    • 일부 파일에는 "필요한" 위치와 MrBackup의 홈 폴더 어딘가에 두 위치 모두에 대한 하드 링크가 있습니다.
    • cron 스크립트는 주기적으로 "라이브" 위치의 일부 파일을 MrBackup 홈 폴더의 백업 폴더에 복사하고, 아마도 다른 서버의 SQL 데이터베이스를 MrBackup 홈 폴더의 덤프 파일로 덤프하며, cron 스크립트 자체의 백업도 만듭니다( "crontab -l > /home/mr_backup/backup/crontab.txt").
  • 필요한 경우 자동으로 다시 생성되므로 백업할 필요가 없는 "cache/" 하위 폴더를 제외하고 일부 폴더 P의 거의 모든 항목을 백업하고 싶은 경우가 종종 있습니다. 캐시 하위 폴더를 제외하려면 ".hgignore"를 사용합니다.
  • 그런 다음 위와 같이 Mercurial을 사용합니다.
  • cron 스크립트에 의해 생성된 파일이 제대로 보이지 않으면 되돌린 후 "좋은 버전"을 "라이브" 위치로 다시 푸시하기 위해 몇 가지 추가 단계를 수행해야 합니다.

ps: 내 서버와 다른 도시에 있는 컴퓨터에서 가끔 TortoiseHg 작업대를 실행하고 뒤에서 실행되는 작은 버튼을 클릭합니다.

hg pull

(그리고 Mr Backup의 비밀번호를 묻습니다) 저장소에 커밋된 모든 항목의 오프사이트 백업을 가져옵니다.

편집을 프로덕션 서버에 실시간으로 적용하는 것보다 일반적으로 다른 컴퓨터에서 편집을 수행한 다음 커밋하고 커밋하는 것이 더 좋습니다.

hg push

프로덕션 서버로 보냅니다.

".hg/" 폴더는 다음과 같은 파일만 저장하기 때문에 매우 느리게 증가합니다.변화하나의 커밋에서 다음 커밋으로, 상대적으로 작은 변경 집합도 저장되기 전에 압축됩니다.

아마도 이러한 느린 성장을 처리하는 더 좋은 방법이 있을 것입니다. 하지만 현재 제가 하고 있는 일은 다음과 같습니다.

현재 버전을 "hg 커밋"한 다음 오프사이트 백업 시스템으로 "hg 풀"한 후 1년에 한 번씩 서버의 ".hg/" 폴더를 삭제하고 "hg init"를 사용하여 새롭고 비어 있는 새 버전을 만듭니다. ".hg/" 폴더를 선택한 다음 현재 버전을 커밋합니다. (2014년 오프사이트 백업 저장소의 마지막 버전입니다.~해야 한다2015 오프사이트 백업 저장소의 첫 번째 버전과 동일합니다).

관련 정보