キャリテク!マガジン
- TOP
- キャリテク!マガジン
- 転ばぬ先のバックアップ (5) 外部ホストへファイルをバックアップしよう - sftp 編
転ばぬ先のバックアップ (5) 外部ホストへファイルをバックアップしよう - sftp 編
こんにちは。株式会社パイプラインの濱田です。
前回までは自ホストにあるファイルをバックアップする方法について取り上げました。今回からは自ホスト(ローカル)にあるファイルを他ホスト(リモート)へバックアップする方法について取り上げます。
リモートホストへバックアップを行う理由
ファイル編集作業の都度または変更管理をシンプルに行いたい、かつ、サーバー障害による影響が軽微な場合はローカルでのバックアップから素早く復旧させることが可能です。しかし、ディスク障害やネットワーク障害により目的のファイルが取り出せないとなると、バックアップとしては不十分です。
ローカルホストからリモートホストへのファイルバックアップ、またはリモートホストからローカルホストへのファイルリストアを行う方法は複数ありますが、今回はsftpによるバックアップ、リストアについて取り上げます。
sftpコマンドによるファイルバックアップとリストア
sftpとは、SSHで暗号化された通信路を経由した安全なファイル送受信プロトコルです。ftpは平文で通信を行う (暗号化されていない) ため、近年のLinuxではftpサーバーやftpクライアント (ftpコマンド) は意図してインストールしない限り使用できません。
ローカルホストからリモートホストへバックアップする
それでは、自ホスト(poposample-01)のホームディレクトリ直下にあるsample.txtをリモートホスト(poposample-02)へsftp転送してみましょう。
[nullpopopo@poposample-01 ~]$ sftp poposample-02.pipelinejp.com nullpopopo@poposample-02.pipelinejp.com's password: Connected to poposample-02.pipelinejp.com. sftp> put sample.txt Uploading sample.txt to /home/nullpopopo/sample.txt sample.txt 100% 31KB 13.3MB/s 00:00 sftp> quit |
sftp <リモートホスト> の構文でコマンドを実行するとパスワードを聞かれます。パスワードを入力してエンターキーを押下すると、sftpのプロンプトが表示されます。ローカルホストからリモートホストへのファイル転送はputコマンドを実行します。上記の例では、「put sample.txt」と実行していますので、ホームディレクトリ直下にあるsample.txtがリモートホストへ転送されます。ディレクトリのパス名を省略すると、ホームディレクトリ直下のファイルを転送します。sftpのプロンプトを抜けてローカルホストのシェルに戻るには「quit」コマンドを実行します。
ホームディレクトリ(/home/nullpopopo)直下のファイルではなく、/home/nullpopopo/SAMPLEディレクトリ以下にあるsample.txtを転送したい場合は、パスを指定してputコマンドを実行します。
[nullpopopo@poposample-01 ~]$ sftp poposample-02.pipelinejp.com nullpopopo@poposample-02.pipelinejp.com's password: Connected to poposample-02.pipelinejp.com. sftp> put SAMPLE/sample.txt Uploading SAMPLE/sample.txt to /home/nullpopopo/sample.txt SAMPLE/sample.txt 100% 31KB 15.5MB/s 00:00 sftp> quit |
または、ローカルホストのパスを移動してからputコマンドを実行する方法もあります。sftpのプロンプト内でローカルホストのディレクトリを移動するには「lcd」コマンドを実行します。
[nullpopopo@poposample-01 ~]$ sftp poposample-02.pipelinejp.com nullpopopo@poposample-02.pipelinejp.com's password: Connected to poposample-02.pipelinejp.com. sftp> lcd SAMPLE sftp> put sample.txt Uploading sample.txt to /home/nullpopopo/sample.txt sample.txt 100% 31KB 12.6MB/s 00:00 sftp> quit |
先ほどはlcdでローカルホスト側のカレントディレクトリを移動しましたが、リモートホストのディレクトリを移動するにはcdコマンドを使用します。ややこしいかも知れませんが、sftpコマンドのプロンプトはリモートホストのもの、つまりpoposample-02.pipelinejp.comへお邪魔して実行しているので、感覚として覚えておくとよいでしょう。
単一のファイルだけではなく、ディレクトリ単位での転送を行ってみましょう。ホームディレクトリ直下にあるSAMPLEディレクトリをリモートホストへsftp転送してみましょう。
[nullpopopo@poposample-01 ~]$ sftp poposample-02.pipelinejp.com nullpopopo@poposample-02.pipelinejp.com's password: Connected to poposample-02.pipelinejp.com. sftp> put -r SAMPLE Uploading SAMPLE/ to /home/nullpopopo/SAMPLE Entering SAMPLE/ SAMPLE/sample.txt 100% 31KB 14.6MB/s 00:00 sftp> quit |
putコマンドの後に「-r (recursiveの意) 」をつけて実行することで、対象のディレクトリ以下を再帰的に転送することができます。
リモートホストからローカルホストへリストアする
反対に、リモートホストにあるファイルをローカルへ転送してみましょう。リモートホストのSAMPLEディレクトリにあるsample.txtをローカルホストのホームディレクトリ直下にダウンロードします。
[nullpopopo@poposample-01 ~]$ sftp poposample-02.pipelinejp.com nullpopopo@poposample-02.pipelinejp.com's password: Connected to poposample-02.pipelinejp.com. sftp> cd SAMPLE sftp> get sample.txt Fetching /home/nullpopopo/SAMPLE/sample.txt to sample.txt /home/nullpopopo/SAMPLE/sample.txt 100% 31KB 11.6MB/s 00:00 sftp> quit |
または、以下のようにcdせずに実行することも可能です。
[nullpopopo@poposample-01 ~]$ sftp poposample-02.pipelinejp.com nullpopopo@poposample-02.pipelinejp.com's password: Connected to poposample-02.pipelinejp.com. sftp> get SAMPLE/sample.txt Fetching /home/nullpopopo/SAMPLE/sample.txt to sample.txt /home/nullpopopo/SAMPLE/sample.txt 100% 31KB 13.1MB/s 00:00 sftp> quit |
ディレクトリの転送も同様に行います。以下の例では、poposample-02.pipelinejp.comの/home/nullpopopo/SAMPLEディレクトリをローカルホストへダウンロードしています。
[nullpopopo@poposample-01 ~]$ sftp poposample-02.pipelinejp.com nullpopopo@poposample-02.pipelinejp.com's password: Connected to poposample-02.pipelinejp.com. sftp> get -r SAMPLE Fetching /home/nullpopopo/SAMPLE/ to SAMPLE Retrieving /home/nullpopopo/SAMPLE /home/nullpopopo/SAMPLE/sample.txt 100% 31KB 10.5MB/s 00:00 sftp> quit |
今回の例では以下の操作を実行しました。
- ローカルホストのファイルをリモートホストへバックアップする
- ローカルホストのディレクトリを再帰的にリモートホストへバックアップする
- リモートホストのファイルをローカルホストへリストアする
- リモートホストのディレクトリを再帰的にローカルホストへリストアする
次回はsftpによるファイル転送を自動実行する方法を取り上げます。
まずはエンジニアデビューしたい、という方は、3ヶ月間学びながらお給料が貰える AltX キャリテク!の門を叩いてみてはいかがでしょう。
https://www.kcct.co.jp/careetec/