rsync
RaspberryPi

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

More than 1 year has 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