파일이 다른 디렉토리에 저장 될 때 상위 디렉토리를 포함하지 않고 tar 아카이브 작성


11

파일 시스템에 다음 4 개의 파일이 있습니다.

/home/martin/cvs/ops/cisco/b/s1
/home/martin/cvs/ops/cisco/b/s2
/home/martin/cvs/ops/extreme/b/r3
/home/martin/cvs/ops/j/b/r5

해당 파일을 tar 아카이브에 넣어야하지만 디렉토리를 추가하고 싶지 않습니다. 내가 얻을 수있는 최선은 다음과 같습니다.

tar -C ~/cvs/ops/ -czvf archive.tgz cisco/b/s1 cisco/b/s2 extreme/b/r3 j/b/r5

아카이브의 각 파일은 두 디렉토리 깊이에 있기 때문에 여전히 완벽하지 않습니다. 더 좋은 방법이 있습니까? 아니면 단순히 복사해야합니까 s1, s2, r3그리고 r5하나의 디렉토리에 파일과 함께 아카이브를 만들 tar -czvf archive.tgz s1 s2 r3 r5?

답변:


17

-C여러 디렉토리를 사용할 수 있습니다 (한 디렉토리에서 다른 디렉토리로 이동).

tar czvf archive.tar.gz -C /home/martin/cvs/ops/cisco/b s1 s2 -C ../../extreme/b r3 -C ../../j/b r5

-C옵션은 해당 시점 의 현재 디렉토리 기준으로 해석 됩니다 (또는 절대 경로 만 사용할 수 있음).


11

파일에 파일 목록이 있거나 명령을 사용하여 파일을 생성 할 수있는 경우 단일 GNU tar 명령을 사용할 수 있습니다.

tar cf foo.tar -T list-of-files --transform 's:.*/::'

변환은 여전히 ​​디렉토리를 유지하지만 레이아웃을 완전히 평평하게합니다. 따라서 디렉토리를 필터링하는 방법이 필요하므로 파일 목록이 필요합니다.


8

아카이브에 파일을 하나씩 추가 할 수 있습니다.

tar cf /tmp/archive.tar -C /home/martin/cvs/ops/cisco/b s1
tar rf /tmp/archive.tar -C /home/martin/cvs/ops/cisco/b s2
tar rf /tmp/archive.tar -C /home/martin/cvs/ops/extreme/b r3
tar rf /tmp/archive.tar -C /home/martin/cvs/ops/j/b r5

이를 쉽게하기 위해 스크립트를 작성할 수 있습니다. 각 경로 tar rf에 대해 -C매개 변수 값으로 기본 디렉토리와 추가 할 경로없이 기본 파일 이름으로 실행하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.