몇일전 의 날짜에 만들어 진 파일을 백업 하려면 참고로 특정 날짜를 분리 해서 %DATE% 로 부터 나온 문자열로부터 년,월,일 을 분리 해내어서 숫자를 계산해서 하면 됩니다.
프로그램 없이 간단한 백업 할때 상당히 유용하게 쓰이는데요.
여러가지 좋은 백업 프로그램이 있지만 배치파일로 하는게 제일 가볍고 좋다고 봅니다.
@echo off
for /f "tokens=1-3 delims=- " %%A in ('echo %DATE%') do (set YY=%%A&SET MM=%%B&SET DD=%%C)
토큰을 사용해서 분리 해 냅니다.
이렇게 하면 %YY% 에는 연도가 %DD% 에는 날짜가 %MM% 달이 들어 갑니다 . /d:m-d-y 형식으로 되어 있더군요 xcopy d:\aaa\*.txt d:\ /D:%MM%-%DD%-%YY%
xcopy_today.bat
@echo off for /f "tokens=1-3 delims=- " %%A in ('echo %DATE%') do (set YY=%%A&SET MM=%%B&SET DD=%%C)
xcopy d:\aaa\*.txt d:\ /D:%MM%-%DD%-%YY%
이렇게 하면 연산도 가능 합니다. set /a D2=%DD%-2 %D2% 에는 2일전의 날짜가 들어 갑니다 . 10 일이라면 8 일이 들어 가겠죠.
날자의 부분도 취할수 있는데 set /a D3=%DD:~1,2%
이렇게 하면 %DD% 가 23 일이라면 %D3% 두번째 글자 3 이 들어 갑니다. set D3=%DD:~1,2% xcopy d:\aaa\*.txt d:\ /D:%YY%-%MM%-%D3%
이틀전이라면
set /a D2=%DD%-2 xcopy d:\aaa\*.txt d:\ /D:%YY%-%MM%-%D2%
이것을 응용해서 하루 이전에 해당 디
syslog-ng 와 데이타베이스개념은 시스로그 메시지가 날라 오면 filter 키워드에 의하여 걸러진 시스로그는
templete 에 의하여 MySQL 의 쿼리를 실행하게 되는데 실행시 쿼리를 이용하여 적절하게 메시지를 분석하고 그에 맞는 처리를 합니다 . 그리고 난후 log 에 의하여 destination 이결정 되게 되는데 DB 뿐 아니라 실행파일 실행 , 텍스트 형태든 어떤 방식이든 로그를 남길수 있습니다 . 예를 들면 INSERT ~ SELECT 문 에 의하여 SELECT 문의 조건에 부합 되지 않으면 안 넣게 할수도 있습니다 . 뒤에 SELECT 문에 JOIN 을 써서 적절한 데이타를 뽑아 낼수도 있습니다 .
주의 할점은 쿼리가 큰 경우에는 쿼리 실행이 늦어 지므로 최적화를 반드시 해야 하고 될수 있는한 쿼리를 단순화 하여 짧게 만들어야 합니다 .
mysql 및 syslog-ng 만으로 구현한 것입니다 .
예전에 장비담당으로 장비 유지 보수할때 관리하던 네트워크 장비들을 DB 에 넣고 SNMP 및 PHP 의 소켓을 이용하여 장비 점검 시스템을 구축 했던 적이 있었는데
LINUX 상에서 장비 점검 시스템 구현 할때 사용 했던 것 입니다 . 여러가지 쿼리를 구현하다보니 무리가 있었지만 JOIN 의 경우 간단한 데이타만 참조 하고 쿼리 속도만 빠르게 한다면 무리 없이 사용 할수 있을 것입니다 .
자체적으로 시스로그 없이 할수 있는 것이 DB 와 리눅스 뿐이었으므로 쿼리는 복잡하지만 비용없이 간단하게 구현 할수 있을 겁니다 .
일반적으로
다음은 syslog-ng.conf 의 내용입니다. # 옵션 부분 건드릴 필요 없음
options { sync (0); time_reopen (10); # 재실행시 대기 시간 log_fifo_size (4096); long_hostnames (off); use_dns (no); use_fq
댓글
댓글 쓰기