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.