====== 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]]