개요
제 방엔 지금도 24시간 돌아가고 있는 프랑켄 픽셀이 한 대 있습니다. 버라이즌 판이 아니라서 루팅이 가능한 소중한 기기죠 ㅎ_ㅎ..
상시 충전기에 꽃아두고 발열때문에 작업이 더뎌질까 뒤에 팬도 붙여주고.. 노예 치고는 최상급의 대우를 해주고 있지만, 주기적으로 배가 불러오는 건 어쩔 수가 없었습니다. 배터리 최고 충전비율을 제한하거나, 스마트 플러그를 써서 충전시간을 제한하거나.. 해도 어쩔 수가 없었죠.
그러다가 집 안에서 홈서버로 쓰기엔 강력한 성능을 가진 서버를 이용해 구글 포토 백업 주체를 VM으로 옮기게 되었습니다.
이 글은 Proxmox 호스트에서 Android VM을 이용해 구글 포토에 올리는 과정을 기록합니다. 다만, VM을 세팅하는 과정은 넘기고, 원본이 될 VM이미지를 공유해 드리겠습니다.
또한, 기존에 인터넷에서 쉽게 찾을 수 있는 글들은 핸드폰의 사진을 OneDrive에 업로드하고, 다시 픽셀에서 OneDrive에서 내려받는 방식(과 비슷한 것들을 포함)이 많은데, 이 글은 이미 사진을 모아놓은 NAS가 있고, 구글 포토와 병행한다는 가정 하에 작성됩니다.
저는 TrueNAS를 사용 중이고 Dataset에 Immich로 사진을 백업받고 있습니다. 실제로 사진을 볼 때, Immich를 자주 애용하게 되기 때문에, Immich에서도 원본 사진을 보존하고 구글 포토에도 백업을 하기 위해 이렇게 구성하게 되었습니다.
준비물
VM이미지
아래 링크를 클릭해 파일을 다운받습니다(둘 중 하나만 받으면 됩니다).
Teldrive
td.fenta.cc
TeraBox를 통해 공유하기
TeraBox는 최대 1024GB의 무료 클라우드 저장 공간을 제공하며, APP을 다운로드하면 언제 어디서나 안전하게 파일을 저장하거나 공유할 수 있습니다.
www.terabox.com
turnkey-android - Shared with pCloud
Keep all your files safe, access them on any device you own and share with just the right people. Create a free pCloud account!
u.pcloud.link
VM생성
Proxmox에서 VM을 생성합니다. 생성 시 CD/DVD는 Do not use any media를 선택하시고,
VirtIO-GPU, q35, UEFI 체크, Pre-Enroll keys는 체크 해제해 줍니다.
Disks는 다운받은 이미지를 사용할 예정이므로 제거하고 넘어갑니다.
CPU코어는 개인 환경에 맞게 부여하고, Type은 Host나 x86-64계열을 선택합니다(Host 추천).
Proxmox에서 디스크 이미지를 저장할 ZFS Pool과 지금 생성한 VM ID를 확인합니다. 예시에서는 ZFS Pool은 TrueNAS, VM ID는 690이라고 가정하고 Proxmox Shell에서 아래와 같이 입력합니다.
qm disk import 690 /var/lib/vz/base-698-disk-1.qcow2 TrueNAS --target-disk sata0
아래와 같이 진행된 후, 최종적으로 WEB UI에서 디스크 이미지를 확인할 수 있게 됩니다.
디스크 용량이 128기가로 잡혀있기 때문에, Thin Provisioning이 적용된 풀을 추천합니다.
그리고 생성된 EFI Disk에 turnkey-android-efi.qcow2의 내용물을 기록해야 합니다. 그래야 Bootloader가 정상적으로 기록되 부팅이 가능해 집니다.
EFI Disk가 ZFS풀에 있는 경우
먼저 qcow2파일을 ZFS풀에 import한 뒤, 내용물을 기록합니다.
풀 이름이 TrueNAS이고, import후 vm-690-disk-2로 네이밍된다고 가정할 때,
qm disk import 690 /var/lib/vz/turnkey-android-efi.qcow2 TrueNAS
dd if=/dev/zvol/TrueNAS/vm-690-disk-2 of=/dev/zvol/TrueNAS/vm-690-disk-1
를 수행하면 됩니다.
EFI Disk가 qcow2형태일 경우
import는 필요없고 바로 dd를 사용하시면 됩니다.
EFI Disk가 위치한 경로가 /example/image/690/vm-690-disk-1.qcow2라고 가정한다면,
dd if=/var/lib/vz/turnkey-android-efi.qcow2 of=/example/image/690/vm-690-disk-1.qcow
까지 수행하시면 됩니다.
구글 포토 백업 설정
Bliss OS 부팅
VM을 부팅하면 아래처럼 부팅메뉴를 확인할 수 있습니다. 맨 위 메뉴를 선택하거나 가만히 놔두면 알아서 부팅됩니다.
핸드폰 화면을 잠금해제 하듯 마우스로 아래에서 위로 스와이프하여 홈화면으로 진입해 줍니다. 그러면 아래와 같은 화면을 확인할 수 있습니다.
FolderSync 설정
FolderSync를 클릭해서 실행합니다. 사전 권한은 모두 할당해 놓았으므로 바로 실행하면 됩니다.
좌측 세번째 탭의 사람 모양을 누른 뒤 SMB로 연결할 NAS의 정보를 입력해 줍니다.
네모 친 부분을 모두 입력한 뒤 '테스트'를 클릭하고 연결이 잘 이루어지는 것을 확인한 후, 뒤로 가기를 클릭해 빠져나옵니다.
SMB 공유 이름 아래의 세부 경로는 동기화 설정 쪽에서 기입할 수 있으니 SMB 공유 이름까지만 선택하고 넘어갑니다.
입력할 때, 입력된 것으로 보이지만 실제로 글자가 입력 안되고 있는 듯한 버그가 있으므로, 차근차근 한글자씩 입력해주고 넘어가면 됩니다.
다음으로 좌측 두 번째 탭을 클릭해 '동기화 폴더 만들기'를 클릭합니다.
'좌측 계정'란에 DCIM폴더를, '우측 계정'란에 아까 설정한 SMB를 클릭하고 그 하위 경로까지 세부적으로 선택해 줍니다.
이후 동기화 방식을 '좌측 폴더로'로 선택하고 저장을 클릭합니다.
다음으로 넘어온 뒤 '동기화 옵션'에서 아래로 내려 "원본 파일을 수정할 경우에만 다시 동기화(대상 파일 삭제 무시)" 옵션을 체크합니다.
또 다음으로 넘어온 뒤 '예약동기화'를 클릭, 일정을 추가합니다.
이름과 반복 주기를 적절히 선택합니다.
다음 일정이 설정된 것을 확인할 수 있습니다.
이제, 동기화 버튼을 클릭하면 진행을 시작하게 되고, 처음 동기화 시 묻는 옵션에서는 '어떤 네트워크에서든 파일을 동기화합니다'를 선택합니다.
'대시보드'탭에서 동기화 중인 작업을 확인할 수 있게 됩니다.
구글 로그인 및 포토 활성화
구글 로그인은 생략하겠습니다. 로그인 후 바탕 화면의 포토를 클릭한 뒤, 백업을 활성화 해 줍니다.
그래픽 가속이 약해 색감은 이상하게 나오지만, 잘 업로드 되는 것을 확인할 수 있습니다. 이와 동시에 홈 화면의 여유 공간 버튼이 활성화되었습니다.
매크로 활성화
이 VM이미지에는 한 시간마다 '여유 공간'을 클릭해 용량을 비우고 포토를 실행해주는 매크로가 있습니다. 초기 설정 시 매크로에 방해 받는 것을 방지하기 위해 비활성화 해 놓았기 때문에, 활성화해주는 과정이 필요합니다.
홈 화면의 MacroDroid를 클릭합니다.
하단의 '매크로'탭을 클릭한 뒤 두 개의 매크로 토글을 활성화 해 줍니다.
이제, 한 시간마다 알아서 매크로가 용량을 비우게 됩니다.
수동으로 매크로를 사용하고 싶다면, 홈 화면의 'gp'를 클릭하면 됩니다.
매크로는 시작 시 홈 화면으로 이동 후 10초간 대기했다가 시작하게 되어 있으니 참고하시면 됩니다.
백업할 사진이 대량일 경우 매크로 간격을 10분 정도로 조정했다가, 백업이 끝나면 다시 시간을 늘리는 것을 추천드립니다.