문제

사용이 가능한가요? 아파치 서브버전 (SVN)을 범용 백업 도구로 사용하시겠습니까?(일종의 재동기화 대안.)

도움이 되었습니까?

해결책

나는 이 기사가 svn을 사용하여 홈 디렉토리를 백업하는 방법에 대한 매우 멋진 설명이라고 생각합니다.

저는 Subversion을 사용하여 Linux 박스를 백업합니다.약간의 창의성만 있으면 다음 사항을 쉽게 다룰 수 있습니다.

  • 일일 스냅샷 및 오프사이트 백업.
  • 파일과 폴더를 쉽게 추가하고 제거할 수 있습니다.
  • 파일 버전을 자세히 추적합니다.

또한 몇 가지 보너스 기능도 허용합니다.

  • Subversion의 이벤트 후크를 통해 파일 시스템 활동을 추적하기 위한 정기적인 로그 이메일입니다.
  • 사용자는 모든 리포지토리 개정판에서 홈 폴더의 체크아웃을 요청할 수 있습니다.
  • 몇 가지 svn checkout 명령을 사용하여 신규 또는 교체 서버를 설정할 수 있습니다.

원천: http://www.mythago.net/svn_for_backup.html

또한 발견됨 이 기사 홈 디렉토리 버전 관리의 예를 보여줍니다.이를 통해 홈 디렉터리를 새 시스템으로 체크아웃하여 환경을 가져올 수 있습니다.비슷한 일을 했었는데 매우 유용하다고 생각했습니다.

다른 팁

SVN을 바이너리 파일의 백업으로 사용할 때 명심해야 할 한 가지는 SVN이 각 파일의 로컬 복사본(.svn/text-base에 있음)을 유지하기 때문에 파일 크기를 두 배로 늘린다는 것입니다.

그 외에도 백업에도 SVN을 사용합니다.모든 파일을 추가한 다음 스크립트를 통해 커밋하면 됩니다.

"일반 목적" 백업으로서는 아마도 다른 사람들이 제시한 이유(과도한 폴더가 많고 디스크 공간이 낭비됨)로 인해 아마도 가장 좋은 아이디어는 아닐 것입니다.백업만 유지하고 싶다면 필요에 따라 더 나은 옵션이 있을 수 있다고 다시 말씀드리고 싶습니다. 예:모든 단일 파일의 모든 단일 버전을 유지해야 합니까, 아니면 데이터의 특정 스냅샷으로 충분합니까?

하지만 제 사무실에는 공유 파일을 작업하는 6명의 소규모 팀이 있습니다(예:정책 및 절차 매뉴얼, 등록 양식 등).대부분의 경우 팀 구성원은 원격으로(집에서 또는 여행 중에) 작업하며 종종 오프라인으로 작업합니다.중앙 공유 폴더 설정을 사용하는 대신 SVN을 사용하여 각 사람에게 폴더의 전체 작업 복사본을 제공하여 가능할 때마다 작업하고 참조하고 동기화할 수 있습니다.이것은 하나의 돌로 두 마리의 새를 죽입니다.모든 사람이 오프라인에서도 파일에 액세스하고 편집할 수 있으며 백업에 있어 정말 뛰어난 중복성을 제공합니다.내 노트북이라면 불이 붙다, 다른 복사본을 체크아웃할 수 있기 때문에 번거롭지 않습니다(분명히 다른 컴퓨터에서).서버에 불이 붙으면 복원할 저장소의 백업을 갖게 됩니다.서버와 모든 저장소 백업에 불이 붙으면 잃어버린 파일은 모두 이전 버전의 파일입니다.현재 데이터를 잃을 수 있는 유일한 방법은 서버, 저장소 백업 및 결제 기능이 있는 모든 단일 컴퓨터에 불이 붙는 경우입니다.

하지만 일부 사람들이 말했듯이 SVN은 저장소에서 정보를 절대 제거하지 않습니다. 즉, 백업을 60일 동안만 보관하려는 경우에는 그렇게 할 수 없다는 의미입니다.이는 사실이 아닙니다.사용을 통해 내보내다, 덤프 그리고 수입 이전 버전의 파일을 효과적으로 지울 수 있습니다.예쁘지는 않지만 가능합니다.

나를 많이 짜증나게 하는 것 중 하나는 svn이 추적하는 모든 폴더에 넣는 '.svn' 폴더입니다.

