シェルスクリプトの作成について初心者の者です
サーバA(レンタルサーバ)のバックアップファイル(毎日生成)を
・サーバB(自作(Fedora-core4))から自動でFTP接続させて、
・サーバAのバックアップファイルをサーバBにコピーして、
・サーバAのバックアップファイルを消去しようとしています。
皆さんに色々教えていただいて下記(sample)のように記載して
下記の実行結果まできましたが最後の所でつまずいています。
コピー元(サーバA)にあるファイルに頭に「bak***」のつくファイルを
すべてコピーしてきて、コピーしたあと、そのファイルを消去しようとしています
例えば、今日(9日)はbak-mysql-*********.sql.gzとbak-root********.tar.bz2
の2種類が(20121207、20121208、20121209)の6ファイルあります
つまり、この6ファイルをコピーして、その後、削除させたいと思います
それで、サーバAの/rootに下記のsample (ftp_all.sh)のスクリプトを置きました
********** sample (ftp_all.sh) **************************
#!/bin/csh -f
#"@(#)ftp_all.sh 1995/07/01 Copyright(C)1995 ASH"
#
# name: ftp all files
/usr/bin/ftp -n サーバAのIPアドレス << EOF
user username password
passive
binary
cd /home/city21/backup
mget bak*.*
mdelete bak*.*
bye
EOF
*********************************************
その実行結果は次のとおりです
*************** 実行結果 ***********************
[root@linux ~]# sh ftp_all.sh
Passive mode off.
mget bak-mysql-20121207.sql.gz? mget bak-root-20121207.tar.bz2? mget bak-mysql-20121209.sql.gz? mget bak-root-20121209.tar.bz2? mget bak-mysql-20121208.sql.gz? mget bak-root-20121208.tar.bz2? [root@linux ~]#
******************************************************
この実行結果をみると
・20121207.sql.gz、20121207.tar.bz2、20121209.sql.gz、20121209.tar.bz、20121208.sql.gz、20121208.tar.bz
6ファイルともmgetでファイルをコピーしているかのようにみえます
しかし、実際に、サーバB側にコピーされているのは
上記の実行結果の最初の3ファイル、(20121207.sql.gz、20121207.tar.bz2、20121209.sql.gz)しかコピーされて
いません
また、mdeleteのコマンドが全く効いていません
何故なのか、どこを直せばいいのか教えていただければ幸いです
また、今回はスクリプトの中に
/usr/bin/ftp -n サーバAのIPアドレス << EOF
・
・
・
EOF
としたのですが
ftp -n サーバAのIPアドレス << _EOD
・
・
・
_EOD
としている例もあります
このEOF とか _EODの意味も勉強したいのですが
どこかこのあたり解説しているものがあれば教えていただければ
幸いです
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
> このEOF とか _EODの意味
その文字自体には区切りとしての意味はありません。
「ヒアドキュメント」といいます。
> mget bak-mysql-20121207.sql.gz? mget bak-root-20121207.tar.bz2? mget bak-mysql-20121209.sql.gz? mget bak-root-20121209.tar.bz2? mget bak-mysql-20121208.sql.gz? mget bak-root-20121208.tar.bz2?
手動でやってみてください。
mgetに対して
mget bak*.*
とすると
mget bak-mysql-20121207.sql.gz?
となどと、実際にgetするかどうかを聞いてくるので、 yまたはnを入力したりしてるのでは?
そこで、n以外だと実行とかになっているかと思います。
で、そのスクリプトでの次の入力が、コマンドではなく、そのy/nに対して入力されます。つまり,
mget bak-mysql-20121207.sql.gz?
に
mdelete bak.*.*
と入力したような状態になります。
ただ、この入力が表示されないので、見掛けでは改行のない
mget bak-root-20121207.tar.bz2? mget bak-mysql-20121209.sql.gz? mget bak-root-20121209.tar.bz2? mget bak-mysql-20121208.sql.gz? mget bak-root-20121208.tar.bz2?
と見えます。
ftpが対応していれば prompt off 等でy/nを聞かずに実行します。
あるいは、そういう自動転送に特化したツールを使うのがよいかと。
kmee様
以前にも助けていただきました
今回もありがとうございました
>その文字自体には区切りとしての意味はありません。
>「ヒアドキュメント」といいます。
ありがとうごさいました
検索して勉強させてもらいます
>実際にgetするかどうかを聞いてくるので、 yまたはnを入力したりしてるのでは?
まさしくその状態でした
>ftpが対応していれば prompt off 等でy/nを聞かずに実行します。
prompt off をスクリプトに記載して実行したら、きれいにコピーして
くれて、消去もできました
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
- その他(Microsoft Office) エクセルマクロ オートフィルターでで選択コピー 2 2022/04/18 11:05
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- サーバー Googleドライブなどを使わずにテザリングAndroidでWindowsとファイル共有 1 2023/02/19 13:14
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- Visual Basic(VBA) 【VBA】For文を使用し、行をコピーして別シートに貼り付ける方法を教えてください。 4 2022/07/19 09:01
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Windows 10 Corsair SSDが遅い (2)WDに比べて 3 2023/04/25 11:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FTPで存在しないファイルをGET...
-
DNSサーバで逆引きができない件...
-
TeraTermのログが正しく取得出...
-
アドレスの前にwwwの他にw...
-
フォルダを移動した犯人は誰?
-
windows7のパス長制限の解除方法
-
Access 2003 ODBC リンクについて
-
switchで、Wi-Fiはいいのにラグ...
-
ドメイン名『jp』と、サーバ...
-
インターネット時刻にあわせら...
-
IISのログに出力される「GET」...
-
Windows 7のタスクスケジューラ...
-
クリップボードを空にできませ...
-
メールソフトの互換性について(...
-
WinSCP 接続がタイムアウトさ...
-
日付と時刻を勝手に戻らせない...
-
クロックの同期が取れずにネッ...
-
NTPで同期が始まらない
-
windowsコマンドラインでcpuや...
-
PCの時計が進んでいます!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルサーバとFTPサーバの違...
-
DNSサーバで逆引きができない件...
-
FTPで存在しないファイルをGET...
-
FFFTPでファイルがアップロード...
-
勝手にファイルザイズが0バイ...
-
p2p型とc/s型の違い
-
NFSサーバーへのファイル転送速...
-
WSUS セキュリティパッチ
-
FTPにより自動でファイルを...
-
WEBサーバ(solaris)でのユー...
-
ローカルファイルの整理 ファ...
-
サーバ内共有フォルダのレスポ...
-
IISで好みのドメイン名をつ...
-
LAN上の共有フォルダに誰が...
-
ファイルへの電子署名と、SSL用...
-
フォルダを移動した犯人は誰?
-
アドレスの前にwwwの他にw...
-
TeraTermのログが正しく取得出...
-
IISのログに出力される「GET」...
-
インターネット時刻にあわせら...
おすすめ情報