일부 "가짜" 선행 디렉토리가 제외되도록 압축된 타르볼의 경로를 다듬고 싶습니다. 예를 들어 설명하겠습니다.
tree
명령으로 출력된 디렉토리 구조는 다음과 같습니다 .
tree /tmp/gzip-expt
/tmp/gzip-expt
├── gunzip-dir
├── gzip-dir
└── repo
└── src-tree
├── l1file.txt
└── sub-dir
└── l2file.txt
5 directories, 2 files
나는 src-tree를 gzip-dir로 압축하고 싶었기 때문에 다음과 같이 했습니다:
cd /tmp/gzip-expt/gzip-dir
tar -czvf file.tar.gz /tmp/gzip-expt/repo/src-tree
그런 다음 gunzip-dir에 file.tar.gz를 gunzip합니다. 다음과 같이 했습니다.
cd /tmp/gzip-expt/gunzip-dir
tar -xzvf /tmp/gzip-expt/gzip-dir/file.tar.gz
tree /tmp/gzip-expt/gunzip-dir
다음 출력이 표시됩니다.
/tmp/gzip-expt/gunzip-dir
└── tmp
└── gzip-expt
└── repo
└── src-tree
├── l1file.txt
└── sub-dir
└── l2file.txt
tree /tmp/gzip-expt/gunzip-dir
그러나 다음 출력을 표시 하고 싶습니다 .
/tmp/gzip-expt/gunzip-dir
└── src-tree
├── l1file.txt
└── sub-dir
└── l2file.txt
즉, 경로의 "가짜" tmp/gzip-expt/repo 부분을 보고 싶지 않습니다.
답변1
그것들은 가짜가 아니며 단지 저장하라는 지시를 정확히 저장합니다.
특히, path 가 주어지면 /tmp/gzip-expt/repo/src-tree
경로 의 어느 부분을 유지해야 하는지, 파일을 로 저장해야 하는지 /tmp/gzip-expt/repo/src-tree/l1file.txt
등 src-tree/l1file.txt
을 알 수 없습니다. l1file.txt
아카이브에 추출 시 생성되는 선행 디렉토리가 있는 경우 tarball을 추출할 때 다릅니다. 그렇지 않다면 그렇지 않습니다.
상대 경로를 제공 tar
하고 상대 경로가 작동하려면 올바른 디렉터리에서 실행되도록 합니다.
cd /tmp/gzip-expt/repo
tar -czvf /tmp/gzip-expt/gzip-dir/file.tar.gz ./src-tree
또는
cd /tmp/gzip-expt/gzip-dir
tar -C /tmp/gzip-expt/repo -czvf file.tar.gz ./src-tree
GNU 매뉴얼 페이지에서는 다음을 설명합니다 -C
.
-C
,--directory=DIR
작업을 수행하기 전에 DIR로 변경하십시오. 이 옵션은 순서를 구분합니다. 즉, 모든 후속 옵션에 영향을 미칩니다.
-f
그러나 내가 아는 한, 먼저 제공되더라도 해당 파일은 시작된 디렉터리에서 계속 사용 됩니다.tar
-C
추출할 때 이를 수정하려면 최소한 GNU tar는 파일 이름의 앞 부분을 제거하라고 지시합니다. 예를 들어 를 사용하면 유사한 파일 이름이 .--strip-components=N
--strip-components=2
/tmp/gzip-expt/repo/src-tree/...
repo/src-tree/...