구글 포토 무제한 백업 짱구 굴리기 (Syncthing)
안녕하세요? 구글 포토 무제한 백업 짱구를 굴리는 중에 생각보다 잘 동작하여 글을 정리합니다.
이번 글에서는 Syncthing 을 자세하게 설명하지 않을 예정입니다. 차후에 다룰 예정입니다.
일단, 바로 시작합니다.
1. 준비물
1) 구글 포토 무제한 패치 (Magisk 모듈) 가 된 폰 혹은 Havoc OS 가 설치된 롬
--> 안전하게 저장용량 절약 옵션으로 무제한 백업이 가능합니다.
2) 실 사용하는 폰
3) 그리고, 파일 관리를 하기 위한 서버 (없어도 됩니다.)
상기 3개가 동기화 하기 위해서 Syncthing을 사용합니다. 다른 곳들을 찾아보면 구글 포토 앱에 대해서 매크로를 거는 경우가 많은데요. 실제로 매크로 없이도 정상적인 방법으로 운용에 크게 문제가 없었습니다.
거의 바로 업로드 되거나, 늦어도 5분 내에 업로드 되는 것 같습니다.
2. 개요
구글포토 무제판 폰에 /sdcard/poco_x3_pro_photo 라는 폴더를 생성하고 하기에 poco_x3 의 DCIM / Pictures 폴더를 동기화 합니다.
그리고, 이미 동기화 된, 사진을 삭제하기 위해 3번의 중계서버에서 파일을 직접 삭제합니다.
삭제하는 순간 구글포토 무제한 폰과, 실 사용폰에서 파일이 삭제됩니다.
물론, 무제한 폰에서 직접 저장용량 확보를 눌러주셔도 무방합니다.
이제부터 무제한폰을 1번, 실사용폰을 2번, 관리서버를 3번으로 설명하겠습니다.
다시 말씀드리지만, 관리서버는 따로 없어도 무방합니다만, 좀 귀찮을 뿐입니다.
3. Syncthing 설치 및 설정하기 - 1번 휴대폰
하기 앱을 내려받아 설치합니다.
https://play.google.com/store/apps/details?id=com.nutomic.syncthingandroid&hl=ko&gl=US
이전에 비트토렌트 싱크나 레실리오 싱크의 포크버전으로 알고 있습니다. 갑자기 유료화가 되어 오픈소스로 다시 나왔다고 하네요.
비트토렌트 싱크 대비, 기능이 상세합니다.
1번폰에서 설정을 열어서 항시 동작하도록 설정하고, 이 폰은 항시 대기할 것이기 떄문에 배터리 절약옵션 등을 꺼줍니다. 그리고 웹 인터페이스를 PC에서 관리하기 위해서 24대역만 통신할 수 있도록 웹 인터페이스 리스닝 IP주소를 바꿉니다.
마찬가지로 구글 포토도 배터리 최적화에서 제외시킵니다.
하기는 Syncthing 설정입니다.
웹 인터페이스를 PC에서 관리하기 위해 127.0.0.1:8384 로 설정되어 있는 주소를 24대역에서 연결할 수 있도록 하기와 같이 변경합니다. 주소는 와이파이를 연결했을 때 받아지는 DHCP 주소를 넣으시면 됩니다.
이때 아이디 비번은 syncthing / api key 라고 하네요.
API키는 하기와 같이 확인이 가능합니다.
앱 --> 왼쪽 햄버거 --> 웹 GUI --> 설정에서 하기와 같이 확인 가능합니다.
그러면 PC에서 로그인한 화면은 하기와 같습니다.
따로 앱을 보지 않아도 WebUI 로 설정이 가능합니다.
다음으로, 백그라운드 동작설정입니다. 하기와 같이 설정합니다.
이 부분은 앱 설정에 있습니다.
대략적으로 하기와 같이 설정하시면 됩니다.
그리고 부팅시 실행에 체크합니다.
4. 설정하기 - 2번 휴대폰
3번과 거의 동일하지만, 배터리를 잡아먹으면 조금 무리가 있음으로 상기 Syncthing 옵션에서 몇가지를 제외합니다. 이 부분은 바로 사진이 동기화 되냐 아니냐의 차이임으로 따로 설명하지는 않았습니다.
구글포토의 경우 하기와 같이 백업이 되지 않도록 설정합니다.
이 글의 방법은 사진 --> Syncthing --> 1번 휴대폰 --> Google 포토 업로드 이런 방식으로 업로드 되기 때문입니다.
Syncthing 화면은 하기와 같습니다.
5. 여유공간 확보
여유공간 확보 관련하여, 구글 포토 위젯을 만들어서 매크로를 돌리는 방법이 많이 소개되어 있습니다.
그러나, 저는 그렇게 하지 않고,
일단은 Syncthing 으로 파일 동기화가 완료되면, 구글 포토 업로드는 매우 잘 되어서 파일을 직접 확인하고 근래의 사진이 들어와 있는 것만 확인이 되면 제 서버와 동기를 하나 더 추가해서 직접 삭제하려고 합니다.
그러면 상기 폰1 <---> 폰2 연결에서 폰1 <---> 폰2 <---> 서버 이렇게 연동을 해보겠습니다.
동기화가 완료된 것이 확인되었으면, 서버에서 삭제하면 폰1과 폰2에서 파일이 삭제되는 구조입니다.
6. Syncthing 설치 (3번 : 서버)
하기와 같이 설치합니다.
root@debian:~# docker run -d -it --network host \ # 로컬 디스커버리를 위해 host 네트워크 설정 --name syncthing \ # 컨테이너 이름 지정 --restart unless-stopped \ # 중지 하지 않는 이상 계속 실행 -v /media/data:/var/syncthing \ # 동기화 host 경로 연동 -e STGUIADDRESS=192.168.0.17:8384 \ # WebGUI 를 24 서브넷에서 접근 가능 syncthing/syncthing:latest # pull 할 컨테이너 이름 7cb4576fc3e3bdd66b240d2ebd7b96ae20d174963b9e010ddd8269a5a19ef273 |
웹 UI 한번 찍어봅니다.
인증 관련을 조금 수정하겠습니다.
일반 서버 설치는 아이디 비번 설정이 가능하지만, 실제로 안드로이드 버전은 안되는 것 같습니다. API 키로만 가능한 것 으로 보이네요.
그리고 셋다 로컬망에 있어서 하기처럼 디스커버리가 됩니다.
쉽게 기기추가가 가능합니다.
직접 수동 등록으로 한번 해보겠습니다.
WebUI 에서도 할 수 있고, 앱에서도 QR코드 등으로 등록할 수 있습니다. 저는 WebUI 를 모두 열어 두어서 WebUI 를 통해 작업해 보겠습니다.
1번의 기기 키를 복사합니다.
휴대폰에 등록하기 쉽도록 QR 코드도 있고 코드도 있습니다.
코드를 복사하여 서버에 넣어보겠습니다.
상기에서 기기명은 해당 서버에서 메모(별칭)에 불과하여 마음에 드시는 이름으로 정하시면 됩니다.
그리고 저장을 누르면 1번 폰에서 하기 알림이 뜹니다.
기기추가를 누르면 일단 연동됩니다.
유도자를 선택하면 알아서 연동되고, 하기 폴더도 자동으로 추가할 수 있는데 따로 설정을 진행해보겠습니다.
물론 유도자 설정은 한쪽으로만 흐르기 때문에 3번 서버에서도 유도자 설정이 필요합니다.
이 유도자 설정은 다른 기기에서 기기가 추가 될 때 가능함으로, 현재 있는 기기는 딸려오지 않는 것 같아서 나머지 실 사용폰 2번도 추가하였습니다.
하기와 같이 모두 연동되었습니다.
처음에는 폴더명 고민을 하였는데요. 폴더명은 자동생성되는 폴더ID를 기준으로 하면 나중에 관리가 어려울 것 같아 직접 생성하였습니다.
폴더에는 폴더 닉네임과 폴더 ID 가 있습니다. 동기화의 기준은 폴더ID 입니다.
이를 기준으로 서버에 폴더를 2개 연동해보겠습니다.
연동을 진행하고 공유 설정을 진행합니다.
상대방 기기에 하기 메시지가 뜨고 둘 중에 한곳만 승인하면 됩니다.
이렇게 연동이 완료 되었습니다.
그러면, 구글포토를 직접 확인하여 연동이 완료되었으면, 파일을 삭제하기만 하면 됩니다.
서버에서 삭제하면 기기에 반영됩니다.
설정이 완료되었습니다.
그러면, 한가지 활용방법이, 구글 포토에 사진이나 동영상을 올리고 싶다면, PC에서 3번 서버쪽으로 파일을 넣으면 포토로 업로드가 되는 것입니다.
한번 해보겠습니다.
일단 폴더를 하나 생성했습니다.
저기에 사진을 1장 넣고, 구글 포토에 기기폴더 업로드 설정하겠습니다.
그리고 다시 파일을 4장 넣어보겠습니다.
하기와 같이 1분 정도 내에 업로드가 되었습니다.
7. 마치며..
일단 구글포토 업로드 주기로 인해 바로 반영이 안되는 경우도 있습니다.
그러나 못해도 5분 정도면 반영이 되는 것 같습니다.
대충 짱구 마치겠습니다.
감사합니다.