「FTPコマンドで複数ファイルを一気にダウンロード・アップロードしたい」
ファイル転送の現場では、いまだに従来のFTPコマンドを使用する場面に直面することがあります。
この記事では、Linuxにおける
ftp コマンドの基本的な使い方を体系的に解説します。サーバーへの接続から、単一・複数ファイルのダウンロード(get/mget)とアップロード(put/mput)の手順まで、現場ですぐに使える内容をまとめました。1. FTPサーバーに接続・ログインする
まずは、対象のFTPサーバーに接続します。$ ftp 192.168.1.100
接続が成功すると、ユーザー名とパスワードの入力が求められます。
Name (192.168.1.100:root): user_name ←ユーザー名を入力 331 Please specify the password. Password: ←パスワードを入力(画面には表示されません) 230 Login successful. ftp>
ftp> に変わり、FTPコマンドの受付状態になります。2. 接続後の基本操作(現在地の確認とファイル一覧)
ログイン直後はどのディレクトリにいるか把握するところから始めます。# リモート側の現在のディレクトリを確認する ftp> pwd 257 "/home/user_name" is the current directory. # リモート側のファイル・ディレクトリ一覧を表示する ftp> ls drwxr-xr-x 2 user user 4096 Feb 16 10:00 public_html -rw-r--r-- 1 user user 1234 Feb 16 09:00 sample.txt
3. ファイル転送前の必須準備(転送モードとディレクトリ移動)
ファイルを転送する前に、必ず確認・設定すべき項目が2つあります。転送モードを「バイナリモード」にする
画像ファイルや圧縮ファイル(.gz、.zipなど)を転送する際は、データが破損しないようにバイナリモード(bin)に切り替えます。現場では基本的に、常にバイナリモードにしておくのが安全です。ftp> bin 200 Switching to Binary mode.
ascii コマンドでASCIIモードにします。ディレクトリを移動する(cd と lcd)
リモート側(接続先のサーバー)と、ローカル側(自分の手元のPC)のそれぞれで、作業ディレクトリを移動します。# リモート側のディレクトリを移動する ftp> cd /var/www/html # ローカル側(手元)のディレクトリを移動する(Local CDの意味) ftp> lcd /home/user/downloads
4. ファイルをダウンロードする(get / mget)
1つのファイルをダウンロード(get)
単一のファイルを手元に持ってくるにはget コマンドを使用します。ftp> get sample.txt
ダウンロードと同時にローカル側のファイル名を変えたい場合は、第2引数に保存名を指定します。
# sample.txt をダウンロードし、backup.txt という名前で保存する ftp> get sample.txt backup.txt
複数ファイルを一気にダウンロード(mget)
複数のファイルや、ワイルドカード(*)を使ってまとめてダウンロードしたい場合はmget コマンドを使用します。ただし、そのまま
mget を実行すると、ファイル1つごとに「ダウンロードしますか? (y/n)」と確認されてしまい非常に手間です。事前に prompt コマンドを実行して、対話モードをOFFにしておくのが現場の鉄則です。# 対話確認モードをOFFにする ftp> prompt Interactive mode off. # 拡張子が .gz のファイルをすべてダウンロードする ftp> mget *.gz
5. ファイルをアップロードする(put / mput)
ダウンロードの逆で、自分の手元にあるファイルをサーバーへ送るコマンドです。1つのファイルをアップロード(put)
ftp> put update.tar.gz
get と同様に、アップロード先でのファイル名を変えることもできます。
# update.tar.gz を release.tar.gz という名前でアップロードする ftp> put update.tar.gz release.tar.gz
複数ファイルを一気にアップロード(mput)
こちらもダウンロード時と同様に、事前にprompt コマンドで確認をOFFにしてから実行します。# 対話確認モードをOFFにする ftp> prompt Interactive mode off. # 拡張子が .html のファイルをすべてアップロードする ftp> mput *.html
6. FTP接続を終了する
作業が完了したら、bye(または quit)コマンドでFTP接続を終了し、元のLinuxのプロンプトに戻ります。ftp> bye 221 Goodbye. $
よくあるエラーと対処法(接続できない・ログインできない・Connection refused・Login incorrect)
Connection refused(接続拒否)
ftp: connect: Connection refused
systemctl status vsftpd を実行し、FTPサービス自体が正常に起動しているかを最優先で確認してください。Login incorrect(ログイン失敗)
530 Login incorrect.
【重要】現代のセキュリティにおける注意点
従来のftp コマンドは、パスワードや転送データがすべて「平文(暗号化されていない状態)」でネットワーク上を流れてしまうという致命的なセキュリティリスクがあります。現代のLinux運用において、インターネット越しに
ftp コマンドを使用することは非推奨です。ファイル転送を行う際は、SSHの暗号化通信を利用する sftp や scp コマンドを使用するのが現在の業界標準となっています。FTPは閉じた安全なローカルネットワーク内でのみ使用するようにしましょう。sftp の基本的な使い方:
# sftpで接続(ftp と同様のコマンドでファイル操作が可能) $ sftp user_name@192.168.1.100 # scpで1ファイルをダウンロード $ scp user_name@192.168.1.100:/var/www/html/sample.txt ./
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 現在のリモートディレクトリを確認 | pwd |
| リモートのファイル一覧を表示 | ls |
| リモートのディレクトリ移動 | cd ディレクトリ名 |
| ローカルのディレクトリ移動 | lcd ディレクトリ名 |
| 転送モードをバイナリにする | bin |
| 単一ファイルのダウンロード / アップロード | get ファイル名 / put ファイル名 |
| ファイル名を変えながら転送 | get 元ファイル名 保存ファイル名 / put 元ファイル名 アップロード先ファイル名 |
| 複数ファイルのダウンロード / アップロード | mget ファイル名 / mput ファイル名 |
| 複数ファイル操作時の確認を省略する | prompt |
| FTP接続を終了する | bye または quit |
ファイルの権限やネットワークのセキュリティで、冷や汗をかいていませんか?
「アップロードしたのにWebで表示されない」「平文でパスワードを送ってしまった」など、サーバー運用における少しの知識不足が、情報漏洩やシステム障害といった大事故に繋がることがあります。
古い情報に振り回されず、現場で通用するLinuxサーバー構築の"型"とセキュリティの基礎を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
<<関連記事>>
・CentOS7のホスト名設定(nmcliコマンド)
・IPv6アドレスを確認する
・nmapでポートスキャンを実施する
・名前解決の参照順を変更する(/etc/host.conf)
・名前解決の参照順を変更する(/etc/nsswitch.conf)
