다음과 같은 디렉토리 구조가 있습니다.
/home/
|__dirA/
|__ dir_to_zip/
|__ file1.txt
|__ file2.txt
|__ ...
|__dirB/
|__ dir_to_save_in/
|__dirC/
backup_zip_script.sh
backup_zip_script.sh
다음 명령(src)이 포함되어 있습니다.
tar -czvf /home/dirB/dir_to_save_in/backup.tar.gz /home/dirA/dir_to_zip
즉, 디렉토리를 압축하고 ~/dirA/dir_to_zip
, 압축된 아카이브를 에 저장하고 ~/dirB/dir_to_save_in/
, 에 있는 스크립트를 사용하고 싶습니다 ~/dirC/
.
위 명령은 tar
작동하지만 저장된 아카이브의 압축을 풀면 전체 디렉터리 구조가 생성됩니다.
/home/
|__dirA/
|__ dir_to_zip/
|__ file1.txt
|__ file2.txt
|__ ...
내가 원하는 경우:
dir_to_zip/
|__ file1.txt
|__ file2.txt
|__ ...
디렉터리를 다른 위치로 압축하여(전체 절대 경로를 지정해야 함) 이전의 모든 수준을 압축하지 않고 해당 디렉터리만 압축하려면 어떻게 해야 합니까?
간단히 ...을 사용할 수도 있지만 cd /home/dirA/ && tar...
다른 솔루션이 있는지 확인하고 싶습니다.
답변1
에서와 같이논평, 구현에서 지원하는 경우 -C
"대상 디렉터리로 변경" 옵션을 사용하세요.tar
tar -czvf /home/dirB/dir_to_save_in/backup.tar.gz -C /home/dirA dir_to_zip
이 옵션은 아카이브를 추출할 때도 사용할 수 있습니다.
tar -xzvf /home/dirB/dir_to_save_in/backup.tar.gz -C /home/dirA
아카이브 내용을 /home/dirA
.
답변2
디렉터리 구조가 일관적이거나 프로그래밍 방식으로 이 작업을 수행하는 경우 추출하기 전에 제거할 파일 이름 경로의 요소 수를 지정하는 --strip-components=<#>
옵션 을 사용할 수 있습니다.<#>