#tar cvf filename.tar [압축하고자하는 폴더] --exclude [빼고자 하는 폴더 이름]
#tar cvf compress_image.tar image --exclude .svn
2개 이상의 파일(디렉토리일때)
tar cvfz filename.tgz --exclude=file2 --exclude=dir2
-X, --exclude-from=FILE exclude patterns listed in FILE
파일에 따로 목록을 적어두고 -X 옵션으로 그 파일을 지정하셔도 됩니다.
이 옵션을 사용하다 발견한 점은 패턴을 적어주실때 디렉토리의 경우 끝에 /를 붙여주면 원하는대로 동작하지 않습니다.
$ tar cvjf bak.tbz2 --exclude=dir2 *
이렇게 하면 현재 디렉토리에서 dir2디렉토리를 제외하고 묶어지는데
$ tar cvjf bak.tbz2 --exclude=dir2/ *
끝에 / 를 붙여주시면 안됩니다.
파일로 작성해서 사용하실때도 마찬가지이구요.
현재 디렉토리의 모든 파일을 지정할떄는 보통 * 와일드카드 문자로 가능하지만 히든파일까지 포함 시키려고 하니 간단한 방법이 안떠오르더군요. 그래서 ls 와 묶어서 사용합니다.
ls -1A | tar cvjf bak.tbz2 -X exclude -T -
1은 한줄에 파일 하나 출력, A는 a와 같지만 . , .. 를 제외합니다.
-T는 묶을 목록을 파일에서 받기 - 는 표준 입력입니다.
다양한 방법이 있을겁니다. ls 없이 tar만으로 하는 방법을 저도 알고 싶네요.