병갈이 블록

JAVA - 백업파일 일괄 수정 배치프로그램 개발(3) 본문

개발공부 이야기(New)/이것 저것 만들어보자

JAVA - 백업파일 일괄 수정 배치프로그램 개발(3)

woojang 2021. 2. 18. 00:30

오늘의 작업.

  1. 프로그램 개선.
  2. 쉘 실행환경 설정

 

1. 프로그램 개선작업 진행.

 - 어떠한 문제로 파일 목록에 포함되어 프로그램이 읽었으나 .exists() 실행 시 false가 떨어지는 파일들이 존재했다. 이에 대한 예외사항 추가 진행.

 - 이미지 확장자 추가. iPhone Raw 이미지파일 확장자 DNG 추가.

 - 프로그램 처리 시 로그 추가.

log파일 기록.

2. 쉘 실행환경 설정

 터미널에서 쉘 스크립트를 실행하면 정상적으로 java를 실행하여 프로그램이 수행된다. 그런데 crontab으로 실행될 때만 꼭 java: command not found 에러가 발생을 한다. 동일한 쉘 스크립트를 수행했는데 왜 java를 인식하지 못할까? 구글링을 좀 해보니 crontab은 PATH를 스케줄 설정 파일 내에 별도로 두고 있었다. 그리고 그 PATH에 있는 경로만 접근 가능한 것 같다. java의 bin 경로가 해당 파일 내에 없어서 생긴 문제다.

먼저 /usr/local/bin 경로 아래 임의로 심볼릭 링크를 하나 걸어둔다.(혹시 몰라서 심볼릭 링크를 만들어서 그 경로를 crontab에 추가했다.)

$ ln -s /자바폴더경로/bin /usr/local/bin/자바임의폴더명/bin

 

crontab 파일>
MAILTO=""
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/usr/local/bin/자바임의폴더명/bin
...

 

저렇게 추가해준다.

 

그러고 실행해보면 빰~ 실행됨.

 

자, 우선 전체 파일을 한번 돌려본다.

약 15초 정도가 걸렸다.

 

정상 실행되는걸 확인 했으니, 이제 운영을 위해서 매일 새벽 5시에 스케줄을 걸어두었다.

그리고 로그파일도 날짜별로 생성되도록 수정하였다.

backup_photo_rename_$(date '+%Y-%m-%d').log

이제, 눈 뜨고 나서 백업해둔 파일도 잘 분류되어 들어갔는지 확인해보면 끝.

 

추가적으로 개선해야 할 부분들도 계속 체크하고 리스트업을 해서 수정할 예정이다.

 

 

Comments