tar コマンドはシェルスクリプトでエラーを生成します。

tar コマンドはシェルスクリプトでエラーを生成します。

(有効な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 のファイル名をローカルファイルとして解釈するよう強制します。

関連情報