(활성화한 set -x
) 쉘 스크립트에서 tar 볼을 만들려고 하는데 다음 오류가 발생합니다.
+ cd /home5/mysite/public_html
+ TAR_DUMP=gypo_2012-02-18-03:51:15.tar.gz
+ echo 'Tar name: gypo_2012-02-18-03:51:15.tar.gz'
Tar name: gypo_2012-02-18-03:51:15.tar.gz
+ tar -cvzf gypo_2012-02-18-03:51:15.tar.gz gypo
...
tar: gypo_2012-02-18-03\:44\:04.tar.gz: Cannot open: Input/output error
tar: Error is not recoverable: exiting now
...
스크립트는 다음과 같습니다
NOW=$(date +"%Y-%m-%d-%T")
# TAR
cd $HOME/public_html
TAR_DUMP="gypo_$NOW.tar.gz"
echo "Tar name: $TAR_DUMP"
tar -cvzf $TAR_DUMP gypo
# mv -t $DEST $TAR_DUMP
tar에서 이 오류가 발생하는 이유와 해결 방법은 무엇입니까?
답변1
:
파일 이름이 헷갈립니다 tar
. 적어도 coreutils
버전의 경우 스위치 tar
는 --file
다음 형식의 인수를 사용할 수 있습니다.
hostname:/remote/file/name
그래서 나는 tar
그것이 당신이 의도한 것과 다른 방식으로 파일 이름을 해석하려고 시도하고 있다고 추측합니다.
파일 이름 앞에 붙이 ./
거나 전체 경로를 지정하면 문제가 해결됩니다.
TAR_DUMP="./gypo_$NOW.tar.gz"
echo "Tar name: $TAR_DUMP"
tar -cvzf $TAR_DUMP gypo
--force-local
또 다른 수정 방법은 스위치를 추가하는 것입니다 .
--force-local
원격 테이프 드라이브 이름처럼 보이더라도 `tar'가 --file의 파일 이름을 로컬 파일로 해석하도록 강제합니다.