Raspberry Piにファイルを送るには?

記事
IT・テクノロジー

Raspberry Piにファイルを送るには?

Raspberry Pi を Web サーバーにした場合、直接 Web サイトの中身を Raspberry Pi で作る方法もありますが、別の開発用の PC で作成して送る仕組みがあると便利です。実際の Web サーバーの場合も殆どは、別の PC でサイトの中身を作って、Web サーバーに送るのが一般的です。こうした仕組みを理解する意味でも実際に試してみると理解が深まります。


色々あるサイトの情報の送り方

Web サイトの情報を送る方法は色々あります。 良く利用されるのは、FTP(File Transfer Protocol)で、Web サイトのホスティングを提供する業者も、FTP を利用してサイトの中身をサーバーに送る方法は広く利用されています。仕組みも簡単で、Raspberry Pi でも簡単に利用できます。

同じような方法で、SFTP(SSH File Transfer Protocol/Secure File Transfer Protocol)という方法があります。 何が違うかというと、ファイルを送信する際に暗号化して送るのでより安全にデータを送ることができる方法です。FTP の場合、データを暗号化しないで送信するため、途中経由するコンピュータなどでは中身を見ることができるため、最近ではインターネットを経由するファイル転送は SFTP を利用する場合が主流になっています。この方法は、Raspberry Pi 側で、SSH の設定をしておけば簡単に利用できるので、今回はこの方法を利用して別の PC からデータを送る方法について紹介します。

SFTP を利用するには

Linux や Unix 系の OS の場合、コマンドラインから利用できます。(Mac は Unix 系の OS です) 前回作成した、Web サイトの管理ユーザーのwebの場合、Raspberry Pi の IP アドレスが「192.168.86.218」の場合は以下のコマンドを実行すると利用できます。

シンプルに利用する場合には、送るファイルがあるフォルダで以下のコマンドを実行するのが簡単です。別のフォルダに移動する場合には、「lcd」のコマンドを利用して移動します。これは「Local」のコンピュータのフォルダを移動するためのコマンドです。送り先の PC では、ホームフォルダにログインされるので、必要に応じて通常のコマンドラインで行うように「cd」コマンドで移動します。

$ sftp web@192.168.86.218
sftp> cd www
ログイン後に前回作成した Web 公開用のフォルダ「www」に移動して、ファイルを指定して送るだけです。 ファイルの指定は「test.html」の場合以下のように、「put test.html」と入力して実行すると、ファイルが Raspberry Pi に送信されます。送信元の PC(ローカル)のフォルダのファイルを見るには「lls」、送信先の Raspberry Pi のフォルダのファイルを見るには「ls」を使えば見ることができます。

sftp> lls
test.html
sftp> put test.html
sftp> ls
index.html test.html

前回作成した、「Hello World!」のファイル「index.html」と今回送信した「test.html」があるのがわかります。 Web ブラウザで、「192.168.86.218/test.html」を指定すると、送信した「test.html」が表示されます。

FileZilla を利用するともっと簡単にファイルが送れます!

簡単と言ってもコマンドラインから操作するのは、ちょっと面倒です。慣れてしまえば余り大きな問題ではありませんが、沢山ファイルを送ったりする際にはちょっと不便です。

そこでお勧めするのが、FileZilla というアプリです。Linux/Windows/Mac で利用可能です。 アプリはFileZilla のサイトから無料でダウンロードして使用できます。開発用の PC でダウンロードしたら指示に従ってインストールします。Raspberry Pi 側ではないのでご注意ください。Raspberry Pi 側に入れておけば、デスクトップ版の OS の場合、Raspberry Pi から SSH サーバーが設定されている PC にファイルを送ることができます。


インストールができたら最初にファイルの送り先を登録します。 File ->Site Manager を選択して、サイトマネージャを開きます。

「New Site」のボタンをクリックして新しい送り先を登録します。

* Protocol: SFTP - SSH File Transfer Protocol  を選択します
* Host: IP アドレスを入力します(私の環境の場合  192.168.86.218)
* Port: ポート番号で SSH の場合は、「22」を使います
* Login Type: Normal を選択します
* User: ユーザー名を入れます(私の事例の場合は「web」になります)
* Password; Raspberry Pi で設定したパスワードを入力します
設定が済んだら、「Connect」ボタンを押すと Raspberry Pi に接続されます。 左側が送信元のコンピュータのファイル・フォルダが表示されて、右側が送り先(Raspberry Pi)のファイルが表示されます。 あとは、普通に PC でファイルを動かすのと同じ要領で、ファイルを選んで送り先に移動させればファイルが転送されます。

GUI(Graphical User Interface)で操作できるので簡単です。

GitHub を利用する方法もあります
もう一つよく利用される方法は、GitHub を利用する方法です。 Raspberry Pi でインターネットアクセスができる場合、SSH で Raspberry Pi にログインして、 GitHub のレポジトリをクローンするという方法です。

$ git clone h t t p s://gighub.com/[GitHubのユーザー名]/[GitHubのリポジトリー名]
を実行すると、「.gitignore」にリストされているファイル以外は全てコピーされます。 この方法だとプロジェクトフォルダごと簡単にコピーできるので便利です。

まとめ
Raspberry Pi の Web サーバーに開発用の PC から Web サイトの中身の情報(ファイル)を送る方法を紹介しました。 SFTP を利用するのがシンプルで簡単です。 FileZilla などのアプリを使えば、SFTP のコマンドを知らなくても簡単にファイルを送る事が可能です。

インターネット接続がある場合には、GitHub に作ったリポジトリーをコピーする方法もよく利用されています。 プロジェクトフォルダごとコピーできるのでミスが少なく簡単に同じ環境を設定できるので便利な方法です。

これで、擬似 Web ホストに Web サイトを置いて、開発用の PC から必要なファイルを送ってサイトの運営ができるようになります。こうした、サーバーを利用して、Web サイトや Web アプリの仕組みを学ぶことで、より Web 開発を深く理解することができます。 シニアのエンジニアのステップアップに実際に Web サイトの環境構築は有効なステップです!
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す