Windowsのコマンドプロンプトから利用できる標準の「ftp」コマンド。 サーバー間でサクッとファイルをダウンロード(転送)したいときに便利ですが、実はデフォルトの挙動のまま使うと、意図しないデータの消失(上書き)を招く危険があります。
今回は、Windows標準のftpコマンドが持つ「上書き仕様」の罠と、それをスマートに回避してファイル名に自動で連番を振ってくれる隠しコマンド runique on の使い方を解説します!
🚨 デフォルトの挙動:同名ファイルは「無言で上書き」される
Windowsのftpクライアント(ftp.exe)の初期状態では、ファイルの「上書きを確認する」機能や制御オプションが有効になっていません(これを runique off の状態と言います)。
そのため、get や mget コマンドを使ってファイルをダウンロード(転送)する際、ローカル環境(自分のPC側)に全く同じ名前のファイルがすでに存在していても、確認メッセージを出すことなくデフォルトで上書きされてしまいます。
「大切なローカルファイルを過去の古いファイルで上書きしてしまった……」という悲劇を起こさないためには、転送前に設定を1行変える必要があります。
🛠️ 上書きを防ぐ救世主:runique on コマンド
ローカルファイルの強制上書きを防ぐには、FTPサーバーに接続した後に runique on というコマンドを実行します。
これを行うだけで、もしダウンロード時に同名のファイルが存在した場合、Windowsが自動的にファイル名に連番(.1、.2 など)を付与して別名で保存してくれるようになります。
具体的な実行手順
設定方法は非常に簡単です。FTPクライアントを起動した後に以下のコマンドを叩くだけです。
-
コマンドプロンプトからFTPサーバーに接続する
DOSftp <サーバーのIPアドレスまたはホスト名> -
ログイン完了後、以下のコマンドを実行する
Plaintextftp> runique on
💡 実行後の挙動イメージ
この設定が有効な状態で、例えばローカルにすでに sample.txt があるにもかかわらず、サーバーから同名の sample.txt をダウンロードしようとすると、自動的に sample.txt.1 という名前で保存され、既存のファイルが守られます。さらに重複すれば sample.txt.2 と連番が増えていきます。
元の設定(デフォルトの上書き動作)に戻したい場合は、runique off を実行すればOKです。
📋 合わせて知っておきたいFTP関連コマンド
FTPクライアント内では、runique 以外にも運用の効率を上げる便利なコマンドが用意されています。
1. 利用できるコマンドを調べる help
FTPクライアント内で何ができるか迷ったら、まずはこのコマンドを叩きましょう。
ftp> help
実行すると、その環境のFTPクライアントで利用可能なコマンドの一覧と、簡単な説明を確認することができます。
2. 複数一括転送の挙動を制御する glob
mget や mput を使って、ワイルドカード(* や ? などのメタ文字)を含んだ複数ファイルを一括転送する際、ファイル名の展開動作を制御するのが glob コマンドです。
ftp> glob on # メタ文字の展開を有効にする(デフォルト)
ftp> glob off # メタ文字の展開を無効にする
※なお、この glob はファイル名の「展開方法」を制御するものであり、今回紹介した「上書きの制御」には直接関係しません。複数ファイルを安全に一括ダウンロードしたい時は、glob on(一括指定)と runique on(上書き防止)を組み合わせて使うのがベストです。
📝 まとめ
Windows標準のFTPコマンドは、手軽な反面、デフォルトでは「同名ファイルは上書き」という男前すぎる仕様になっています。
-
何も設定しない(
runique off) ➔ 同名ファイルは強制上書き -
runique onを実行する ➔ 重複時はファイル名.1のように自動連番で保護
バッチ処理などで自動ダウンロードを組み込む際や、手動で大切なデータを引っ張ってくる際は、接続直後にまず runique on を唱える癖をつけておくと、不慮のデータ消失トラブルを未然に防ぐことができますよ!
