2017-09-05 2 views
3

tar 명령을 많이 사용합니다. 매우 익숙합니다. 그러나 아카이브 파일의 이름을 date 명령을 사용하여 아카이브를 만들려고했는데 파일을 열 수 없다는 오류를 던졌습니다. 파일을 열려고 시도하지 않기 때문에 이상합니다. .날짜 명령을 사용하여 아카이브를 만들 때 Tar 명령 오류가 발생했습니다

여기 디렉토리, 코드의 복사본, 그리고 오류 : 나는 명령 옵션 (zcvf)의 순서를 전환하여 따옴표없이, 많은 다른 회씩 연결을 시도했습니다

@MDG /media/VideoCam/Test $ ll 
total 468 
drwxr-xr-x 3 neo neo 4096 Sep 5 09:55 ./ 
drwxr-xr-x 4 neo neo 466944 Sep 4 21:54 ../ 
-rw-r--r-- 1 neo neo  45 Sep 5 08:52 1.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 1.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 2.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 2.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 3.jpg 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 4.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 4.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 5.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 5.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 6.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 6.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 7.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 7.mp4 
-rw-r--r-- 1 neo neo  0 Sep 4 19:32 8.jpg 
-rw-rw-r-- 1 neo neo  0 Sep 5 08:41 8.mp4 
drwxr-xr-x 2 neo neo 4096 Sep 4 19:30 Archive/ 
[email protected] /media/VideoCam/Test $ sudo tar -zcvf "archive.$(date '+%D').tar.gz" *.jpg 
tar (child): archive.09/05/17.tar.gz: Cannot open: No such file or directory 
tar (child): Error is not recoverable: exiting now 
1.jpg 
2.jpg 
3.jpg 
4.jpg 
5.jpg 
6.jpg 
7.jpg 
8.jpg 
[email protected] /media/VideoCam/Test $ 

, 등 내가 날짜 명령을 떠나 그냥 이름을 줄 경우 예 archive.tar.gz, 완벽하게 실행되지만 date 명령을 사용하면 오류가 발생합니다. 비슷한 결과를 가진 변수로 date 명령을 설정하려고했습니다.

+1

형식을 수정하십시오. – luckytaxi

+0

코드/데이터 앞에 4 개의 공백을 붙입니다. [editing-help] (http://stackoverflow.com/editing-help)를보십시오. – Cyrus

+0

'/'는 파일 이름에 사용할 수 없습니다. – Cyrus

답변

0

날짜가 슬래시로 표시되며 폴더 경로로 처리됩니다. 대시를 사용하십시오.

0

는 오류 메시지를 보면, 당신은

tar (child): archive.09/05/17.tar.gz: Cannot open: No such file or directory 

를 참조 파일 archive.09/05/17.tar.gz을 만들려고하고 있음을 나타냅니다. 즉, 디렉토리 05에있는 17.tar.gz, 디렉토리 archive.09에 있습니다. 이것은 당신이 실제로 내가 의심하는, 원하는 경우

, 당신은 당신이에 / 문자를 사용할 수 없습니다, 당신은 하위 디렉토리를 원하지 않는 경우

mkdir -p archive.09/05 

처럼 뭔가 tar 외부의 디렉토리를 작성해야 파일 이름. date 명령에 다른 형식을 사용해보십시오. 하나의 공통 옵션은 +%F입니다. 파일 이름이 텍스트로 정렬되는 경우 올바른 순서로 생성되기 때문입니다.

+0

와우,이 질문에 너무 빨리 답변 한 모든 분들께 감사드립니다! 비록 오랫동안 리눅스를 사용해 왔지만 가장 간단한 코딩/스크립팅조차도 멍청한 사람입니다. 그 대답은 너무도 명백해 보이지만 그것은 완전히 나를 벗어났다. 또한 @Cyrus에 대해서는 편집 도움말을 확인하겠습니다. 다시 한 번 감사드립니다! – neolithic

1

date 설명서 페이지를 읽고 서식 옵션을 확인하는 것이 좋습니다. 그것은 다른 사람에 의해 제안 된 것으로

문제는 date 출력

$ date '+%D' 
09/05/17 

당신 때문에 유닉스 일반적인 행동의 이름에서 슬래시와 파일을 만들 수 없습니다의 형식이다. 경우에 당신이 %D 같은 서식을 유지하려면 당신 대신

$ date '+%m-%d-%Y' 
09-05-2017 

뭔가를 시도해야합니다.