라이브 웹 사이트에서 백업 및 수정 관리를 유지하기위한 최상의 솔루션은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/27292

  •  09-06-2019
  •  | 
  •  

문제

라이브 웹 사이트에서 백업 및 수정 관리를 유지하기위한 최상의 솔루션은 무엇입니까?

업무의 일환으로 여러 라이브 웹 사이트에서 작업합니다. 시간이 지남에 따라 라이브 폴더의 백업을 유지하는 효율적인 방법이 필요합니다. 또한 이러한 사이트를 업데이트하는 것은 고통 스러울 수 있습니다. 특히 어떤 이유로 든 라이브 환경에서 변경 사항이 발생하는 경우에는 더욱 그렇습니다.

이상적인 것은 번거롭지 않은 소스 제어입니다. 한동안 SVN을 구현했는데 백업 및 수정 관리 (임시 변경 또는 주요 변경 사항의 손쉬운 복귀) 등을위한 세미 솔루션으로 훌륭했습니다.

안타깝게도 SVN은 특히 다른 개발자가 폴더 구조를 변경하거나 웹 사이트 디렉토리를 복사 / 이동할 때 문제를 일으키는 모든 곳에 .SVN 숨겨진 디렉토리를 배치합니다. 이것이 교육 등의 문제라는 주장을 들었지만 SVN이 취한 접근 방식은 우리에게 실용적인 해결책이 아닙니다.

증분 백업 솔루션이 더 좋을 수 있다고 생각합니다.

기타 가능성은 다음과 같습니다.

  1. SVK 는 문제가되는 명령 줄입니다. 게다가 이것이 얼마나 적절한 지 잘 모르겠습니다.
  2. 수성 , 아마도 분산 된 구성 요소를 숨기는 트리거가 있습니다. 이 경우에는 필요하지 않으며 다른 개발자에게는 불필요하게 복잡합니다.

    Mercurial로 잠시 실험했지만 저장소를 분리하고 라이브 폴더 작업 복사본과 지속적으로 동기화하는 좋은 방법을 찾지 못했습니다. 소스 제어 솔루션 (저장소와 라이브 폴더를 같은 위치로 만들기)과 다른 백업 솔루션을 결합하면 이것이 갈 길일 수 있습니다.

    Mercurial의 한 가지 단점은 파일 업로드 등을위한 자리 표시 자 위치로 빈 폴더가있는 웹 사이트에서 문제가되는 빈 폴더를 소스 제어 아래에 두지 않는다는 것입니다.

  3. Rsync , 실제로 조사하지 않았습니다.

    이상적으로는 과거 버전을 빠르게 검색 할 수있는 쉬운 방법으로 라이브 웹 사이트의 백업을 유지하는 가장 좋은 방법에 대한 귀하의 조언에 감사드립니다.

    답장 :

    • @Kibbee :

      • VSS 외에는 어떤 것에 익숙하지 않고 다른 것을 배우기위한 시간 / 노력의 부족만큼 교육에 관한 것이 아닙니다.

      • xcopy / 7-zip 접근 방식은 합리적으로 들리지만 빠르게 많은 공간을 차지할 것입니다.

      • 소스 제어에 관해서는 소스 제어가 "이제 폴더의 상태입니다. 처리하겠습니다. 항목을 일치시킬 수없는 경우 그것은 당신의 잘못입니다. 나는 열심히 실패하지 말고 새로운 역사를 시작할 것입니다.

      • @Steve M :

        • 예, 그렇게하는 것이 더 좋은 방법이지만 상당한 문화적 변화가 필요합니다. 나는이 접근 방식을 매우 좋아한다고 말했습니다.
        • @mk :

          • 좋습니다. Rsync를 사용하여 배포 할 생각은 없었습니다. 차이점 만 업로드합니까? 사이트 다운 타임으로 인해 변경할 때마다 전체 라이브 디렉토리를 덮어 쓰는 것은 문제가 될 수 있습니다.

            전통적인 옵션이 더 있는지 궁금합니다

도움이 되었습니까?

해결책

SVN을 계속 사용할 수 있지만 라이브 환경에서 체크 아웃하는 대신 내보내기를 수행하면 .svn 디렉토리가 생성되지 않습니다.물론 단점은 라이브 환경에서 코드 변경이 발생할 수 없다는 것입니다.이것은 좋은 일입니다.

일반적으로 프로덕션 시스템의 코드 변경은 허용되지 않아야합니다.개발 / 테스트 / UAT 환경에서 변경하고 테스트 한 다음 OK로 확인되면 SVN에서 해당 코드에 RELEASE-x-x-x와 같은 태그를 지정할 수 있습니다.그런 다음 라이브 시스템에서 해당 태그와 함께 코드를 내 보냅니다.

다른 팁

옵션 3을 사용합니다. Rsync.몇 가지 추가 검사와 함께이 작업을 수행하기 위해 bash 스크립트를 작성했지만 여기에 수행되는 작업의 기본 사항이 있습니다.

  1. 실시간 추진을위한 태그를 만드세요.
  2. 해당 태그에서 svn export를 실행합니다.
  3. 실시간 동기화

    지금까지 잘되고 있습니다.사용자 충돌에 대해 걱정하거나 프로덕션 머신에서 svn을 실행하기위한 별도의 사용자를 가질 필요가 없습니다.

선택한 소스 제어 솔루션은 사람들이 파일을 이동, 삭제 또는 추가하고 소스 제어 시스템에 알리지 않으면 문제가 발생합니다.이 문제를 해결할 수있는 소스 제어 항목을 알지 못합니다.

프로젝트에 참여하는 사람들을 교육 할 수없는 경우 [1], 매일 스냅 샷을 찍어야 할 수도 있습니다.네트워크 드라이브에 xcopy를 사용하는 배치 파일과 같이 간단한 것, 그리고 너무 많은 공간을 차지하지 않도록 명령 줄에서 7-zip으로 압축하는 것이 가장 간단한 해결책 일 것입니다.

[1] 나는 이것을 매우 믿지 않을 것입니다. 아마도 사람들이 너무 고집스럽고 배우려고하지 않거나 "추가 작업"을하지 않는 경우 일 것입니다.이전 버전으로 돌아 가야하거나 2 명이 동일한 파일을 편집 한 경우 소스 제어로 얼마나 많은 시간을 절약 할 수 있는지 신경 쓰지 마십시오.

rsync는 차이점 만 업로드합니다.개인적으로 사용하지는 않았지만 Mark Pilgrim 은 그것이 어떻게 바이너리 차이를 훌륭하게 처리합니다 .

svn + rsync는 환상적인 솔루션처럼 들립니다.나중에 시도해 보겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top