はじめに
Robocopyの検証をするために、ラズパイでNASを構築する
Windowsマシン1台でも検証は可能であるが、より本番環境に近しい環境のほうが安心できる
また、UNCパスで指定した場合とネットワークドライブにマウントした際で挙動が違ったような気もするので
そのへんを検証するためにも、NASがあると便利だと思った次第
余談:UNCパスとは
Gigazineさんの記事が分かりやすかったので、文章を引用させていただきます
(引用元;https://gigazine.net/news/20230429-windows-file-path/)
UNCは「Universal Naming Convention」の略で、UNCパスはネットワーク上のデバイスに保存されたフォルダやファイルの位置を示すパスです。例えば、IPアドレス「192.168.1.15」に存在するデバイス内の「Media」フォルダの位置は、以下のように表記できます。
\\192.168.1.15\Media
また、以下のように自身のアドレスを指定することで、ローカルのフォルダにアクセスすることも可能です。
\\localhost\C$\Windows
\\コンピューター名\C$\Users\Windows
\\ローカルIPアドレス\C$\Users\Windows
私の環境紹介
- Windows 11 Home
- Raspberry Pi3 Modle B+
- OS: Debian 12 (Bookworm)
- USBフラッシュメモリ
Windows11マシンとラズパイは192.168.10.0/24
セグメントに属している
ラズパイにはUSBフラッシュメモリを挿しておく
ラズパイを最新の状態にする
平均して半年に1回くらいしかラズパイは触らないので
まずはapt update && apt upgrade
する
bullseyeからbookwormにアップデートされた
Wikipediaでも加筆が望まれているくらい新しいOSってこと(違う
OpenMediaValutをインストール・・・できなかった
Copilotに要約してもらったところによると、以下のようなアプリらしい
Debianベースで、SMB対応して、小規模向けとのこと。
openmediavault は、Debian Linux ベースの次世代ネットワークアタッチドストレージ(NAS)ソリューションです。SSH、(S)FTP、SMB/CIFS、RSync などのサービスを含んでおり、これらはすぐに利用できます。フレームワークのモジュラーデザインにより、プラグインを追加して機能を拡張できます。openmediavault は主に小規模オフィスや自宅オフィス向けに設計されていますが、これに限定されることはありません。深い知識を必要とせずに、誰でも簡単にインストールしてネットワークアタッチドストレージを管理できる、使いやすいアウトオブザボックスのソリューションです。 😊📦🔗
こちらの記事に従って、インストールスクリプトを実行したところ
ラズパイのライト版じゃないとダメだとと怒られた
GUIで操作できないライト版ではないと動かないらしい
ラズパイは1つしか持っておらず、GUIが無いのは心もとないので、このアプリのインストールは断念
Sambaで我慢する
Sambaは、Linux上でWindowsのネットワーク機能を実現するソフトウェアです。
Sambaをインストールする
sudo apt install samba
Windowsのエクスプローラーでラズパイにアクセスする
Windowsボタン+R で、出てきた窓に\\{ラズパイのIPアドレス}
を入力
資格情報を聞かれるので、ひとまずpi
アカウントで入る
デフォルトではこんな感じ
nobodyフォルダに入ろうとしても、再度資格情報が聞かれて、ここはpi
ユーザでも入れない
フォルダをつくる
share
とnotshare
をつくる。notshare
が見えないよね?の確認もかねて。
sudo mkdir /samba-share-dir
sudo mkdir /samba-share-dir/share
sudo mkdir /samba-share-dir/notshare
# shareだけに権限付与
sudo chmod 777 /samba-share-dir/share
Sambaコンフィグ設定
/etc/samba/smb.conf
の末尾に以下を追加
[samba-share-dir]
path = /samba-share-dir/share
browseable = yes
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
force user = pi
サービス再起動
sudo systemctl restart smbd
Windowsからアクセスする
エクスプローラーでF5を押して更新すると、新しいフォルダが見えた
コンフィグの[ ]
で囲んだ文字列が共有フォルダとして見えるらしい
単純にshare
にしてわかりやすくした
ためしにtest.txt
を作って、中に文字列を書いてみる
ラズパイ側でファイル確認
ラズパイ側でも同じ結果が見えた
cat /samba-share-dir/share/test.txt
this is test message!!
ラズパイをネットワークドライブに割り当てる
共有フォルダを右クリックして、ネットワークドライブに割り当てるだけ
ラズパイの空き容量が見えるという副次的な効果があることを発見
おわりに
ラズパイのアップデートやら、Sambaセットアップやらで記事を書き始めて4時間くらいかかったけど
本題はこれから...Robocopyの検証をせねば
追記(2024.6.2)
Robocopyを試した結果
正常時と異常時のそれぞれのログを掲載する
なお、試行回数は3回に制限している
-------------------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性の高いファイル コピー
-------------------------------------------------------------------------------
開始: 2024年6月2日 16:12:28
コピー元 : C:\batch\src\
コピー先 : \\192.168.10.81\share\
ファイル: *.*
オプション: *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /R:3 /W:3
------------------------------------------------------------------------------
1 C:\batch\src\
1 C:\batch\src\新しいフォルダー\
0 C:\batch\src\新しいフォルダー - コピー\
------------------------------------------------------------------------------
合計 コピー済み スキップ 不一致 失敗 Extras
ディレクトリ: 3 0 3 0 0 0
ファイル: 2 0 2 0 0 0
バイト: 8 0 8 0 0 0
時刻: 0:00:00 0:00:00 0:00:00 0:00:00
終了: 2024年6月2日 16:12:28
-------------------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性の高いファイル コピー
-------------------------------------------------------------------------------
開始: 2024年6月2日 16:14:18
2024/06/02 16:14:18 エラー 53 (0x00000035) コピー先のファイル システムの種類を取得しています \\192.168.10.81\share\
ネットワーク パスが見つかりません。
コピー元 : C:\batch\src\
コピー先 = \\192.168.10.81\share\
ファイル: *.*
オプション: *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /R:3 /W:3
------------------------------------------------------------------------------
2024/06/02 16:14:18 エラー 53 (0x00000035) コピー先ディレクトリにアクセスしています \\192.168.10.81\share\
ネットワーク パスが見つかりません。
3 秒間待機しています... 再試行しています...
2024/06/02 16:14:21 エラー 53 (0x00000035) コピー先ディレクトリにアクセスしています \\192.168.10.81\share\
ネットワーク パスが見つかりません。
3 秒間待機しています... 再試行しています...
2024/06/02 16:14:24 エラー 53 (0x00000035) コピー先ディレクトリにアクセスしています \\192.168.10.81\share\
ネットワーク パスが見つかりません。
3 秒間待機しています... 再試行しています...
2024/06/02 16:14:48 エラー 53 (0x00000035) コピー先ディレクトリにアクセスしています \\192.168.10.81\share\
ネットワーク パスが見つかりません。
エラー: 再試行が制限回数を超えました。
2024/06/02 16:14:48 エラー 53 (0x00000035) コピー先ディレクトリを作成しています \\192.168.10.81\share\
ネットワーク パスが見つかりません。
3 秒間待機しています... 再試行しています...
2024/06/02 16:14:51 エラー 53 (0x00000035) コピー先ディレクトリを作成しています \\192.168.10.81\share\
ネットワーク パスが見つかりません。
3 秒間待機しています... 再試行しています...
2024/06/02 16:14:54 エラー 53 (0x00000035) コピー先ディレクトリを作成しています \\192.168.10.81\share\
ネットワーク パスが見つかりません。
3 秒間待機しています... 再試行しています...
2024/06/02 16:14:57 エラー 53 (0x00000035) コピー先ディレクトリを作成しています \\192.168.10.81\share\
ネットワーク パスが見つかりません。
エラー: 再試行が制限回数を超えました。
2024/06/02 16:14:57 エラー 53 (0x00000035) コピー先ディレクトリを作成しています \\192.168.10.81\share\
ネットワーク パスが見つかりません。
追記(2024.6.8)
Robocpyバッチファイルを載せるのを忘れていた
@echo off
rem ミラーリング元
set src="C:\batch\src"
rem ミラーリング先
set dst="\\192.168.10.81\share"
net use %dst% {ここにパスワードを入力} /user:pi
rem ログファイルを作成するフォルダ
set logfolder="C:\batch\log"
set logfile=%logfolder%"\robocopy_%date:~0,4%-%date:~5,2%-%date:~8,2%.log"
robocopy.exe "%src%" "%dst%" /MIR /LOG+:"%logfile%" /COPY:DAT /R:3 /W:3
exit
参考