Linux サーバーのバックアップファイルををローカルの Windows パソコンにダウンロードする
前回 LinuxサーバーのバックアップをWindowsパソコンに(I) までで、リモートの Linux サーバー内にシステムバックアップファイルを作るところまで記載しました。
実行環境 Ubuntu 14.04 LTS と Windows10
IV. PSCP による Linux サーバーからローカルPCへのコピー
リモートの Linux サーバーからローカルの windows パソコンへのファイルコピーは、PSCP か WinSCP が便利です。
ここでは PSCP を利用します。
PSCP は SSH クライアントである PuTTY の付属ソフトで、リモートの Linux サーバーとローカルの Windows パソコン間でのファイルコピーを行ってくれるプログラムです。
PuTTY Download Page(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)からダウンロードできます。
Windows 用のインストーラーを利用して PuTTY をダウンロードしている場合、そこに含まれています。
PSCP は Windows パソコンのコマンドプロンプトから利用します。
ます、PSCP の実行ファイル pscp.exe が置かれているディレクトリを確認しておきます。私の場合、PuTTY を一括してダウンロードしていたので、C:\Program Files (x86)\PuTTY のフォルダ下に pscp.exe がありました。
Windows PC でコマンドプロンプトを起動して、当該ディレクトリに移動しておきます。
C:\Users\Callie>cd \Program Files (x86)\PuTTY
また、公開鍵認証を利用している場合に、ローカルPCで Pageant を起動して、秘密鍵のパスを追加しておきます。
リモートの Linux サーバーからローカルの Windows パソコンへのファイルコピーの書式は以下のとおりです。
C:\Program Files (x86)\PuTTY>pscp.exe callie@xxx.xxx.xxx.xxx:backup.tar.gz \Users\Callie\Documents\ServerBackup
ここでは、IPアドレスが xxx.xxx.xxx.xxx のサーバーの callie というユーザー名のユーザーのホームディレクトリにある、backup.tar.gz というファイルを、ローカルの Windows パソコンの、\Users\Callie\Documents\ServerBackup フォルダにコピーしています。
C:\Program Files (x86)\PuTTY>pscp.exe callie@xxx.xxx.xxx.xxx:/etc/crontab \Users\Callie\Documents
というようなダウンロード方法も可能です。
対して、Windows パソコンからリモートの Linux サーバーにファイルをコピーする場合の書式は以下のようになります。
C:\Program Files (x86)\PuTTY>pscp.exe \Users\Callie\Documents\testfile.txt callie@xxx.xxx.xxx.xxx:
newfile.txt
ローカルの Windows パソコンの、\Users\Callie\Documents フォルダ下にある testfile.txt というファイルを、IPアドレスが xxx.xxx.xxx.xxx のサーバーの callie というユーザー名のユーザーのホームディレクトリに、testfile.txt というファイル名で、コピーしています。
なお、サーバーのIPアドレスの代わりに、xxxxxxxxx.com などのドメイン名を用いることも可能です。
V. タスクスケジューラによる自動化
Windows パソコンにはタスクスケジューラが備わっているので、IV.でのPSCP による Linux サーバーからローカルPCへのコピーをタスクスケジューラで自動化します。
Windows10 では、タスクスケジューラは、[コントロールパネル > システムとセキュリティ > 管理ツール] にアクセスし、表示されたショートカットの一覧から [タスクスケジューラ] をクリックしてください。タスクスケジューラが起動し、そのウィンドウが表示されます。
[基本タスクの作成] か [タスクの作成] から新たなタスクを作成しますが、ポイントとなるのは [操作] タブです。
[新しい操作] のウィンドウなどで、[プログラム/スクリプト] [引数の追加] [開始(オプション)] を入力する箇所が出てくるはずですが、入力例は以下のとおりです。
[プログラム/スクリプト] C:\PROGRA~2\PuTTY\pscp.exe
[引数の追加] callie@xxx.xxx.xxx.xxx:backup.tar.gz \Users\Callie\Documents\SystemBackup\backup.tar.gz
[開始(オプション)]
[プログラム/スクリプト] には実行するプログラムファイルを、[引数の追加] には実行ファイルの引数を入力します。[開始(オプション)] はプログラムを起動する起点となるフォルダを指定するものなので、必要なければ空欄のままでかまいません。
なお、実行ファイル pscp.exe のパスはここでは、C:\Program Files (x86)\PuTTY\pscp.exe なのですが、ディレクトリ名に半角スペースが含まれたままでタスクスケジューラを実行するとエラーが出る場合があるので、Program Files (x86) をMS-DOS短縮形式である PROGRA~2 に変更しています。
後はタスクスケジューラを実行する時刻や、その他の設定パラメータを指定してください。
なお、毎日定まった時間帯に Linux サーバーから PSCP でシステムバックアップファイルをローカルPCにコピーするとして、タスクスケジューラは基本的にパソコンの電源が入っているときでないと機能しないので、昼間の時間帯にせざるを得ないかもしれません。
また、Pageant はスタートアップに入れて自動起動させることはでき、引数を指定して秘密鍵のパスも自動で読み込むことはできますが、それ以上にプログラムを組むなどしてパスフレーズの入力まで自動化するのはセキュリティ上好ましくないと思われるので、最低限パスフレーズの入力は毎朝のパソコン立ち上げ時等に入力しておく必要があります。
また、タスクスケジューラの実行ファイルをバッチファイルにして、複数のプログラムを連続して実行させることは可能です。以下はその例です。
daily_serverbackup.bat
del /F before_yesterday_backup.tar.gz
move /Y yesterday_backup.tar.gz before_yesterday_backup.tar.gz
move /Y today_backup.tar.gz yesterday_backup.tar.gz
C:\PROGRA~2\PuTTY\pscp.exe callie@xxx.xxx.xxx.xxx:backup.tar.gz \Users\Callie\Documents\SystemBackup\today_backup.tar.gz
attrib +R today_backup.tar.gz