내용으로 건너뛰기
사용자 도구
로그인
사이트 도구
도구
문서 보기
이전 판
백링크
최근 바뀜
미디어 관리
사이트맵
로그인
최근 바뀜
미디어 관리
사이트맵
기술자료
작업공간
개인공간
사이트맵
추적:
kb:perforcebackup
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== Perforce Backup ====== 퍼포스 백업에 관해 기술한다. ====== 개념 ====== 백업해야 할 내용들의 목록은 다음과 같다. * versioned files * 사용자가 추가한 일반적인 파일들 * 각 버전별로 존재 * checkpoint * 퍼포스 데이터베이스 파일 백업 * 사용자가 올린 파일들의 목록, 체인지리스트 목록, 라벨, 잡 등등 * 자동으로 생성되지 않으며, 특정 퍼포스 명령(p4d -jc)을 통해서만 생성된다. * journal * 마지막 체크 포인트 파일 생성 시점 이후로 퍼포스 저장소에 가해진 변경에 대한 기록 즉 체크포인트 파일과 저널 파일은 일종의 메타 데이터이며, SqlServer 차등/로그 백업에서의 그것과 같다고 볼 수 있다. ====== 백업 절차 ====== 아래와 같은 절차를 거쳐야 한다. - 데이터 검증 * <nowiki>p4 verify -q //...</nowiki> - 퍼포스 서비스 중지 * <nowiki>net stop Perforce</nowiki> - checkpoint 생성 및 journal 비움 * <nowiki>p4d -jc</nowiki> * 위 명령의 에러 코드를 검사해서 제대로 백업이 되었는지 검사하게는 게 좋다고 한다. * 온라인으로 핫백업할 수 있는 모양이긴 한데...? - versioned files 저장 * 적당히 압축하던지, 복사하던지 한다. - checkpoint & journal & versioned files 이동 * 적당히 이동 * checkpoint.xxx.md5 파일을 빼먹지 말자. * 사실 checkpoint 파일이 정상적으로 잘 생성되었다면, journal 파일은 필요없긴 하다. - 퍼포스 서비스 재시작 * <nowiki>net start Perforce</nowiki> ====== 복구 절차 ====== 하드가 통채로 날아갔다고 간주한다. - 퍼포스 재설치 - 퍼포스 서비스 중지 * <nowiki>net stop Perforce</nowiki> - 퍼포스 루트의 모든 db.* 파일들 다른 디렉토리로 이동 * <nowiki>move C:\Program Files\Perforce\Server\db.* C:\Program Files\Perforce\Server\Temp\</nowiki> - 데이터베이스 복구 * <nowiki>p4d -r $P4ROOT -jr checkpoint_file</nowiki> - 버전 파일 복구 * 원래 있던 곳에다 복사 ====== 백업 예제 ====== <code winbatch> @ECHO OFF @TITLE Backing up perforce repository FOR /F "tokens=1-3 delims=- " %%I IN ('date /t') DO SET DATE=%%I.%%J.%%K SET PERFORCE_ROOT="C:\Program Files\Perforce\Server" SET BACKUP_ROOT="D:\Backup\%DATE%" SET BACKUP_FILE="D:\Backup\%DATE%\files.rar" mkdir %BACKUP_ROOT% p4 verify -q //... > %BACKUP_ROOT%\Backup.log net stop Perforce %PERFORCE_ROOT%\p4d -jc -r %PERFORCE_ROOT% "C:\Program Files\WinRAR\rar" a -r -m5 %BACKUP_FILE% %PERFORCE_ROOT%\depot for /F "delims=" %%I in ('"dir /B /S %PERFORCE_ROOT% | findstr /E "journal\.[0-9]""') do ( echo moving %%I to %BACKUP_ROOT% move /Y "%%I" %BACKUP_ROOT% ) for /F "delims=" %%I in ('"dir /B /S %PERFORCE_ROOT% | findstr /E "checkpoint\..*""') do ( echo moving %%I to %BACKUP_ROOT% move /Y "%%I" %BACKUP_ROOT% ) net start Perforce </code> 실제로 돌려본게 아니라, 걍 타이핑한 거라 오타가 있을 수도? 아래의 파이썬 스크립트는 위에서 생성한 백업 파일들을 최근 일주일치만 보관하기 위한 스크립트이다. <code python> import datetime import os import shutil import errno import stat def handle_remove_read_only(func, path, exc): exc_value = exc[1] if func in (os.rmdir, os.remove) and exc_value.errno == errno.EACCES: os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) func(path) else: raise def remove_obsolete(root): if root[-1] != os.sep: root += os.sep with open("remove_obsolete.log", "w") as output: preserved = [] today = datetime.date.today() output.write("-- %(y)04d.%(m)02d.%(d)02d" % { 'y': today.year, 'm': today.month, 'd': today.day }) for i in range(0,7): target = today + datetime.timedelta(days=-i) preserved.append("%(y)04d.%(m)02d.%(d)02d" % { 'y': target.year, 'm': target.month, 'd': target.day }) for name in os.listdir(root): full_name = root + name if os.path.isdir(full_name): if not (name in preserved): output.write("deleting " + full_name + "\n") shutil.rmtree(full_name, False, handle_remove_read_only) if __name__ == "__main__": remove_obsolete("D:\Backup") </code> ====== 링크 ====== * [[http://www.perforce.com/perforce/doc.current/manuals/p4sag/02_backup.html | Perforce Backup and Recovery]] ---- * see also [[Perforce]]
kb/perforcebackup.txt
· 마지막으로 수정됨: 2014/11/11 14:53 저자
excel96
문서 도구
문서 보기
이전 판
백링크
맨 위로