WinSCPのようなGUIツールが使えず、Tera TermだけでLinuxサーバーの設定ファイルデプロイを強いられたとき、「どうやって大量のファイルを安全かつ迅速に送るんだ…」と途方に暮れた経験はありませんか?
特に、今回のミッションが以下のような具体的なディレクトリの更新である場合、手順を一つ間違えるとシステムに影響を与えるリスクがあります。
【今回のゴール(シナリオ)】
- 手元にあるファイル: ローカルPCにある config.zip(新しい設定ファイル群)
- やりたいこと: サーバー上の /etc/settings/config ディレクトリ配下を、ZIPの中身で完全に置き換え(更新)たい。
- 制約: GUIツール禁止。Tera Termとコマンド操作のみ。
この記事では、このシナリオを確実に成功させるための、転送・バックアップ・解凍・配置の完全手順を解説します。
この記事を読めば、以下の悩みが解決します。
- 既存の/etc/settings/config環境を、/tmpへ安全にバックアップしてから作業する方法がわかります。
- unzipコマンドで解凍先フォルダを指定し、ファイルが散らばるのを防ぎながらスマートに準備するテクニックが身につきます。
- 最終的にcpコマンドを活用し、対話プロンプトを出さずに一括で強制上書きする効率的な手順をマスターできます。
WinSCPが使えない環境でのファイル転送の基礎知識
転送の選択肢:GUI(WinSCP)とCUI(SCP/SFTP)
ファイル転送で最も手軽なのはWinSCPのようなGUI(グラフィカルユーザーインターフェース)ツールを使う方法です。
しかし、多くのセキュリティが厳しいoisystemなどの本番環境では、WinSCPのようなクライアントツールの利用自体が禁止されていることが少なくありません。
なぜGUIツールが使えないのか?
- セキュリティポリシー: 踏み台サーバーを経由する多段SSH接続が必須で、GUIツールが対応できない。
- ツールの制限: 社内規定で認可されたTera Term以外のソフトがインストールできない。
このような環境では、Tera Termに標準搭載されているSCP機能を使うのが最も安全で確実です。
【実践手順1】ZIP転送とバックアップの取得
このセクションでは、ローカルPCのconfig.zipをサーバーへ送り、更新対象となる/etc/settings/configディレクトリのバックアップを取得するまでを解説します。
ステップ1:PCからLinuxサーバーの/tmpへZIPを転送
まず、更新用ファイルをサーバーの一時領域に送ります。
SSH接続した状態で、メニューの「ファイル(F)」>「SSH SCP(S)…」を選択します。
- 「From:」にローカルPC上のファイル(例: C:\Users\User\Desktop\config.zip)を指定します。
- 「To:」にサーバー側の転送先(例: /tmp)を指定します。
「Send」ボタンをクリックして転送します。
これで、config.zipがサーバーの/tmpディレクトリに配置されました。
ステップ2:対象ディレクトリを/tmpへバックアップ
更新作業に入る前に、現在の稼働環境(/etc/settings/config)をバックアップします。今回は/tmpディレクトリに日時付きで退避させます。
cd /tmp# -r: ディレクトリの中身もすべてコピー
# -p: パーミッション(権限)やタイムスタンプを保持
sudo cp -rp /etc/settings/config /tmp/config_backup_$(date +%Y%m%d)ポイント
mv(移動)ではなくcp(コピー)を使うことで、本番環境(/etc/settings/config)には古いファイルが残った状態になります。これにより、万が一この後の作業中にエラーが起きても、システム自体は以前の状態で稼働し続けられます。
【実践手順2】フォルダ指定解凍と強制上書き
ここからが本題です。転送したZIPファイルを解凍し、ターゲットディレクトリ(/etc/settings/config)へ一括で適用(上書き)します。
ステップ3:ディレクトリを指定してZIPを解凍
ZIPファイルをそのままunzipすると、カレントディレクトリ(/tmp)にファイルが散らばってしまうリスクがあります。これを防ぐため、解凍先のフォルダ名を指定して解凍します。
# /tmpにいる状態で実行します
# -d オプション:指定したディレクトリを作成してそこに解凍する
# config.zipを「new_config」という一時フォルダの中に解凍
unzip config.zip -d new_configこれにより、config.zipの中身がどうであれ、/tmp/new_config/というフォルダの中にきれいに格納されます。
ステップ4:cp -Rfで本番環境へ強制上書き
最後に、解凍した新しいファイル群を、本番環境(/etc/settings/config/)へ上書きコピーします。
# 解凍した一時フォルダの中身を、配置先へ強制コピー
# -R: 再帰的コピー(フォルダ内の全データを対象)
# -f: 強制コピー(上書き確認プロンプトを回避)
sudo cp -Rf new_config/* /etc/settings/config/このコマンドの挙動:
- new_config/ の中にあるすべてのファイルとフォルダが、/etc/settings/config/ の中にコピーされます。
- 同名のファイルがある場合は、確認なしで上書きされます。
- これにより、今回のゴールである「ZIPの内容での置き換え」が完了します。
補足
作業が完了し、問題なく動作していることが確認できたら、/tmp配下のバックアップや一時ファイル(config.zip, new_config, config_backup_…)は削除しても構いません。
まとめ
環境に制約があるoisystemなどのLinuxサーバーであっても、正しい手順を踏めば、GUIツール並みに安全かつ整理されたデプロイが可能です。
今回の重要コマンドまとめ
| 目的 | コマンド / 操作 | メリット |
| 転送 | Tera Term SCP | GUI禁止環境でもZIPファイルを確実に転送可能。 |
| バックアップ | cp -rp [元] [先] | 権限を保持したまま/tmpへ複製を残せる。 |
| 解凍 | unzip [file] -d [dir] | 指定フォルダを作って解凍できるため、ファイルが散らばらない。 |
| 配置 | cp -Rf [元]/* [先]/ | 対話プロンプトを回避し、一括で強制上書き完了。 |
読者が次に取るべき具体的なアクション
今回の手順で一番のポイントは、unzipの-dオプションと、cpの-fオプションの組み合わせです。
次回の手順書作成や作業時には、ぜひ「解凍用の一時フォルダを作る(-d)」という手順を標準化してみてください。これだけで、ZIPの中身がどうなっているかを気にせず、常に同じ手順でミスなくデプロイ作業が行えるようになります。


コメント