우선, 시작은 욕부터 박고 시작하자~~~~~~~~~@#@#@#@#$@#$

 

구글 포토로 길들여 놓고 ..... 나를 버렸다.

 

별수 있나... 칼 자루는 그들이 들고 있는데..

takeout 으로 백업 요청 .. 1TB라는 어마어마한 용량이 나왔다... 

첫번째.. 빡침... 3T HDD를 샀다...... 돈 들었다..............하~~~~~

 

50G씩 22개 파일을 다운받으면서 그 속도에 두번째...빡침...

 

50G파일을 압축 풀면서 또 그 속도에 세번째...빡침.... 씨부럴 구글 쌔퀴들..

하지만... ..그렇다... 다시 구글 스토리지 2T 사서... 다시 업로드 했다.... 대안이.. 아이클라우드 가 있었는데.. 업로드 속도와 아이클라우드의 사진은 백업 보다는 동기화 개념이라... 그냥 구글을 이용하기로 했다..(아이클라우드 2T 샀다가 다시 구글 스토리지 샀었던 삽질은...비밀... )

 

구글 드라이브 프로그램을 이용하여 사진 업로드...

어라???????

 

사진 날짜가 올린 날짜네??? 뭐야???????????????

 

구글에서 다운받은 사진 파일은 사진의 메타 데이터가 삭제되어 백업되어 있었다... json 파일을 줬으니 그걸로 복구하라네???? 

 

씨부럴놈의 구글 놈들...

 

인터넷에서 검색해보니, exiftool 프로그램을 사용해서 복구 하면 된다고 한다... 그런데... 인터넷에 있는 프로그램 예제는 사진 메타 데이터는 복구 되는데.. 파일 생성, 수정 날짜가 복구가 안되더라.. 그래서 내가 다시 만들어 봤다.

 

내 json 파일 포맷은 아래와 같다.

{
  "title": "IMG_0001.JPG",
  "description": "",
  "imageViews": "10",
  "creationTime": {
    "timestamp": "1520299735",
    "formatted": "2018. 3. 6. 오전 1시 28분 55초 UTC"
  },
  "photoTakenTime": {
    "timestamp": "1493874187",
    "formatted": "2017. 5. 4. 오전 5시 3분 7초 UTC"
  },

 

json 파일의 phototakenTime의 timestamp로 사진 파일 생성, 수정을 바꿀 것이다.

exiftool -tagsfromfile "%d%F.json" "-FileCreateDate<photoTakenTimetimestamp" -d %s "-FileModifyDate<photoTakenTimetimestamp" -d %s "-DateTimeOriginal<photoTakenTimetimestamp" -d %s -overwrite_original -r --ext json "디렉토리"

 

이렇게 하면 사진 파일이 바뀐다....그런데 ......  구글 Takeout에서 백업한 파일을 보면 일부는, 제대로 메타데이터 시간대가 구성되어 있고 일부는 메타데이터가 사라져 있다... 그래... 더 빡치자....

여튼, 메타데이터가 없는 애들만 따로 .... 모아서 위 명령어를 써준다... 그리고 여기서 문제는 시간대가 UTC 이다. 

그래서 위 명령어 실행후에 시간대를 아래처럼 +09:00 으로 바꿔준다.

exiftool "-FileCreateDate+=09:00" "-FileModifyDate+=09:00" "-DateTimeOriginal+=09:00" -overwrite_original -r --ext json "디렉토리"

 

...

 

메타 데이터 복구 하는데도 2일이 소요되었다.

 

***********************************

수정 #2

위에 처럼 하면 망한다... 기존 명령어는 메타데이터가 제대로 되어 있는 사진도 사진 찰영 시간을 UTC 시간대로 변경해 버리는 문제가 있다. (오전 10시에 찍은 사진이 오전 1시에 찍힌걸로 기록된다는 의미) exiftool 을 아무리 찾아도 UTC를 로컬 시간으로 변경하는 방법?이 없다... 그래서 시도한 방법이 메타데이터가 없는 사진만 UTC 시간대의 시간으로 사진 촬영 시간 메타 데이터를 생성하게 한다 . 그 작업이 끝나면 다시 메타데이터가 없는 사진만 사진 촬영시간 에 9시간을 더하는 형태로 진행했다. (UTC 시간에서 우리나라 시간대가 9시간 차이난다.) 물론, 이것도 외국에서 찍은 사진은 시간대가 잘못 표시될것이다. (모든 시간대를 한국시간대로 변경해 버리기 때문에... 사진 찍은 해당 외국 시간과 UTC와의 시간차를 입력이 필요하다.)

이것은................ 구글을 욕하고 사진 하나 하나 편집 하던지... 그냥......................포기 할수 밖에 없을 듯한다.

 

exiftool -if "not defined $DateTimeOriginal" -tagsfromfile "%d%F.json" "-DateTimeOriginal<photoTakenTimetimestamp" -d %s -overwrite_original --ext json -r "사진디렉토리"

위 명령어는 구글포토가 사진을 정렬하는 기준인 메타데이터의 DateTimeOriginal이 없는 사진일 경우 json 파일의 PhototakneTime 의 timestamp 항목의 UTC 시간대로 DateTimeOriginal값을 설정하는 명령어이다.

이 작업이 메타데이터가 없는 모든 사진에 적용이 되었다면,

exiftool -if "not defined $CreateDate" -tagsfromfile "%d%F.json" -DateTimeOriginal+=09:00 -overwrite_original --ext json "사진디렉토리"

위 명령어로 메타데이터 중 CreateDate 항목이 없는 사진의 DateTimeOriginal시간에서 09:00시간을 더하게 설정해준다.

메타데이터가 없는 사진은 처음에 DateTimeOriginal 항목에 UTC 촬영 시간대가 적용되고 그 후, 09:00시간을 더하는 순서이다. 두번째에서는 CreateDate로 메타데이터 비교 변수를 바꿨다... 이유는??? 묻는거 차제가 어이없는거임... 

 

 

 

젠장.. 구글 놈들.

 

  1. 보쌈단 2022.05.17 13:38

    안녕하세요. 덕분에 구글포토 마이그레이션에 많은 도움이 되었습니다.
    저도 작업을 하던 도중에 발생한 많은 시행착오 끝에 아래의 함수(ConvertUnixTime)를 추가하여 명령어를 사용하면 GMT+9가 보정되어 찍은 날짜로 들어가니 참고하시면 좋을 것 같습니다.

    exiftool -if "not defined $DateTimeOriginal" -tagsfromfile "%d%F.json" "-AllDates<${PhotoTakenTimeTimestamp;$_=ConvertUnixTime($_,1)}" -overwrite_original --ext json -r "사진디렉토리"

    위 명령어는 JPG 파일에만 한정적으로 적용될 수 있고, PNG 파일의 경우에는 ConditionFailed 오류가 날 수 있기 때문에 if 조건절을 삭제하여 마이그레이션 하는게 좋고, DateTimeOriginal EXIF 속성이 없기 때문에 아래와 같이 CreationTime 속성을 마이그레이션 해주면 됩니다.
    "-PNG:CreationTime<${PhotoTakenTimeTimestamp;$_=ConvertUnixTime($_,1)}"

+ Recent posts