====== git as backup ====== * [[:git|git]]을 백업도구로 사용하기 * [[git:gitsync|gitsync]] ===== 특정 디렉토리 이하를 Git Repository로 백업할 때 ===== * SSH Key 를 생성해서 등록. [[https://github.com|github]] 이면 public key 를 **Deploy Key**로 등록. * private key 는 백업할 시스템 계정의 ''~/.ssh/id_rsa'' 로 둔다. 그게 아니면 [[linux:ssh|Linux SSH]]에서 ''ssh-agent''로 등록해야한다. * 예를들어 ''/home/x/mydata'' 이하를 백업한다면, 해당 디렉토리 이하의 디렉토리나 파일들중 ignore할게 있다면 먼저 ignore할 파일, 디렉토리 바로 상위에 ''.gitignore''를 만들어서 해당 파일/디렉토리를 기입해준다. * Git repository를 생성한다. 예, ''mydata''리포지토리 # 미리 .gitignore 처리 필수 cd /home/x/mydata git init # 혹은 .gitattributes 에 * -text 항목 필요. 불필요한 줄끝형식 변환제거 git config core.autocrlf false git config user.email "your@email.com" git config user.name "Git AutoBackup" # 필요하면 git config push.default simple # 파일 추가하고 커밋&푸쉬 git add . git commit -m 'backup initialized' git branch -M main git remote add origin git push -u origin main ===== 주기적 백업을 수행할 shell script 생성 ===== * ''backup.sh'' NOWT=$(date +"%Y-%m-%d %T") cd /path/to/workingdir git add . git commit -m "$NOWT Automated git push" git push * commit 할게 없어도 오류 없이 무시된다. ===== cron 등록 ===== * 매일 새벽 4시 5분에 실행. 5 4 * * * /path/to/backup.sh > /tmp/cron_log.log 2>&1 * 로그를 계속 남기려면 로그 파일 리다이렉트를 ''%%>>%%'' 로 설정하고 [[linux:logrotate|logrotate]] 를 해준다. ===== 참조 ===== * [[https://thearjunmdas.github.io/entries/backup-org-files-in-github/#code-snippet--back-up-file-to-github.sh|Backup org files in github :: ArMD — Architect Manager Devloper]]