얼마전 관리하던 시스템에서 xml파일이 간헐적으로 잘못 생성된 일이 있었어요.
전수조사대상 xml이 총 128,450건 이었는데 너무 막막했어요 ㅠㅠ
일단 추려낼만한 조건들은 확인하고, grep명령과 엑셀을 이용해서 결국 추려냈답니다 ㅋ
먼저, 저의경우 xml선언부가 깨져서 정상으로 생성되야하는 파일과, 잘못생성된 파일이
이상하게 파일용량은 같은데 <?xml 이 선언부 앞쪽이 날라갔더라구요.
그래서, 단순하게 생각하기로는 <?xml로 시작하지 않는 xml을 리눅스서버에서 찾으면 되겠다 했는데
없는걸 찾아내는 명령어는 없는것 같더라구요...ㅋㅋ 라임 죽였다 ㅋㅋ
그래서 전수조사대상 12만8천개 중에 제대로 <?xml로 생성된 아이들 목록을 추려내고
12만8천개 db에 저장된 파일명과 서버에서 추려낸 정상파일명을 비교해서 없는값을
잘못생성된 파일이라고 판단하기로 했어요!
여기에 사용된 grep 명령은 아래와 같아요
[tmax@test:/cont]$ find . -name "*LINKXML*.xml" | xargs grep -il "^<?xml" > successList.txt &
해당 리눅스 grep 문구를 해석해보자면
/cont폴더 하위에있는 xml파일 중에
파일명이 *LINKXML*.xml 의 형태로 되어있는 파일들(<-대상파일들이 이런 파일명의 패턴이예요)
에서 내용 검색을 하는데, 대소문자에 관계없이 파일시작이 <?xml 로 시작하는 파일의 파일명을 찾아서
successList.txt 에 파일명을 추가해라(개행으로 구분)
이런 이야기예요.
이러면 결과가 끝나고나면 successList.txt 파일을 열어서 확인해보면 아래와같이 표시가 될거예요
./2020/xmlFiles/20200101LINKXML.xml
./2020/xmlFiles/20200124LINKXML.xml
...등등등
그러면 해당파일들이 정상파일목록이니까, db에 등록된 정상파일목록과 비교해서
누락된 목록을 추려냈어요! 약 13만건중에 잘못된 파일은 약 38개정도 되더라구요
휴, 갯수가 많지않아서 다행이예요.
이거 관련해서 구글링 엄청해봤었는데, 혹시 비슷한 고민있으시는 분들 있으실까바
한번 블로그에 남겨봐요!
다들 즐거운 코딩생활 하세요 :-)
댓글