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