홈 › 리눅스 명령어 › 07 / 10

압축·아카이브·검색 (tar·gzip·find)

섹션 7진행 0 / 10

4. 응용 변형 예제

4.1 원격으로 바로 묶어 받기

bash
ssh app1 'tar czf - -C /opt/myapp conf logs' > app1-backup.tgz

f - 가 표준 출력을 뜻해 서버에 임시 파일을 만들지 않습니다. 06 레슨의 ssh 원격 명령과 결합한 형태입니다.

4.2 jar 안 파일 확인

bash
unzip -l app.jar | grep -i 'application.yml'
unzip -p app.jar BOOT-INF/classes/application.yml | head

배포된 jar 에 어떤 설정이 들어 있는지 풀지 않고 봅니다. unzip -p 가 파일 하나를 화면에 출력합니다.

4.3 최근 바뀐 설정에서 검색

bash
find /opt/myapp/conf -type f -mtime -1 -print0 | xargs -0 grep -n 'db-'

배포 후 "어제 누가 뭘 바꿨나" 를 볼 때입니다. 하루 안에 바뀐 파일만 대상으로 db- 를 찾습니다.

4.4 로그 보관 정책

bash
find /opt/myapp/logs -name 'app.*.log' -mtime +7 ! -name '*.gz' -exec gzip {} +
find /opt/myapp/logs -name 'app.*.log.gz' -mtime +90 -delete

7일 지나면 압축, 90일 지나면 삭제입니다. 운영 묶음 06 의 logrotate 대신 cron 두 줄로도 됩니다.

4.5 폐쇄망 반출 묶음

bash
tar czf release-1.2.3.tgz app.jar conf/ scripts/
sha256sum release-1.2.3.tgz > release-1.2.3.tgz.sha256
split -b 500m release-1.2.3.tgz release-1.2.3.part_

묶고, 체크섬 만들고, 매체 크기에 맞춰 나눕니다. 반입 측은 cat 으로 합쳐 -c 로 확인한 뒤 tar xzf 합니다.