linuxマシン(ローカル)から、レンタルサーバ(さくら)
のバックアップファィルを自動でダウンロードしようとしています
linuxマシンのサーバで下記のようにコマンドを順番にたたくとダウンロード
できます
================================================================
[root@linux ~]# ftp -i ***.***.***.***
Connected to ***.***.***.***.
220 ProFTPD 1.3.3g Server (SAKURA Internet FTP Server) [***.***.***.***]
500 AUTH not understood
500 AUTH not understood
KERBEROS_V4 rejected as an authentication type
Name (112.78.112.40:root): abcde
331 Password required for abcde
Password:
230 User abcde logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> passive
Passive mode off.
ftp> binary
200 Type set to I
ftp> cd /home/abcde/backup/
250 CWD command successful
ftp> mget bak*
local: bak-mysql-20111226.sql.gz remote: bak-mysql-20111226.sql.gz
200 PORT command successful
150 Opening BINARY mode data connection for bak-mysql-20111226.sql.gz (2431811 bytes)
226 Transfer complete
2431811 bytes received in 0.43 seconds (5.5e+03 Kbytes/s)
local: bak-mysql-20111111.sql.gz remote: bak-mysql-20111111.sql.gz
200 PORT command successful
150 Opening BINARY mode data connection for bak-mysql-20111111.sql.gz (2459206 bytes)
226 Transfer complete
2459206 bytes received in 0.44 seconds (5.5e+03 Kbytes/s)
ftp> quit
221 Goodbye.
=================================================================
次に、シェル等をcronに登録して自動化したいので下記URLを
http://q.hatena.ne.jp/1244629690
参考にして次のスクリプトを記載してlinuxマシンの/root
に入れました
=================ftp_all.sh===========================
#!/bin/csh -f
#"@(#)ftp_all.sh 1995/07/01 Copyright(C)1995 ASH"
#
# name: ftp all files
#
ftp -n ***.***.***.*** << _EOD
user (ユーザ名) (パスワード)
passive
binary
cd /home/*****/backup
mget bak*.*
bye
_EOD
========================================================
そして、ローカルサーバから
# sh ftp_all.shとたたくと
下記のようになりスクリプト(?)がうまく働いてないように
みえます
=====================================================
: command not found
AUTH not understood
AUTH not understood
KERBEROS_V4 rejected as an authentication type
Login incorrect.
Login failed.
?Invalid command
?Invalid command
Please login with USER and PASS
Please login with USER and PASS
Passive mode refused. Turning off passive mode.
Please login with USER and PASS
ftp: bind: Address already in use
?Invalid command
=====================================================
これとは別にWindowsマシンからのバッチファイルでは
ダウンロードできるのですが、linuxのローカル側から
ダウンロードしたいので・・・
どなたか、どのようにすれば自動化できるか教えていただけないで
しょうか
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
改行コードは
Windows標準は CR+LF (ASCIIコード13,10と2文字使用)
Linux等のunix系標準は LF (ASCIIコード10と1文字使用)
です。CR+LFのファイルをそのままLinuxで使おうとすると、CRが「ただの文字」と扱われてしまいます。
そのため、CRをファイルやコマンドの一部だと解釈され、エラーになったり、なぜか消せないファイルができたりします。
# 消せないのは、見えるファイル名だけを指定するだけでは、CRが含まれないためで、*を使うとかすれば消せます。
CRは端末でカーソルを行頭へ復帰させるために使うコードでもあります。
そのため、本当は
~: command not found と表示するところが ~のあとにCRで行頭に戻って、:以降で上書きされて :ではじまったように見えている状態です。
対処法ですが
・Windows側で対応
エディタでの設定で、改行をLFにする。
大抵のまともなエディタは対応しています。
また、他の大抵のアプリでは、LFのファイルでも普通にテキストファイルとして読み込めます。
メモ帳のようにどちらもできないものもありますが。
・転送時に対応
FTPにはASCIIモードといって、転送時の改行コードを修正するモードがあります。
これで送ると、転送相手にあったものになります。
切り替えを忘れると、変えてはいけないバイナリーデータまで変わってしまうので、注意が必要です。
・Linux 側で対応。
CR+LFのまま転送しても、nkf,dos2unix等の変換アプリがあります。
適当なエディタで開いて、LFで保存しなおすのも手です。
漢字コードについても同様です。
mdeleteについてはわかりません。
あと、今回の範囲では問題ないですが
> #!/bin/csh -f
と書いてあっても
> sh ftp_all.sh
と実行すれば、cshではなくshで実行します。B-sh系とC-sh系では文法などいろいろ違うので、注意しましょう。
シェルスクリプトではBsh系が使われます、
kmee様
丁寧に説明いただきありがとうございました。
改行コードについてよくわかりました。
windowsとlinuxでの違いもあることが理解できました。
あと、スクリプトの最上位にある
> #!/bin/csh -f
これについてもわからないままに利用していました。
B-sh系とC-sh系での違いがあることも理解しました。
これも次の勉強の入口がわかりました。
次に
>mdeleteについてはわかりません。
この件ですが、おそらくということなのですが、FTPツールでダウンロード
した時の状態をみていると、ダウンロードするファイルが大きいので
deleteできるようになるために結構時間がかかります
このことがあるのかと想定しています
従って、後で、時間をとるコマンドを記載するか
別のdeleteするスクリプトを作成し、数分の時間をおいてそれを走らせる
やり方でためしてみるつもりです
いずれにせよ、丁寧に教えていただいてありがとうございました。
No.1
- 回答日時:
表示は
: command not found
でしたか? その行は:で始まっているのですか?
もしそうなら、一つあやしいのは、改行コードです。
ftp_all.sh を作ったのがWindowsで、それをFTPで転送した、ってことは無いですか?
この回答への補足
補足させていただきます
【Viコマンドで直接たたいた場合】
うまく動作しました。ありがとうございました。
【windowsエディターで作成した場合】
文字コード・・・自動選択
改行コード・・・LF
これで動作しました
↑上記が正解でしょうか?
別の質問にすべきかもしれませんが・・・
質問のmget bak*.*のあとに
mdelete bak*.*としたのですが
ダウンロードはしているのですが、ファイル削除していません
このコマンドの利用はできないのでしょうか?
わかれば教えていただけば幸いです
いつも返答ありがとうございます。
>:command not found
>でしたか? その行は:で始まっているのですか?
そのとおりです。「:」で始まっています
>ftp_all.sh を作ったのがWindowsで、それをFTPで転送した、ってことは無いですか?
当方はいつもそのような作成をしています
ftp_all.shを削除してみて、vi コマンドで直接作成してみます
その結果は後で報告させていただきます
なお、改行コード等は
エディターは、「MKEditor」
保存する時にファイルの種類を「*.*」
文字コードは「EUC」
改行コードは「CR+LF」としました
どの組み合わせが最適なのか教えていただければ幸いです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(SNS・コミュニケーションサービス) 自分のpcがハッキングされたようなメールが来たのですがどうすればいいですか? 4 2022/10/02 16:14
- 英語 The Twilight Zone1959に関するCBSの回答について 1 2023/03/02 15:13
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
- Mac OS MacOS Mojave でHoi4はスムーズに動きますか? 1 2022/07/18 22:19
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- YouTube youtubeからの著作権メールについて 2 2023/02/14 16:12
- Visual Basic(VBA) 順列をランダムに発生するプログラム 1 2022/11/16 12:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドでのFTP転送が進まない。
-
DNSサーバを設定したのですがns...
-
同一のホスト名で何か問題があ...
-
リモートデスクトップ接続でパ...
-
Linuxでパスワード変更時に「it...
-
パスワード設定していないユー...
-
エクセルで#N/Aを含めた平均値...
-
AWSでSSH接続をしたいのですが...
-
”Tortoise SVN” と ”Subversio...
-
【DNS】ゾーン情報が上手く設定...
-
プロキシサーバとDNSサーバにつ...
-
BIND エラー not found: 3(NXD...
-
エラーメールで"too many hops"...
-
root権限によるFFFTPでの接続
-
Apacheでセッションタイムアウ...
-
iPadの受信メールが消える
-
MacでKCFErrorDomainCFNetwork ...
-
cronの実行結果をメールで受け...
-
nslookup IPアドレスの数
-
Windows11のファイル共有
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドでのFTP転送が進まない。
-
Access2000でFTPの使い方につい...
-
「Norton 360 2.0」のダウンロ...
-
FTPで・・・
-
パスワード設定していないユー...
-
リモートデスクトップ接続でパ...
-
DNSサーバを設定したのですがns...
-
同一のホスト名で何か問題があ...
-
エクセルで#N/Aを含めた平均値...
-
エラーメールで"too many hops"...
-
循環参照にならない方法があっ...
-
ワークグループ設定のPCの名前解決
-
”Tortoise SVN” と ”Subversio...
-
AWSでSSH接続をしたいのですが...
-
Mailの送信済みメールボックス...
-
「DNSサーバーを自動的に取得す...
-
同じ独自ドメインを2つのサーバ...
-
iPadの受信メールが消える
-
プロキシサーバとDNSサーバにつ...
-
サーバ空きスペースの活用方法
おすすめ情報