-C /path/to 혹은 --directory=/path/to 옵션을 이용하여 working directory를 지정하는 방식으로 가능하다.


// /etc/passwd, /etc/hosts, /lib/libc.a 파일을 각각 foo.tar 파일에 압축하는 예제

[root@localhost]# tar -c -f foo.tar -C /etc passwd hosts -C /lib libc.a

 

// /path1 디렉토리와 /path2 디렉토리 각각의 파일 전부를 foo.tar로 압축

[root@localhost]# tar -c -f foo.tar -C /path1 . -C /path2 .



'특정 디렉토리의 특정 확장자를 가진 파일' 같은 wildcard 지정은 불가능함에 주의.

// /path/to 디렉토리의 log 파일만 압축하려 하지만 아마 안될 것이다...

[root@localhost]# tar -c -f foo.tar -C /path/to *.log


*.log가 지정되는 순간 wildcard의 해석은 shell로 넘어갔다가 다시 tar로 넘어오기 때문에,

우연히 현재 디렉토리와 압축하려는 디렉토리의 *.log 파일 리스트가 일치하지 않는 한 불가능하다.

그러므로 굳이 저렇게 하고 싶으면 find와 touch 등을 이용해 현재 디렉토리와 압축할 디렉토리의 압축할 파일명 리스트를 맞춰주면 노린대로 동작은 하겠지만 천하의 개뻘짓이겠지.



[참조]

http://www.gnu.org/software/tar/manual/html_node/directory.html



Posted by bloodguy
,