tar가“stat를 할 수 없습니다 : 디렉토리의 해당 파일이 없습니다”에서 종료됩니다. 왜 그렇습니까?


50

다음 명령을 사용하여 tar.gz 파일을 만들려고합니다.

sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/

그런 다음 파일 (폴더의 많은 파일)을 만들기 시작하지만 다음 오류가 발생합니다.

tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

이 오류에 대한 설명이 표시되지 않습니다. 무슨 뜻입니까?

답변:


61

옵션 -에서 제거하십시오 vcfz. tar옵션에는 하이픈이 필요하지 않습니다.

하이픈으로 -f옵션에 대한 인수 는 z입니다. 그래서 명령을 보관하려고 유효 dvr_rdk_v1.tar.gz하고 dvr_rdk라는 아카이브로 z. 하이픈이 없으면 옵션의 의미가 변경되어 명령 줄의 다음 인수, 즉 아카이브의 파일 이름이 f플래그에 대한 인수가됩니다 .

또한 명령을 실행중인 디렉토리에 대한 쓰기 권한을 확인하십시오.


6
하이픈 은 필요 하지 않지만 문제가되지 않아야합니다. 옵션 일뿐입니다.
Michael Mrozek

18
@MichaelMrozek 사실 -GNU tar는 기발하기 때문에를 제거하면 차이가 있습니다. 그것이로 시작하지 않는 경우 옵션 인수는 첫 번째 인수에 번들 될 수 없다 -, 그래서의 인수 f에 다음 인수입니다 tar, 그래서 tar vcfz dvr_rdk_v1.tar.gz동일합니다 tar -v -c -f dvr_rdk_v1.tar.gz -z.
Gilles 'SO- 악마 그만해'

1
나는를 제거하면 나는 또한 실현 z또는 j아카이브 압축도에 성공적으로 -참여. 하이픈이 추가되면 옵션의 마지막 문자를 "파일"로 취급합니다. 결과적 으로이 옵션 또는을 사용하면 아카이브 파일을 얻 j거나 얻습니다 . z-cvfz-cvfj
JohnnyQ

9
요약 : 'f'가 마지막 옵션 이외의 옵션으로 발생하면 명령은 의도 한대로 수행하지 않습니다. Gnu가 심각하고 쉽게 감지 할 수있는 문제를 발견했을 때 Gnu가 어떻게 경고를 추가하지 못했는지 모르겠습니다. 나는이 이상한 점을 디버깅하려고 40 분을 보냈다. 이 작업은 수십만 시간의 생산성을 낭비했을 것입니다.
smci

57

-f옵션은 직접 파일 이름을 선행해야한다. tar -vczf filename.tar.gz대신에 사용하십시오-vcfz


아 이것은 내가 사용하는 명령 이 각각 j또는 z이들 명령 -cvfj과 함께 압축 된 아카이브 파일을 생성하려고 시도하는 이유를 설명합니다 -cvfz.
JohnnyQ

17

tar 명령 역사적으로 유닉스 따르지 않는 몇 가지 명령 중 하나였다 유틸리티 구문 가이드 라인을 .

tar의 표준 페이지는 다음과 같이 말합니다.

f
첫 번째 파일 피연산자 (또는 b가 이미 지정된 경우 두 번째)를 시스템 종속 기본값 대신 아카이브 이름으로 사용하십시오.

구문 지침에는 다음이 포함됩니다.

지침 5 :
하나의 '-'구분 기호 뒤에 그룹화 할 때 옵션 인수가없는 하나 이상의 옵션과 옵션 인수를 취하는 최대 하나의 옵션이 허용됩니다.

따라서 tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/이전 버전의 tar에서는 사용자가 입력 한 명령이 적합 하지만 유틸리티 구문 지침을 엄격히 따르도록 작성된 특정 tar 버전은이를 " z파일 인수로 사용"을 의미하도록 구문 분석합니다 -f. 따라서 다음을 사용하여 이식성이 있어야합니다.

tar -cvzf dvr_rdk_v1.tar.gz dvr_rdk/

-1

아카이브를 만들려면

$ tar -cvf music.tar Music/

파일 및 폴더 목록이 표시됩니다

$ tar -tvf music.tar         

그리고 다시 추출

$ tar -xvf music.tar         

이것은 실제로 그의 실수를 설명하지 않습니다. 이것은 사용법을 설명하는 것입니다 tar.
Bernhard

1
@Bernhard 글쎄요, 그의 실수는 그가 tar잘못 사용 하고 있다는 것이 었습니다. 적어도 중요한 차이점이 무엇인지 언급하는 것이 좋지만 ( -f끝까지 이동 )
Michael Mrozek

2
@MichaelMrozek 글쎄, 그는 결국에 z넣은 것보다 생략 f했기 때문에 내 의견입니다.
Bernhard

이 명령은 우분투에서 작동합니다. 성공할 것입니다
dhamu

승인! 죄송합니다, 당신의 질문을 듣지 않지만 명령은 우분투에서 작동합니다.
dhamu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.