Cent OS 5에서 백업 할 서버의 스냅 샷을 생성하는 방법


1

VPS에서 Dedicate server로 이동하고 있습니다. 불행히도 대부분의 전용 서버는 관리되는 VPS와 같은 서버 백업을 제공하지 않으며 문제가 발생하면 이전의 모든 스크립트 / 파일을 백업하는 것이 좋습니다.

그래서 문제는; 동일한 서버에 다른 폴더에 저장되는 특정 디렉토리의 "스냅 샷"을 매일 만들 수 있습니까?

당연히 이러한 백업은 외부 재해로부터 보호되지 않습니다. 악성 스크립트 / 해킹 등으로 인한 손상으로부터 보호를 찾고 있습니다.

고급 감사합니다.

답변:



0

동일한 서버에 다른 폴더에 저장되는 특정 디렉토리의 "스냅 샷"을 매일 만들 수 있습니까? ... 악의적 인 스크립트 / 해킹 등으로 인한 손상을 방지합니다.

그렇습니다. 수정 관리 소프트웨어 도구 중 하나 가 바로 그렇게 할 것입니다.

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

많은 서버에는 설정 파일, 템플릿, 사용자 정의 서버 측 cgi-bin 스크립트, 사용자 정의 브라우저- 사이드 .js 스크립트, .html 콘텐츠 등 내가 사용하고 있던 오래된 오래된 버전으로).

처음 설정하면 해당 폴더로 이동하여 일회성 설정을 수행합니다.

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

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

작업 파일의 손상 또는 기타 변경이 의심되는 경우 (모든 스냅 샷을 포함하는 ".hg"폴더가 손상되지 않았다고 가정)

hg status

어떤 하위 하위 폴더에 얼마나 깊게 중첩되어 있는지에 관계없이 변경된 파일을 정확하게 알려줍니다.

hg diff

각 파일에서 변경된 내용을 정확하게 알려줍니다.

내가보기에 마음에 들지 않으면 악의적 인 수정이거나 더 일반적으로 유감 스럽지만 지금은 유감스럽게 생각합니다.

hg revert --all

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

내가하면 어떻게 내가 무엇을보고처럼 - 내가 좋아하는 뭔가를 입력 - 사실은 더 잘하게 뭔가를 쥐게했습니다

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

왜 내가 이러한 변경을했는지 설명하는 의견과 함께. (단 되돌릴 수있는 방법이 있습니다 일부 파일을, 만 커밋 일부 파일을, 만 커밋도 방법 어떤 하나의 파일에 수행 된 많은 변화를 - 자세한 내용은 설명서를 참조하십시오).

아마도 당신은 오히려 매일 같은 것을하는 cron 작업을 원할 것입니다.

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").
  • 필요한 경우 자동으로 재생성되므로 백업 할 필요가없는 "캐시 /"하위 폴더를 제외하고 일부 폴더 P의 거의 모든 것을 백업하려고합니다. ".hgignore"를 사용하여 캐시 하위 폴더를 제외시킵니다.
  • 그런 다음 위와 같이 Mercurial을 사용합니다.
  • cron 스크립트에 의해 생성 된 파일이 올바르게 보이지 않으면 되 돌린 후에 "좋은 버전"을 "실제"위치로 다시 밀어 넣는 추가 단계를 수행해야합니다.

추신 : 서버와 다른 도시의 컴퓨터에서 때때로 TortoiseHg 워크 벤치를 실행하고 장면 뒤에서 실행되는 작은 버튼을 클릭하십시오.

hg pull

(저장소에 커밋 된 모든 것의 오프 사이트 백업을 가져 오려면 Mr. Backup의 비밀번호를 요청합니다).

편집을 프로덕션 서버에 실시간으로 만드는 대신 다른 시스템에서 편집 한 다음 커밋하고 커밋하는 것이 좋습니다.

hg push

프로덕션 서버로 연결합니다.

".hg /"폴더는 커밋이 매우 느립니다. 한 커밋에서 다음 커밋으로 변경 되는 파일 만 저장 하고 비교적 작은 변경 세트도 저장되기 전에 압축되기 때문입니다.

이 느린 성장을 처리하는 더 좋은 방법이 있을지 모르지만 현재 내가하는 일은 다음과 같습니다.

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

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