1. 사용 명령어 |
(1) tar
2. 키워드 & 사용처 |
(1) 키워드
tar 아카이브, 제외, 예외
(2) 사용처
tar 명령어로 아카이브 파일을 만들면서 Subversion의 [.svn] 디렉터리 등 특정 파일이나 디렉터리를 제외하고 싶을 때 사용합니다.
3. 실행 예제 |
$ ls -aF myapp
./ ../ .svn/ bin/ etc/ log/
$ ./tar-exclude.sh
myapp/
myapp/etc/
myapp/etc/app.conf
myapp/etc/disk.conf
myapp/log/
myapp/bin/
myapp/bin/start
myapp/bin/stop
4. 스크립트 |
#!/bin/sh
tar cvf archive.tar --exclude ".svn" myapp
5. 해설 |
이 스크립트는 tar 명령어로 현재 디렉터리 아래에 있는 myapp 디렉터리를 아카이브하면서 [.svn] 이라는 서브디렉터리를 제외합니다. 이런 처리는 백업 용도 등에 자주 사용되어서 정기적으로 실행됩니다. 따라서 명령어 한 줄로 끝난다고 하더라도 입력 실수 등을 방지하기 위해 매번 수동으로 실행하는 수고를 덜고자 이런 스크립트는 사용하는 것이 좋습니다.
여기서 myapp 디렉터리에는 다음처럼 4개의 디렉터리가 있다고 가정합니다.
myapp
|- .svn
|- bin
|- etc
|- log
그냥 tar 명령어를 실행하면 myapp 디렉터리에 있는 전 서브디렉터리가 대상이 되지만 여기서는 [.svn] 디렉터리를 아카이브 대상에서 제외합니다. 따라서 실행 예제의 tar 명령어 출력에 [.svn] 디렉터리가 들어 있지 않다는데 주의하기 바랍니다.
이런 경우에는 tar 명령어의 --exclude 옵션을 이용해서 지정한 디렉터리를 제외하고 아카이브할 수 있습니다. --exclude 옵션은 다음처럼 --exclude 뒤에 파일명(디렉터리명)을 지정합니다.
tar cvf archive.tar --exclude ".svn" myapp
exclude를 지정하면 해당하는 이름의 파일과 디렉터리 전부를 제외 대상으로 삼습니다. 예를 들어 myapp/log/디렉터리를 아카이브하고 myapp/backup/log/ 디렉터리를 제외하고 싶을 때 단순히 log를 지정하면 둘 다 제외됩니다. 이럴 때는 디렉터리 경로를 exclude 지정하면 제외 대상을 설정할 수 있습니다.
tar cvf archive.tar --exclude "myapp/backup/log" myapp
<주의사항>
아카이브 제외하고 싶은 파일이 많다면 -X 옵션으로 외부 파일로 제외 목록을 적용할 수 있습니다. 예를 들어 제외하고 싶은 디렉터리를 적은 텍스트 파일이 exclude.lst 라면 다음처럼 작성합니다.
tar cvf archive.tar -X exclude.lst myapp
참고서적 : 유닉스 리눅스 셸 스크립트 예제 사전
'IT 이야기 > Linux 셸 스크립트' 카테고리의 다른 글
[Linux 셸 스크립트] 파일처리 - 040 파일 퍼미션과 타임 스탬프 등 원래 파일 속성을 유지한 채 파일 복사하기 (0) | 2021.03.24 |
---|---|
[Linux 셸 스크립트] 파일처리 - 039 tar 아카이브에 파일 추가하기 (0) | 2021.03.24 |
[Linux 셸 스크립트] 파일처리 - 037 gzip 명령어로 압축률 높이기 (0) | 2021.03.24 |
[Linux 셸 스크립트] 파일처리 - 036 중요한 파일을 암호 걸어서 zip으로 아카이브하기 (0) | 2021.03.24 |
[Linux 셸 스크립트] 파일처리 - 035 로컬 디렉터리에 파일을 만들지 않고 직접 원격 호스트에 아카이브하기 (0) | 2021.03.24 |
댓글