[기록] 구글 포토 무제한 자동 업로드 환경 구성 v1.0
Introdution
노트북만 사용하던 나는 배터리 손상 걱정 없이 안정적으로 사용할 데스크탑이 필요했다. 이번에 맥 미니를 구입하면서, 생활 속 반복되는 잡일들을 하나씩 자동화해 보기로 했다.
첫번째로 개인 사진 및 영상을 관리하는 작업을 자동화했다. 기존 외장하드와 픽셀1을 이용한 업로드 형태로 사용하고 있었지만, 상태관리 및 모니터링을 위해 내 입맛에 맞춘 프로그램을 만들었고 현재 매우 만족스럽게 사용중이다. 😋
상세한 소스들은 기록하지 않고, 환경 및 구성의 주요 내용들만 기록해본다.
계획
✔ 사용중인 스마트폰에서 취침 시 백업 처리
✔ 픽셀1에서 구글포토로 원본 무제한 업로드
✔ 심플하고 직관적인 환경 구성
✔ 성공, 실패 등 상태를 관리하고 재시도 될 수 있도록 구성
✔ 구글포토에서 중복 제거되도록 메타정보 유지
✔ 기존 하드디스크의 자료들도 백업 필요
✔ 시놀로지포토와의 연계
✔ Push 알림, 상태 모니터링
구성 환경

구분 | 상세 | 비고 |
서버 | mac OS | ㅤ |
NAS | Synology | ㅤ |
공유기 | 통신사 제공 공유기 | 내부망 구성 |
스마트폰 | Google Pixel 1세대 | 구글포토 무제한 업로드 정책 적용 모델 |
실행 환경 | Node.js | ㅤ |
DB | SQLite3 | ㅤ |
Android App | FolderSync
MacroDroid | 백업 디렉토리 연동용
구글포토 용량 비우기 작업용 |
Push 서버 | Firebase Cloud Messaging(FCM) | 작업 정보를 알리기위한 Push 서버 |
흐름
sequenceDiagram participant FCM as FCM participant 시스템 as node.js participant SQLite as SQLite DB participant NAS as NAS participant Pixel1 as Pixel1 participant GooglePhotos as Google Photos loop Everyday 시스템-->>NAS: 파일&디렉토리 정보 색인 NAS-->>시스템: 시스템->>SQLite: 색인 정보 기록 시스템-)FCM : Push: 신규 데이터 (전체 150 / 82.52GB) 시스템->>+SQLite: 작업대기 상태 파일 조회 SQLite-->>-시스템: 시스템->>NAS: 파일 복사 alt success 시스템->>SQLite: 업데이트 (ready) else error 시스템->>SQLite: 업데이트 (error) end 시스템-)FCM : Push: 복사 작업 완료 (전체 1,102 / 실패 0) alt FolderSync Pixel1-->>NAS: 작업 디렉토리 확인 Pixel1->>GooglePhotos: 작업 디렉토리의 파일 업로드 Pixel1-->>NAS: 업로드 완료된 파일 삭제 end 시스템->>SQLite: 준비 상태 파일 조회 시스템-->>NAS: 준비 상태 파일 여부 NAS-->>시스템: alt 파일 없음 시스템->>SQLite: 업데이트 (done) end 시스템-)FCM : Push: 업로드 완료 (전체 1,102 / 업로드 802) alt MacroDroid GooglePhotos-->>GooglePhotos: 완료 파일 제거(용량확보) end end
※ 흐름 요약
- 지정 디렉토리 하위의 모든 파일 및 디렉토리 정보를 SQLite에 기록 (주기 매일)
단, 이미 처리된 건의 정보를 다시 가져오지 않기 위해 디렉토리 단위로 먼저 체크하며 용량, 수정일시가 기록정보와 다른 경우에만 하위로 접근하여 불필요한 리소스 사용을 최소화
※
Push 알림
: 신규 데이터 (전체 00건 / 82.52GB)
-
작업대기
상태인 파일을 작업 디렉토리로 복사 (주기 매일) 단, Pixel1의 가용 가능한 용량의 한도 내에서만 폴더에 복사 ( 최대 110GB ) ※Push 알림
: 복사 작업 완료 (전체 00건 / 실패 00건)
- 복사가 성공 시
준비
상태, 실패 시오류
상태로 업데이트
- Pixel1에서 작업 디렉토리의 데이터를 구글포토로 업로드하고 완료된 데이터는 삭제 (주기 매일)
- 작업 디렉토리 내 파일 상태 체크 및 검증
준비
상태의 파일 목록의 파일 검증 -완료
: 작업 디렉토리에 파일이 없는 경우 -오류
: 오류 상태건작업대기
로 변경 (2번 작업과 함께 동작하지만, 설명 흐름상 4번으로 작성) ※Push 알림
: 업로드 완료 (전체 00건 / 업로드 00건 / 오류상태)
- Pixel1의 MacroDroid를 이용하여, 구글포토
용량확보
기능 호출용량확보
: 구글포토에서 제공하는 기능으로, 클라우드 백업이 완료된 사진은 기기에서 삭제
마무리
2021년 구글포토의 유료화 선언당시 이베이에서 Pixel1 구매 후 지금까지 잘 사용하였지만, 일부 수동적인 작업을 필요로하여 짧은 주기로 백업을 하지 못했었다. 이제는 자동화되어 마음이 편해졌다. 다음 버전인
v1.1
에는 모바일앱과 연동하여 작업을 실시간 요청하고 백업 관리 페이지를 하나 만들어야겠다.
💡 Tip. 구글 Pixel1의 정책 및 약관으로 해당 스마트폰을 통해 구글포토로 사진 백업하는 경우원본화질-무제한 업로드
가능하다.
긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 언제나 환영합니다.
#Network#OS#Server