Docker를 이용한 iCloud 사진 백업 방법 정리.
순서에 따라 진행해도 되지만 Docker에 대한 기본적인 사용방법을 알고 있다는 전재하에 진행합니다. Docker가 생소하다면 생활코딩 Docker 입문과정만 봐도 됩니다. (전체 1시간 분량 https://www.youtube.com/playlist?list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf )
생활코딩 Docker 입구 수업
www.youtube.com
1. Docker Host를 운영체제에 맞게 설치합니다.
https://docs.docker.com/get-docker/
Get Docker
docs.docker.com
2. Docker host에 image를 다운로드 받습니다.
docker pull boredazfcuk/icloudpd
3. image를 실행해서 container 로 만들어야 합니다.
Run 버튼을 누른다음 Option setting를 눌러 옵션을 넣어 줍니다.
Container name 은 icloudpd 로 넣습니다.
중요
Volumes Host path는 본인 컴퓨터 혹은 나스에 사진을 백업받을 path를 넣고 Container path는 /home/user/iCloud로 넣습니다.
Environment variables 에 apple_id 값에 본인의 apple id를 적어줍니다.
그리고 Run으로 실행
만일 CLI에서 입력해야 한다면 다음과 같은 명령어 형식으로 입력합니다. (" 표는 제외)
docker run --name icloudpd --env=apple_id="본인의 Apple ID" --volume="컴퓨터에 사진을 저장할 경로":/home/user/iCloud -d boredazfcuk/icloudpd:latest
4. Docker 에사 icloudpd 로그 선택해서 확인해 보거나 아래 CLI 명령을 입력해서 로그를 확인해 봅니다.
docker logs icloudpd
아래와 같은 에러와 정보에서 멈춰있어야 합니다.
ERROR Keyring file /config/python_keyring/keyring_pass.cfg does not exist
INFO - Please add the your password to the system keyring using the --Initialise script command line option
INFO - Syntax: docker exec -it <container name> sync-icloud.sh --Initialise
INFO - Example: docker exec -it icloudpd sync-icloud.sh --Initialise
5. Terminal을 열어서 다음 명령을 넣어주거나 ssh로 연결한 상태에서 다음과 같이 명령어를 넣어 줍니다.
docker exec -it icloudpd sync-icloud.sh --Initialise
정상적으로 실행되었다면 다음과 같은 메시지가 나타납니다.
docker exec -it icloud_pd sync-icloud.sh --Initialise
2023-01-08 12:13:55 INFO ***** boredazfcuk/icloudpd container for icloud_photo_downloader started *****
2023-01-08 12:13:55 INFO ***** For support, please go here: https://github.com/boredazfcuk/docker-icloudpd *****
2023-01-08 12:13:55 INFO ***** /usr/local/bin/sync-icloud.sh date: 2022/12/28_21:22 *****
2023-01-08 12:13:55 INFO ***** /usr/local/bin/sync-icloud.sh hash: a4728cb97b760a5c9d7cc3f54cdb2f44 *****
2023-01-08 12:13:55 INFO Alpine Linux 3.17.0
2023-01-08 12:13:55 INFO Python version: 3.10.9
2023-01-08 12:13:56 INFO icloudpd version: 1.7.2
2023-01-08 12:13:56 INFO pyicloud-ipd version: 0.10.1
2023-01-08 12:13:56 INFO Running user id: 0
2023-01-08 12:13:56 INFO Running group id: 0
2023-01-08 12:13:56 INFO Local user: user:1000
2023-01-08 12:13:56 INFO Local group: group:1000
2023-01-08 12:13:56 INFO Force GID: False
2023-01-08 12:13:56 INFO LAN IP Address: 172.17.0.2
2023-01-08 12:13:56 INFO Default gateway: 172.17.0.1
2023-01-08 12:13:56 INFO DNS server: 192.168.65.5
2023-01-08 12:13:56 INFO IP address for icloud.com: 17.253.144.10
2023-01-08 12:14:25 INFO Route check to icloud.com successful
2023-01-08 12:14:25 INFO Apple ID: **********@me.com
2023-01-08 12:14:25 INFO Authentication Type: 2FA
2023-01-08 12:14:25 INFO Cookie path: /config/*********mecom
2023-01-08 12:14:25 INFO Cookie expiry notification period: 7
2023-01-08 12:14:25 INFO Download destination directory: /home/user/iCloud
2023-01-08 12:14:25 INFO Folder structure: {:%Y/%m/%d}
2023-01-08 12:14:25 INFO Directory permissions: 750
2023-01-08 12:14:25 INFO File permissions: 640
2023-01-08 12:14:25 INFO Synchronisation interval: 86400
2023-01-08 12:14:25 INFO Synchronisation delay (minutes): 0
2023-01-08 12:14:25 INFO Set EXIF date/time: False
2023-01-08 12:14:25 INFO Auto delete: False
2023-01-08 12:14:25 INFO Photo size: original
2023-01-08 12:14:25 INFO Single pass mode: False
2023-01-08 12:14:25 INFO Skip download check: False
2023-01-08 12:14:25 INFO Skip live photos: False
2023-01-08 12:14:25 INFO Number of most recently added photos to download: Download All Photos
2023-01-08 12:14:25 INFO Downloading photos from album: Download All Photos
2023-01-08 12:14:25 INFO Stop downloading when prexisiting files count is: Download All Photos
2023-01-08 12:14:26 INFO Live photo size: original
2023-01-08 12:14:26 INFO Skip videos: False
2023-01-08 12:14:26 INFO Convert HEIC to JPEG: False
2023-01-08 12:14:26 INFO JPEG conversion quality: 90
2023-01-08 12:14:26 INFO Downloading from: icloud.com
2023-01-08 12:14:26 INFO Nextcloud synchronisation trigger: Disabled
2023-01-08 12:14:26 INFO Script launch parameters: --Initialise
2023-01-08 12:14:26 INFO Group, group:1000, already created
2023-01-08 12:14:26 INFO User, user:1000, already created
2023-01-08 12:14:26 INFO Correct owner on icloudpd temp directory, if required
2023-01-08 12:14:26 INFO Correct group on icloudpd temp directory, if required
2023-01-08 12:14:26 INFO Correct owner on config directory, if required
2023-01-08 12:14:26 INFO Correct group on config directory, if required
2023-01-08 12:14:26 INFO Correct owner on keyring directory, if required
2023-01-08 12:14:26 INFO Correct group on keyring directory, if required
2023-01-08 12:14:26 INFO Configure password
2023-01-08 12:14:26 INFO Keyring file /config/python_keyring/keyring_pass.cfg exists, but does not contain any credentials. Removing
2023-01-08 12:14:26 INFO Adding password to keyring file: /config/python_keyring/keyring_pass.cfg
그리고 iCloud 비밀번호를 저장할지 물어봅니다 Y를 입력합니다.
Enter iCloud password for *********@me.com:
Save password in keyring? [y/N]: Y
이중인증이 필요하다고 합니다. SMS로 인증번호를 받으려면 0 번을 신뢰할 수 있는 장비로 받으려면 1번을 누릅니다.
그리고 6자리 인증번호를 넣어주고 Sync should now be successful 이 나오면 성공입니다.
INFO Generate 2FA cookie using password stored in keyring file
0: SMS to ********71
1: Enter two-factor authentication code
Please choose an option: [0]: 1
Please enter two-factor authentication code: ****55
INFO Two factor authentication cookie generated. Sync should now be successful
6. 백업폴더 등록은 끝났지만 /home/user/iCloud/.mounted 파일을 만들어줘야 합니다. 터미널을 이용해서 다음 명령을 입력하거나 혹은 본인 컴퓨터 혹은 나스에 사진을 백업받을 폴더에 메모장을 이용해서 ".mounted" (확장자가 없음) 파일을 만들어서 넣어줘도 됩니다.
touch /home/user/iCloud/.mounted
7. 완료가 되면 다음과 같이 백업 할 파일의 리스트를 만든 다음 다운로드합니다. (리스트 업에 시간이 걸리기 때문에 실제 다운로드 시작은 한참 후에 진행됩니다.
INFO Failsafe file /home/user/iCloud/.mounted exists, continuing
INFO Check for new files using password stored in keyring file
INFO Generating list of files in iCloud. This may take a long time if you have a large photo collection. Please be patient. Nothing is being downloaded at this time
/home/user/iCloud/2023/01/07/IMG_1129.PNG
/home/user/iCloud/2023/01/07/IMG_1128.PNG
/home/user/iCloud/2023/01/07/IMG_1127.PNG
/home/user/iCloud/2023/01/07/IMG_1126.JPG
/home/user/iCloud/2023/01/07/69477424093__CBEF92D4-B6C9-4B9A-B49D-10EACF0407A3.HEIC
/home/user/iCloud/2023/01/07/69477424093__CBEF92D4-B6C9-4B9A-B49D-10EACF0407A3_HEVC.MOV
/home/user/iCloud/2023/01/07/69477414311__3B11BDE5-B8C9-49AF-A32A-F5D91440B966.HEIC
/home/user/iCloud/2023/01/07/69477414311__3B11BDE5-B8C9-49AF-A32A-F5D91440B966_HEVC.MOV
Update 2023.3.2: iCloudpd를 사용하다 보면 재인증을 해줘야 하는 경우가 생김.
SSH로 나스나 서버에 연결하고 나서 다음 명령어를 넣어서 2중 인증을 갱신해주면 됨.
sudo docker exec -it icloudpd sync-icloud.sh --Initialise
'Docker' 카테고리의 다른 글
Docker - photoprism container 에 폴더 바인딩하기 (0) | 2023.01.09 |
---|---|
생활코딩 Docker 입구 수업 명령어 정리 (0) | 2023.01.08 |