2026/04/27

GitHub를 이용한 HA /config 폴더 백업



스토어에서 Advanced SSH & Web Terminal 애드온 설치.
GitHub 계정의 Settings > SSH and GPG keys에 자신의 공개키 등록.

# ssh로 접속 후 백업할 폴더 이동
cd /config

# 현재 폴더를 Git 저장소로 초기화
git init

# 백업 제외할 항목추가
vim .gitignore
.cache/
.cloud/
.storage/*
!.storage/lovelace* 
deps/
tts/
secrets.yaml
id_rsa
*.db
*.db-shm
*.db-wal
*.log

# 원격 저장소 주소 등록 (GitHub계정홈에서 새 저장소를 private로 먼저 구성)
git remote add origin git@github.com:사용자계정/저장소이름.git
 
# 기본 브랜치 이름을 main으로 설정
git branch -M main

# 현재 위치의 디렉토리에서 변경된 파일들을 저장 대기 목록에 추가
git add .

# 대기 중인 파일들을 로컬에 기록 (버전 생성)
git commit -m "메시지"

# 로컬 기록을 GitHub 서버로 전송
git push origin main


configuration.yaml
automation: !include automation.yaml
shell_command: !include shell_command.yaml

automation.yaml
- id: system-core/backup
  alias: system-core/backup
  mode: single
  triggers:
    - trigger: time
      at: '05:00:00'
  actions:
    - action: shell_command.git_backup

shell_command.yaml
git_backup: >
  sh -c "cd /config && [ -n \"\$(git status --porcelain)\" ] && git add . && git commit -m \"daily backup $(date '+%y-%m-%d %H:%M:%S')\" && GIT_SSH_COMMAND='ssh -i /config/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' git push origin main || echo 'No changes to commit'"


** GitHub를 이용한 백업의 장점은 변경점 관리가 돼 수정삭제 이력을 유지할 수 있다는 것.
** 개인키는 홈보다는 /config 디렉토리에 두는 것이 관리가 편함.
** 리눅스나 windows 홈계정의 설정파일도 GitHub에서 관리. 흩어진 설정파일은 하드링크로 홈에 만드는 걸로 해결.