- 출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: tar, date
키워드: tar, 아카이브, 추가, 어펜드
사용처: 월별 아카이브에 목차 파일을 추가하는 등 기존 tar 아카이브에 파일을 추가하고 싶을 때
실행예제
$ tar tf 201312.tar # --------- 기존 파일 확인
log/
log/20131201.log
log/20131202.log
log/20131203.log
log/20131204.log
$ ./tar-add.sh # -------------- 실행
log/20131205
$ tar tf 202103.tar # --------- 추가된 내용 확인
log/
log/20131201.log
log/20131202.log
log/20131203.log
log/20131204.log
스크립트
#!/bin/sh
# 년월로 아카이브 파일 지정(예 : 201312.tar)
archivefile="$(date +'%Y%m').tar" # ---------- 1
# 오늘 날짜로 로그 파일 지정(예 : 20131205.log)
logfile="$(date +'%Y%m%d').log"
# 월별 아카이브에 오늘 로그 추가
tar rvf $archivefile log/$logfile # --------- 2
해설
이 스크립트는 월별로 만든 tar 아카이브 파일에 매일 만들어지는 날짜명 로그 파일을 추가합니다. 오늘이 2013년 12월 5일 이라고 가정하면 201312.tar 이라는 아카이브 파일에 20131205.log라는 로그 파일을 추가하는 경우가 됩니다. tar 명령어는 c 옵션과 f 옵션을 사용해서 신규 아카이브를 작성하거나 이미 있는 tar 아카이브 파일 끝에 파일을 추가할 수도 있습니다. 그런 사용 예가 2에서 지정하는 r 옵션(append 옵션)입니다.
실제 예제에서는 우선 tar 명령어의 tf 옵션으로 아카이브 내용을 확인합니다. 결과를 보면 알 수 있듯이 이 예제에서는 우선 202103.tar에는 다음 3개의 파일이 아카이브 되어 있습니다.
log/20131201.log
log/20131202.log
log/20131203.log
log/20131204.log
예제 스크립트를 실행하면 우선 1의 date 명령어를 이용해서 현재 날짜를 기준으로 월별 아카이브 파일과 로그 파일의 파일명을 조합합니다.
파일명을 조합했으면 2에서 tar 명령어로 아카이브 파일에 오늘 날짜 로그 파일을 추가합니다. r 옵션을 이용하므로 어제 날짜까지 파일은 그대로 두고 오늘 파일을 추가할 수 있습니다. 이렇게 월별마다 tar 아카이브를 자동으로 작성할 수 있습니다.
주의사항
- r 옵션을 쓸 때 지정한 tar 아카이브 파일이 존재하지 않으면 새롭게 tar 아카이브 파일을 작성합니다. 에러가 발생하지 않으므로 주의하기 바랍니다.