ファイルをuntarすることができませんか?
質問
私は、ftpサーバからtarファイルを引き出し、それをローカルにuntarするしようとするシェルスクリプトを書きました。私は、tarアーカイブから特定のファイルを抽出する必要があります。 tarファイルのファイル名には日付が含まれています。私は、この日付に基づいて、tarファイルを選択できるようにする必要があります。
abc_myfile_$date.tar
は、私は、FTPサーバーから引いていたファイルの形式です。
私の現在のコードは次のようになります:
for host in ftpserver
do
ftp -inv host <<END_SCRIPT
user username password
prompt
cd remotepath
lcd localpath
mget *myfile_$date*.tar
quit
END_SCRIPT
done
for next in `ls localpath/*.tar`
do
tar xvf $next *required_file_in_tar_file*.dat
done
私は、スクリプトを実行したときにファイルをuntarすることができないのです
私は、そのファイルの正確な名前を言及している場合のみ、FTPサーバから単一のtarファイルを取得することができています。私は、その名にmyfile_$date
たファイルを取得したいと思います。この後、私は私の名前required_files
で構成されているtarファイルで指定されたファイルを取得するために、ローカルのパスに解凍したいと思います。
解決
あなたは.tar
ファイルを得るが、z
オプションでそれを解凍します。圧縮ファイル(z
を必要とするもの)は、通常.tar.gz
接頭辞を持っています。試してみてください。
tar xvf $next *required_file_in_tar_file*.dat
他のヒント
まず、あなたはMGET使う代わりに取得する必要があります。ワイルドカードファイルの展開(*)getコマンドでは動作しません。
あなたは予想通りタール操作が動作するファイルを引っ張ったら、/ BSDのLinuxの最新のバージョンでは、「Z」を必要としない「スマート」タールは、tarファイルが圧縮されていることを指定するコマンドを持っている - 彼らはよtarボールが自分で圧縮し、それを自動的に解凍し、適切な圧縮/解凍ツールがシステム(.jzファイル用のbzip2、.gzというファイル用のgzip)上で提供していることを把握します。
私はかなりわからないんだけど、あなたは複数のファイルをダウンロードしたい場合は、FTPプロトコルは、コマンドmget
を持っていませんか? (代わりget
の)