1. 파일 찾기
1) 디렉토리명에 특정 문구를 포함한 디렉토리를 제외하고 파일 찾기
find 특정위치 -type d -name 특정문구 -prune -o -name 찾을파일명 -print
find 특정위치 -type d | grep -v *특정문구*" | awk '{"find " $1 "-type f "}' | sh
** 특정문구가 여러개인 경우
find 특정위치 -type d | egrep -v '(특정문구1| 특정문구2 | 특정문구3)' | awk '{find " $1 "-type f"}' | sh
종류 |
설명 |
atime |
access time - 파일에 접근했던 시각 |
ctime |
change time - 파일이 change (ownership - chown, access permision - chmod)된 시각 |
mtime |
modify time - 파일의 contents 가 modified 된 시각 * 파일이 생성된 시각과 가장 유사 |
mtime 사용 |
의미 |
mtime -3 |
명령어를 날리는 당일을 포함해서 3일전까지(3일전 포함) |
mtime + 3 |
명령어를 날리는 당일의 3일 전의 이전날들(3일전 포함X) |
2. 파일 삭제
1) 파일명에 특정 문구를 포함한 파일 삭제
find 위치 -type f -name "*특정문구*" -exec rm -Rf {} \; 2>/dev/null
2) 파일명에 특정 문구를 포함한 파일을 제외하고 삭제
find 위치 -type f | grep -v *특정문구*" | awk '{print "rm -Rf " $1}' | sh
3) 특정 위치에서 디렉토리명에 특정문구를 포함한 디렉토리 내의 파일 삭제
find 특정위치 -type d -name "특정문구" | awk '{"find " $1 "-type f -exec rm -Rf {} \\; "}' | sh
※ backup 된 파일들이 날짜별로 만들어진 폴더에 옮겨져 있고, 생성된지 특정일이 지난 파일들을 시스템 부하를 가장 적게 주면서 삭제하는 방법 (ex. /data001/BAK/시스템명/RCV/yyyyMMdd)
- 파일 삭제는 건별로 삭제하므로 성능 향상X, find를 최소화해야 함
1) 디렉토리만 찾고, rm 의 옵션에서 -R (Recursive) 을 줘서, 디렉토리와 디렉토리 아래 파일 전체 삭제
2) 최상위 디렉토리만 찾고, 하위 디렉토리는 찾지 않음 (find 의 -prune 옵션)
find 특정위치 -type d -mtime + 특정일 -prune -exec rm -Rf {} \;
3. 파일 압축 후 보관
- 일반적으로 서버에 백업된 파일들은 서버 내 파일 관리 솔루션에 의해 tape 에 백업된다. (특정 위치의 특정 일자가 지난 파일을 특정 시점에 tape로 백업)
- 그러나 tape 백업을 하지 않아서 파일을 서버에서 장기간 보관해야 하는 경우, 저장 공간 절약을 위해 해당 파일들을 gzip으로 압축 후 저장한다. (Windows 와 달리 gzip으로 압축할 경우, 원본 파일은 삭제된다.)
- 주로 nmon 데이터 같은 모니터링 결과 파일등을 압축해서 보관하며, 모니터링 결과 파일은 텍스트 파일이기 때문에 압축률이 높다.
예시 shell)
for I in `find /home/nmon -mtime + 10 -name "*.nmon"`
do
/bin/echo "$(date +"%b %e %T")_$(uname -n)_$(date +%Y%m%d) %I has been compressed" >> 위치/로그파일명.log
/bin/gzip -f $I
done
'Programming Practice > Shell & Server Management' 카테고리의 다른 글
조건문 (0) | 2016.02.16 |
---|---|
변수 기본 (0) | 2016.02.16 |
find 한 결과를 배열에 담아서 사용하기 (0) | 2016.01.30 |
특정 로그 파일에서 체크 시점 이전 5분 동안 특정 문구 개수 조회 (0) | 2016.01.10 |
모니터링 tool (0) | 2015.11.22 |