tar gz는 다른 위치의 디렉터리를 대상 디렉터리로 복사합니다.

tar gz는 다른 위치의 디렉터리를 대상 디렉터리로 복사합니다.

다음과 같은 디렉토리 구조가 있습니다.

/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=<#>옵션 을 사용할 수 있습니다.<#>

관련 정보