Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ローカルでコードを書いて、RaspberryPiにrsyncで送って実行する話

More than 3 years have passed since last update.

Macとラズパイで同じPythonやNodeJSが動くからとMac上でコード書いてデバッグして(納品前日とかに)いざラズパイで動かそうとすると全然挙動が違って焦る。iPhoneアプリ開発とかでもそうだけど、実機デバッグは基本。
RaspberryPi上でコーディングしようとするとGPIOをショートさせてクラッシュしたり電源の能力不足で落ちたりなど非常に辛くて人生が終わってしまうのでMacでコードを書いてscpなりでRaspberryPiに転送して実行するのが普通だと思いますが、rsyncを使うといろいろと捗ります。

  • IPアドレスをコマンドライン引数から読み込むようにします
  • IPアドレスとか電源いれるたびに変わるので ssh option でHostKeyのチェックをスキップします
  • ラズパイが応答しなければ3秒で切断します
  • .gitとかnode_modulesとか一緒に送りたくないものは--execludeに指定します
  • リモートのディレクトリは、~/sugos-tutorial-01が指定されています

以下をupload.shとしてソースコードのあるディレクトリにおいておきます。
chmod +x upload.shを忘れずに。

#!/bin/bash
TARGET_IP_ADDR=$1
SSH_OPTIONS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ServerAliveInterval=1 -o ServerAliveCountMax=3"
rsync -av -e "ssh ${SSH_OPTIONS}" --exclude 'node_modules' ./ pi@${TARGET_IP_ADDR}:sugos-tutorial-01

使い方

ラズパイのIPアドレスを192.168.1.47とします。

./upload.sh 192.168.1.47
realglobe
「世界のすべてをWebAPI化する」ことを目指す技術ベンチャーです。
https://realglobe.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away