폴더를 복사할 때 복사하지 않는 것을 기억해야 합니다(또는 샌드박스가 짜증날 수 있음). . svn 리소스 폴더.

저는 소스 제어를 사용하여 환경을 제어한다는 아이디어를 좋아합니다.하지만 저는 개인적으로 이 작업에 svn을 선택하지 않을 것입니다.나는 git과 같은 것을 갈 것입니다.하지만 그건 아마 나만 그럴 거에요...

저는 SVN을 사용하여 컴퓨터를 백업하고 노트북과 데스크탑을 동기화합니다.그러나 이전 답변에서 언급한 문제, 주로 디스크 사용량이 두 배로 증가하는 문제가 있습니다.또한 과도한 파일과 HD의 변경 사항을 지속적으로 확인하는 SVN 프로세스로 인해 컴퓨터 속도가 느려지는 것 같습니다.

그러나 SVN은 서로 다른 컴퓨터를 동기화하는 데 적합하며 필요할 경우 어디에서나 파일을 체크아웃할 수 있다는 보너스도 얻을 수 있다는 점을 강조하고 싶습니다. 웹 인터페이스를 통해 브라우저에서도 이 작업을 수행합니다. 때때로.

요약하자면, 범용 백업에 SVN을 사용하는 것에 대해 여러 가지 감정이 있습니다.하지만 그렇다면 추천합니다 ~ 아니다 영화, 사진, 음악과 같은 라이브러리는 크기가 크고(두 배의 공간 사용으로 인해 큰 어려움을 겪음) 불변하는 경향이 있기 때문에 이를 위한 버전 관리 시스템이 필요하지 않습니다. 파일을 저장하는 경우 일반적으로 이전 버전이 필요하지 않습니다(그리고 SVN은 바이너리 파일의 차이점을 만들고 저장하는 데 적합하지 않으므로 파일의 전체 새 버전을 저장합니다).따라서 이러한 경우에 SVN을 적용할 수 없다면(내 오랜 프로젝트 의도) 이러한 종류의 파일을 백업하기 위한 대체 방법을 사용하는 것이 좋습니다.

당신은 또한 고려할 수 있습니다 - git packfile 형식을 기반으로 한 매우 효율적인 파일 백업 시스템입니다. 이는 데이터를 저장하는 방식에서 git을 기반으로 하며, 이는 파일과 그 차이점을 저장하는 데 매우 효율적입니다.

나는 유령 대신 CVS를 사용했는데 왜 안되는지 모르겠습니다.

기준선에 태그를 지정할 수 있다는 점은 좋지 않습니다.관리 시스템을 변경할 수 있습니다.

이것은 분명히 Windows보다 Unix에서 더 잘 작동합니다.

그 아이디어를 방해하는 것은 일반적인 사용을 위해 바이너리 데이터가 변경될 때마다 복사되는 반면 SCM 시스템을 기반으로 하는 텍스트 콘텐츠는 diff 형식으로 쉽게 업데이트될 수 있다는 것입니다.

따라서 그렇게 할 수 있습니다. 단, 많은 편집 작업을 수행하는 경우 사진 저장소와 같은 항목을 관리하는 데 사용하고 싶지 않을 수 있다는 점을 알아 두십시오.

보다 일반적인 용도의 백업 솔루션(예: Time Machine)의 좋은 점은 공간을 절약하기 위해 잠시 후에 여러 바이너리 변경 사항을 롤업할 수 있다는 것입니다.SVN이나 git 또는 mercurial에서 이 작업이 얼마나 쉬운지 잘 모르겠습니다.

백업에 SVN을 사용할 수 있습니다.그러나 시간이 지남에 따라 필요하지 않은 오래된 개정판을 삭제하는 것은 어려울 수 있습니다.30일 또는 60일 동안만 백업을 보관하고 싶다고 가정해 보겠습니다.SVN은 X일보다 오래된 기록을 제거하는 쉬운 방법을 제공하지 않습니다.오래된 기록을 제거할 방법이 없으면 결국 백업 드라이브의 공간이 부족해지게 됩니다.

다음은 svndumpfilter에 대한 SVN 도서 명령:

Subversion은 Opaque 데이터베이스 시스템에 모든 것을 저장하기 때문에 수동 조정을 시도하는 것은 어렵지는 않지만 현명하지 않습니다.데이터가 저장소에 저장되면 전복은 일반적으로 해당 데이터를 쉽게 제거 할 수있는 방법을 제공하지 않습니다.[13]

