본문 바로가기
코딩노트。

리눅스 grep 명령으로 서버에서 오류난 xml 파일찾기

by 30대아줌마 2020. 4. 24.
반응형

얼마전 관리하던 시스템에서 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개정도 되더라구요

 

휴, 갯수가 많지않아서 다행이예요.

 

이거 관련해서 구글링 엄청해봤었는데, 혹시 비슷한 고민있으시는 분들 있으실까바

한번 블로그에 남겨봐요!

 

다들 즐거운 코딩생활 하세요 :-)

반응형

댓글