½Ã³î·ÎÁö ³»Àå SQLITE3¸¦ ÀÌ¿ëÇÑ ¹é¾÷°á°ú ·Î±× TABLE È®ÀÎÈÄ ¿ø°Ý¼¹ö Á¾·á ½ºÅ©¸³Æ® ÀÛ¼º¹æ¹ý
얼마전 Q/A란에 문의로 올렸던 사항인데
지난 주말동안에는 원격 NAS서버를 SSH 명렁을 통해 종료시키는 방법을 공유드렸고
이번에는 공유폴더 동기화 처리가 성공완료된 결과를 가져올 수 있는 스크립트를 완셩했습니다.
기본설치되어 있는 로그센터는 기본기능만 있어서 아카이브 설정을 하시려면 아래 블로그의 가이드에서처럼
패키지 관리자에서 로그 센터 고급기능을 한번더 설치해 주셔야 합니다.
https://blog.naver.com/pksl7890/222484376336
방법은 아래 내용처럼 로그 센터의 아카이브 설정에서 아카이브용 저장소 대상에
log db 파일을 내려 받을수 있는 적당한 폴더 (제 경우는 /volume2/log) 로 위치선택하고
[V]위에 지정된 저장소 위치에 로컬 로그를 아카이브 합니다. 에 체크를 해주고 적용합니다.
이 DB 파일은 SQL LITE용 DB 파일로 아래 커맨드에 보이시는 sqlite3의 실행과 위에 아카이브로 지정한 DB파일 오픈,
그리고 금일 정상 동기화 처리 성공한 내용을 SELECT COUNT 하는 쿼리를 가지고 결과를 알 수 있습니다.
r 변수에 1 이라는 값이 출력되면 정상수행이 완료 되었다는 의미 이고 백업은 하루에 1회만 한다는 가정입니다.
백업의 횟수가 더 많은 경우는 아래 스크립트의 쿼리와 IF 조건등을 적절히 수정하셔야 합니다.
시놀로지 공유폴더중 shell 폴더에 vi 에디터를 이용해 아래처럼 shell 스크립트를 생성합니다.
vi /volume2/shell/poweroff_af_sfsync.sh
#!/bin/sh
r=$(sqlite3 /volume2/log/SYNOSYSLOGDB__LOCALARCH.DB "select count(*) as cnt from logs a where host = 'NAS4' and ldate = date('now','localtime') and prog = 'NetworkBackup' and instr(msg,'Shared Folder Sync finished to sync task') > 0;")
echo $r
if [ $r -eq "0" ] ; then
echo "백업 미종료 or 오류"
else
TARGET='192.168.35.11'
if ssh -p 32022 admin@"$TARGET" true; then
echo "$TARGET alive and accessible via SSH"
echo "백업 정상종료, NAS5를 종료합니다."
ssh -p 32022 admin@"$TARGET" sudo "poweroff"
else
echo "$TARGET offline or not accepting SSH logins"
echo "NAS5 종료상태"
fi
fi
위 ssh 로 원격서버가 자동 종료되도록 하려면 ssh-keygen을 통한 pub key 생성복사가 필요합니다. 이부분은 강좌란 바로 직전글인 아래 링크를 참조하시기 바랍니다.
http://www.2cpu.co.kr/lec/3990
완성된 스크립트는 작업스케쥴러등에 등록하시고 적절한 주기를 주시고 계속 체크하도록 해서 백업이 성공되면 원격서버 종료가 되도록 해주시면 됩니다.
감사합니다.
ÁÖ±âÀûÀ¸·Î ¸í·ÉÀ» º¸³¾°æ¿ì SSH Á¢¼ÓÀÌ °¡´ÉÇÑ »óŸ¦ Çѹø üũÇÏ°í
ÇÏ·ç 1¹ø¸¸ ·ÎÁ÷ÀÌ ÁøÀÔÇÒ ¼ö ÀÖµµ·Ï º¸¿ÏÇß½À´Ï´Ù.