tar
명령에 잘못된 매개변수가 전달되면 file1
명령을 사용할 수 없습니다! 올바른 파일 명령 tar
은 다음과 같습니다:
$ tar cvf total.tar file1 file2
하지만 다음 형식을 사용한 후에는 복구할 수 없습니다.file1
$ tar cvf file1 file2 total.tar
file2
tar: total.tar: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
$ ls -ltr
total 16
-rw-r----- 1 3 Apr 26 11:55 file2
-rw-r----- 1 10240 Apr 26 11:57 file1
$ file file1
file1: POSIX tar archive (GNU)
$ tar zxvf fil1
tar (child): fil1: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
답변1
tar
파일을 보관 file2
하고 total.tar
이름이 지정된 아카이브에 넣으라고 요청했는데 file1
그렇게 하려고 했습니다. 불행하게도 이는 file1
덮어쓰기되었음을 의미하며 이제 얻을 수 있는 것은 다음과 같습니다 file2
.
tar tvf file1
z
( 아카이브를 생성할 때 지정하지 않았으므로 여기에 추가 하지 마십시오 .)
복구할 수 있는 유일한 방법은 file1
백업을 통해서입니다.
답변2
설명: f
in은 cvf
이 옵션에 대한 바로가기입니다 -f
. 이 옵션은 다음 인수로 tar될 대상 파일의 이름을 예상합니다. @AndrewHenle과 @StephenKitt는 매개변수 순서 전환의 결과를 설명했습니다.
답변3
이것은 정의에서 잘 알려진 함정입니다 tar command line syntax
.
대신 my를 사용하면 이 문제를 피할 수 있습니다 star
.
star
다른 오류별 CLI 정의를 사용하는 것은 이름으로 호출할 때 덜 일반적이며, star
호출 시 덮어쓰지 않기 때문에 기존 tar 구현보다 여전히 훨씬 안전합니다.plain files
tar