개발공부 이야기(New)/이것 저것 만들어보자
JAVA - 백업파일 일괄 수정 배치프로그램 개발(3)
woojang
2021. 2. 18. 00:30
오늘의 작업.
- 프로그램 개선.
- 쉘 실행환경 설정
1. 프로그램 개선작업 진행.
- 어떠한 문제로 파일 목록에 포함되어 프로그램이 읽었으나 .exists() 실행 시 false가 떨어지는 파일들이 존재했다. 이에 대한 예외사항 추가 진행.
- 이미지 확장자 추가. iPhone Raw 이미지파일 확장자 DNG 추가.
- 프로그램 처리 시 로그 추가.
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
이제, 눈 뜨고 나서 백업해둔 파일도 잘 분류되어 들어갔는지 확인해보면 끝.
추가적으로 개선해야 할 부분들도 계속 체크하고 리스트업을 해서 수정할 예정이다.