LoginSignup
1
0

More than 3 years have passed since last update.

USBドライブを遠隔のWindows共有フォルダに同期するソフトを作った[rsync,CIFS,Raspberry Pi]

Posted at

はじめに

ネットにつながっていない機器上でUSBドライブに保存したデータを簡単に遠隔のサーバーにアップロードする必要があったため、作りました。

動作環境

  • ファイルを受け取る側
    • Windows 10 (ソースコードを修正すれば*nixでも使える)
    • ネットワークにつながっていること
    • 共有フォルダを作る権限
    • Softether VPNサーバー
  • ファイルを送る側
    • Raspberry Pi 3 (通常のPCでも問題ない)
      • Raspbian
      • ネットワークにつながっていること

動作概要

  • Raspberry PiにUSBドライブを挿す。すると、VPN経由で遠隔の場所にあるCIFSディレクトリに、USBドライブの中身がrsyncによって同期される。
  • 構成
    • autofsはUSBドライブをマウントする用途で用いる
      • マウント先を選ぶことができる
    • udevはUSBドライブマウント時に同期用のスクリプトを実行する用途で用いる
    • cifs-utilsは遠隔のCIFSディレクトリをマウントする用途で用いる
    • softether-vpnは遠隔のネットワークのCIFSディレクトリにアクセスする用途で用いる
    • systemdは以上の内容をサービスとして登録し、起動時に自動的に立ち上がるようにする用途で用いる

環境構築

以下の手段はRaspberry Pi上で行う。Windows上ではSoftether VPNサーバーの構築を行う。

インストール

sudo apt install git, autofs # gitとautofsをインストール
git clone https://github.com/rayanti/usb_sync.git # githubのリポジトリ(当プロジェクト)をクローン
sudo cp {auto.master,auto.misc} /etc # autofsのファイルを/etcにコピー
sudo cp 1-usb.rules /etc/udev/rules.d # udevのファイルを/etcにコピー

静的ルーティング

  • 以下のファイルをコピーし、各自の環境に合わせて設定する
sudo cp 40-route /lib/dhcpcd/dhcpcd-hooks/

Softether vpncmdインストール

vpncmdはSoftether VPNのコマンドラインツールである

tar xzvf vpnserver-5070-rtm-linux-x86.tar.gz 
cd vpnclient
make
#(1,1,1)
sudo ./vpnclient start
./vpncmd
#(2," ")
PasswordSet
RemoteDisable
NicCreate
#VPN
AccountCreate
#{account name}
AccountPasswordSet
#standard
AccountConnect
AccountStartupSet
quit

cifs-utilsの設定

共有フォルダを閲覧する権限のあるwindowsユーザーのログイン情報を入力する。これにより、Windowsの共有フォルダをLinux上でマウントすることができる。
cifs-credientialsにはパスワードを保存するため、rootユーザー以外から見えないようにする必要がある。

sudo apt install cifs-utils
sudo chown root: /home/pi/usb_sync/cifs_credentials
sudo chmod 600 /home/pi/usb_sync/cifs_credentials

vpncmdを自動起動するサービスに登録する

systemdのサービスとして登録する。

sudo cp vpnserver.service /etc/systemd/system/
sudo cp vpn_dhclient.service /etc/systemd/system/

systemdサービスを自動起動するように設定

startで起動、enableでスタートアップ時自動起動する

systemctl daemon-reload
systemctl start vpnserver
systemctl enable vpnserver
systemctl start vpn_dhclient
systemctl enable vpn_dhclient
systemctl start cifs_mount
systemctl enable cifs_mount

各自の環境に合わせて設定する項目

  • nmtuiでipアドレスの固定
  • 40-routeでルーティングの設定
  • 1-usb.rules内で用いるUSBドライブのUUIDの設定

付録

automountが行われない場合

autofsのファイルは実行可能な権限を持っていると動かないため、以下のコマンドを実行

sudo chmod -x /etc/auto*
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0