tar를 사용하여 디렉터리 복사(node_modules 하위 디렉터리 제외)

tar를 사용하여 디렉터리 복사(node_modules 하위 디렉터리 제외)

tarnode_modules 하위 디렉터리를 제외하고 Bash 스크립트에서 프로젝트 디렉터리를 다른 위치로 복사하는 방법을 이해하려고 합니다 . 도움이 될 만한 댓글을 게시했습니다.여기, 내 사용 사례에 맞게 다음과 같이 다시 작성했습니다.

tar -cf - --exclude="node_modules" "${source}" | tar -xf - -C "${target}"

그러나 나는 이에 대해 몇 가지 사실을 알기 전까지는 이 명령을 실행하기를 꺼려합니다. 내 질문은 다음과 같습니다 -

  1. --exclude앞에 별도의 하이픈과 앞에 별도의 하이픈을 사용하는 목적은 무엇인가요 -C?
  2. .tar 파일이 실제로 파일 시스템 어딘가에 생성되었습니까? 그렇다면 이름은 어디에 있습니까?

답변1

  1. -많은 유틸리티는 상황에 따라 인수를 표준 입력/출력으로 정의하며, GNU의 경우 tar입력/출력을 위한 기본 파일이 stdio이기 때문에 이는 필요하지도 않습니다. 따라서 아카이브는 실제로 파이프인 표준 출력에 기록 tar -cf - --exclude="node_modules" "${source}"되며 tar, 다른 쪽 끝은 tar -xf - -C "${target}"추출된 표준 입력으로 다음 명령에 제공됩니다.
  2. 파이프라인에서 표준 출력은 파일로 리디렉션되지 않으므로 tar실제로 아카이브가 생성되지 않습니다.

관련 정보