[13] 그건 그렇고, 그것은 버그가 아니라 기능입니다.

나는 찾았다 조화 rsync 대안으로 svn보다 더 나은 옵션이 될 수 있습니다.

JoaoPSF의 다음 진술은 올바르지 않습니다.

(그리고 SVN은 바이너리 파일의 차이점을 만들거나 저장하는 데 능숙하지 않으며 파일의 전체 새 버전을 저장합니다)

이 인용문을 참조하세요 Subversion은 바이너리 파일을 어떻게 처리합니까?:

파일이 바이너리인지 여부는 해당 파일의 변경 사항을 저장하는 데 사용되는 저장소 공간의 양이나 클라이언트와 서버 간의 트래픽 양에 영향을 미치지 않습니다.저장 및 전송 목적으로 Subversion은 바이너리 및 텍스트 파일에서 동일하게 작동하는 diffing 방법을 사용합니다.이는 svn diff 명령에서 사용되는 diffing 방법과 전혀 관련이 없습니다.

소스 코드 제어를 사용하여 /etc를 백업하는 것은 시스템에 영향을 준 변경 사항을 되돌리거나, 변경 사항을 실험하거나, 한 서버에서 다른 서버로 변경 사항을 전달하려는 경우 큰 도움이 될 수 있습니다.

그러나 Subversion의 수많은 .svn 디렉토리는 검색할 때뿐만 아니라 *.d 폴더와 같은 경우에 잘못 설계된 시스템이 .svn 폴더 자체를 구성 데이터를 포함하는 것으로 해석할 수 있으므로 이를 방해할 수 있습니다.

나는 /etc 아래에 단일 .hg 폴더를 넣기 때문에 /etc 백업에 Mercurial을 사용하는 것을 선호합니다.버전 제어뿐만 아니라 실제 백업을 위해서는 해당 .hg 폴더를 다른 곳에 복사해야 합니다.

Linux에서 SVN을 백업으로 사용하려면 다음을 수행하십시오.

  1. 빈 저장소를 만듭니다.
  2. 백업하려는 폴더 트리에 빈 저장소를 체크아웃하세요.
  3. 다음 코드 조각(svnauto)을 사용하세요."myuser" 및 "mypassword"를 저장소에 대한 유효한 자격 증명으로 바꿔야 합니다.
    #!/bin/sh
    svn status --depth=infinity --username=myuser --password=mypassword > /tmp/svnauto_tmp.list
    cat /tmp/svnauto_tmp.list | grep '^?' | sed -e 's/^?       /svn add --depth=infinity --force --username=myuser --password=mypassword "/g' -e 's/$/@"/g' | sh
    cat /tmp/svnauto_tmp.list | grep '^!' | sed -e 's/^!       /svn delete --username=myuser --password=mypassword "/g' -e 's/$/@"/g' | sh
    rm -f /tmp/svnauto_tmp.list
    svn update . --username=myuser --password=mypassword
    svn commit --username=myuser --password=mypassword --message "Automatic backup"

위의 스크립트는 현재 디렉토리 내의 모든 파일과 하위 디렉토리를 추가/제거하고 업데이트합니다.간단하게 사용하려면 cd 백업하려는 폴더(물론 작업 복사본이어야 함)로 이동하고 다음을 실행합니다. svnauto.시스템에 grep 및 sed가 설치되어 있어야 하며 /tmp에 임시 파일이 생성됩니다.다음 cron 스크립트를 사용하여 야간 커밋을 위해 cron 작업에서 사용할 수 있습니다.

#!/bin/sh
export LANG=en_US.UTF-8 && cd /my/directory && echo Starting backup $(date) > /root/backup_log.txt && /root/svnauto >> /root/backup_log.txt 2>&1 && echo Finished backup. >> /root/backup_log.txt && cat /root/backup_log.txt

이 크론 스크립트는 다음을 가정합니다. /my/directory 백업하려는 폴더입니다(필요에 따라 교체).또한 svnauto 스크립트 /root.로그를 생성하고 마지막에 표시합니다.한 가지 더 자세한 내용은 다음과 같습니다.첫번째 export svn이 적절한 언어를 찾으려면 필요합니다.작동하려면 이 줄을 자신의 현지 언어로 조정해야 할 수도 있습니다.

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