質問

私は、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の)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top