◇サーバ置き換え、フォルダ同期など
メモですm(_ _)m
DLNAサーバデータ置き換え、フォルダ同期、サーバ置き換え、
前の記事◆BEATLES全曲playlistとChatGPT のように音楽情報のplaylistに追加がありました。
これを現在LAN内で運用している複数の音楽サーバに反映させようとしました。
(複数の音楽サーバを動かしているの大きな目的は複数のパソコンのヘルスチェックのようなものです)
rasPi3台の内1台を、今回、Linuxとしてではなく音楽サーバ専用にしてみようと考えました。
(最近rasPiでの仕事が入っていないため)
rasPiを音楽サーバ専用OSに(断念)
rasPiには通常のLinuxOSの他にMedia player OSなども用意されています。
Media player OSをインストールすると、通常の汎用Linuxではなくメディア再生用のマシンになります。
残念ながら用意されているMedia player OSはいずれも役立たずでした。
OS用のSDカードにイメージを設定するRaspberryPi imager v1.8.5で選択できるOSを示します。
- Raspberry Pi OS(64-bit):2024-03-15
- Raspberry Pi OS(32-bit):2024-03-15
- Raspberry Pi OS(Legacy,32-bit):2024--3-13
- Raspberry Pi OS(other)
- Raspberry Pi OS Lite(64-bit)
- Raspberry Pi OS Full(64-bit)
- Raspberry Pi OS Lite(32-bit)
- ・・・
- Other general-purpos OS
- Ubuntu
- Ubuntu Deskotp 24.04 LTS(64-bit)
- Ununtu Server 24.04 LTS(643-bit)
- Ununtu Descktop 23.10 (64-bit)
- ・・・
- Apertis
- Apertis
- Apertis(development relase)
- Apertis(daily build)
- RIS OS Pi
- RISC OS(5.30)
- Ubuntu
- Media player OS
- LibreELEC
- LibreELEC(RPi5)
- LibreELEC(RPi4)
- LbreELEC(RPi2/RPi3)
- OSMC
- OSMC(Pi2/3)
- OMSC(Pi4/Pi 400)
- Volumio
- Volumio
- moOde audio player
- moOde audio player 8.3.9(64-bit Bullseye)
- moOde audio player 8.3.9(32-bit Bullseye)
- LibreELEC
- Emulation and game OS
- RettoPie
- Recallbox
- Other specific-purpose OS
- 3D printing
- PrintWatch OS
- OctoKlipperPi
- Manisail OS
- SimplyPrint - 3D print any where,smarter
- Home assitants and home sutomatioon
・・・・ - Kali Linux
・・・・ - FuuPageOS
・・・・
- 3D printing
- Freemium and paid-fir OS
- Mis utilitu images
・・・・
しかたなく、通常OS+minimServer
通常のOSでDLNAサーバを起動することにしました。
miniDLNAの導入を考えましたが、ソースコード修正が必須なのでまずは簡単に動くminimServerをインストールしました。
次の手順を踏みました
Use OS customizetion? 設定を編集する ホスト名 rasPi03 # 効果なし ユーザ名 パスワード タイムゾーン Asia/Tokyo キーボードレイアウト jp 起動 ターミナル $ sudo raspi-config Hostnaem -> rasPi03 Interface Options SSH (リブート) (TeraTerm) ; 自動マウントされている場合アンマウント $ ls /media/(ユーザ名)/foobar # /media/pi/foobarなど $ sudo umount /media/(ユーザ名)/foobar ; マウントポイント作成 $ sudo mkdir /media/foobar (foobarという名前は当初foobar2000用のsdだったからです。適当に付けてください) ; マウント $ sudo mount -t exfat /dev/sda1 /media/foobar FUSE exfat 1.3.0 $ cd /media/foobar $ ls ./ LEARNING/ foobar2000.bat* startFoobar.sh* ../ MUSIC/ foobar2000.command* DevIcon.fil* System Volume Information/ foobar2000_bin/ DevLogo.fil* default-capability.xml* killFoobar.sh* アクセスできていることが確認できた 次の様にして自動マウント化します。 ; 自動マウント化 blkidでUUIDを取得しfstabで設定 $ sudo blkid /dev/sda1 /dev/sda1: LABEL="foobar" UUID="6331-6632" TYPE="exfat" $ cd /etc $ sudo cp fstab fstab.sav $ sudo vi fstab --- 次の行追加 UUIDはblkidで取得した値 UUID="6331-6632" /media/foobar exfat nofail 0 0 $ sudo reboot ---- 入りなおして $ cd /media/foobar $ ls マウントされていることを確認 JAVAインストール $ sudo apt install default-jdk minimインストール $ cd /usr/src $ sudo mkdir minimServer /usr/src/minimServerにMinimServer-0.8.5.2-linux-armhf.tar.gzを置く $ cd /usr/src/minimServer $ sudo tar xzvf MinimServer-0.8.5.2-linux-armhf.tar.gz minim設定 $ cd /usr/src/minimServer/minimserver/bin $ sudo ./setup disable_desktop MinimServer desktop integration is not available $ sudo ./setup enable_autostart $ sudo ./startc ; コンテンツフォルダを指定 #が出るまでかなり時間がかかります #/media/foobar/MUSIC >rescan Accept these license conditions for MinimServer[rasPiMusic] (y/n)? #y restarting MinimServer[rasPiMusic] starting MinimServer[rasPiMusic] ・・クライアントで確認 表示法の設定 >prop displayName=minim [rasPi03] >prop alphaGroup=Composer=25,All Artists=25,Artist=25 >prop indexTags=Artist:アーティスト,All Artists:演奏,Composer:作曲家,Genre,#AudioData >props alphaGroup=Composer=25,All Artists=25,Artist=25 .autoUpdate=true contentDir=/media/foobar/MUSIC displayName=minim [rasPiMusic] http.port=9790 indexTags=Artist:アーティスト,All Artists:演奏,Composer:作曲家,Genre,#AudioData .logFile=minimserver.log .logLevel=info mergeFolderAlbums=false ohnet.debug=Default ohnet.port=9791 showExtras=true startupScan=true tagCustom=AlbumArtist.displayRole={artist}, Composer.displayRole={artist} .updateReminder=1 しばらく待つ MinimServer[rasPi03] is running ・・・この段階で音楽クライアントからアクセスの確認を行います・・・ この段階ではdisplayName=minim [rasPiMusic]は反映されない。 アクセスし動作確認(特に今回はplaylistに「ビートルズ全曲」があるか > exit これで一旦サービスは止まってしまう サービス定義/起動 ;minim.serviceファイルを作成します。 ;起動するのはstartdではなくstartcであることに注意 $ sudo vi /etc/systemd/system/minim.service ------------------------ [Unit] Description = minimServer [Service] StartLimitBurst=0 WorkingDirectory=/usr/src/minimServer/minimserver/bin/ ExecStart = /usr/src/minimServer/minimserver/bin/startc Restart = always Type = simple [Install] WantedBy = multi-user.target ------------------------- $ sudo systemctl start minim $ sudo systemctl status minim ・・・active (ruuning)確認 ・・・音楽クライアントで音楽再生を確認 $ sudo systemctl enable minim $ sudo reboot ・・・ リブート後音楽クライアントから音楽再生を行います minimはなぜか1LAN中に5個以上立てられないようなので、動作確認のみ行い。
フォルダー同期プログラムをCharGPTで(断念)
今回は楽曲保持フォルダーの内1個のm3u8ファイルが追加になりました。
このフォルダ内容で各音楽サーバPCに置くSDを置き換えることになります。
差分転送式のフォルダ同期プログラムをchatGPTで作成することにトライしました。
・・・が
差分転送の指示に対して、chatGPTが作り出したプログラムはフォルダに差分があるとフォルダ全体をコピーするものでした。
その後、いろいろ指示たのですが、転送先にフォルダが無いと転送できずにエラーになる等々、全く使い物になる気配がありません。
差分転送によるフォルダ同期なんてごく普通の命題だと思うのですけどね。
断念し、昔から使っている ◆差分ファイル転送式フォルダ同期ツール にある"hiFolderSync"を用いました。
その後2度トライし、次の要求で一応動きそうなものができました。
最初の解答ではfilecmp.dircmpを使っていて、この扱いが変でした。
実際の転送前に情報をまとめて表示する指示がミソだったようです。
・・・と思ったのですが、途中でエラーになります。いいところまで来てるとはおもうのですが、
2つのフォルダをファイル差分を転送することにより同期させるプログラムをPyhtonで作成してください。 ・全変数に型ヒントを付けてください ・プログラム記述のインデントは3にしてください ・__main__から作成してください ・プログラムの起動引数は「-src 転送元フォルダ」「-dist 転送先フォルダ」 「-keep」「-timestamp」「-verbose」 ・引数チェックにはargparse.ArgumentParser使用 ・-verbose指定がある場合、ライブラリの関数を呼び出す前にprint文をいれる ・転送元と転送先に同じ名称のファイルがある場合 - サイズが異なる場合転送の必要があるとする - サイズ同じ場合タイムスタンプが転送先が古ければ転送の必要があるとする ただし、-timestamp指定がある場合先頭100バイト中間100バイト、最終100バイト を比較し、同じならタイムスタンプの置き換えのみ必要とする ・転送元になく転送先にあるファイルは削除 ・フォルダが転送元にあって転送先に無い場合はフォルダを作成 ・転送元になく転送先にあるフォルダは削除 ・$RECYCLE.BINファイルは無視 ・実際の転送前に次の情報を表示し、転送するかどうかを標準入出力で確認 - 転送の必要のないファイル数とバイト数 - タイムスタンプを変更するだけのファイル数とバイト数 - 転送するファイル数とバイト数 - 削除するファイル数とバイト数 - 生成するフォルダ数 - 削除するフォルダ数 ・転送しないとユーザが答えた場合ただちに終了 ・転送時は各ファイルのcopy開始時に名称とサイズをprintする ・最後に全体の所要時間を表示 ーーーーーーーーー システムフォルダをスキップする:$RECYCLE.BINフォルダなどのシステムフォルダを処理する部分をスキップするように変更してください。 オプションは-distを-dstに変更してください。 ーーーーーーーーーー ChatGPT:以下の手順に従ってください: コマンドプロンプトまたはパワーシェルを管理者権限で開きます。 管理者権限でスクリプトを実行します。 ーーーーーーーーーー それは望ましくない解答です。 PermissionError: [Errno 13] Permission denied: 'G:/$RECYCLE.BIN' を無視するようにしてください ----------------- インデントが4になっています。インデントは3です。今後ずっとインデント3を守ってください ---------------- $RECYCLE.BINのエラーで止まります。この例外をキャッチし要約のみprintし、処理を続行するようにしてください。
作成されたコードは次のものです。
hiFolderSync使用例(メモ)
今回はビートルズのplaylist作成後、6曲の追加がありました。
chatGPT製は使わずhiFolderSyncを動かした結果を載せます。
set MAIN=hiFolderSync set JAVA=java.exe "%JAVA%" -jar %MAIN%.jar -src G:/ -dst J:/ -out kekka.txt -timestamp -continue-on-error -has MUSIC pause
G:\hiFolderSync>set MAIN=hiFolderSync G:\hiFolderSync>set JAVA=java.exe G:\hiFolderSync>"java.exe" -jar hiFolderSync.jar -src G:/ -dst J:/ -out kekka.txt -continue-on-error -has MUSIC START:2024/05/08 19:16:00 CHECK START:2024/05/08 19:16:00 src=G:/ dst=J:/ ERROR:no file or directory on G:\$RECYCLE.BIN\S-1-5-21-2759837527-838536911-2936844700-1004 ~省略~ --- CHECK COSTS 0:12.898 --------------- 保持ファイル 18839個217.9G bytes (217,851,648,371) (none) 6個 89 bytes (89) .SRG 1個 510 bytes (510) ._Q_ 1個 1.8K bytes (1,848) .bat 3個 2.4K bytes (2,352) .cfg 13個 6.9K bytes (6,866) .cnt 1個 367 bytes (367) .command 1個 123 bytes (123) .css 1個 25.4K bytes (25,416) .dat 1個 2.0K bytes (1,998) .dll 81個 22.2M bytes (22,191,984) .dmp 10個 876.0K bytes (875,955) .exe 8個 4.4M bytes (4,390,367) .fil 2個 76.8K bytes (76,844) .flac 843個 112.3G bytes (112,297,186,196) .fpl 35個 9.4M bytes (9,402,732) .fth 31個 8.7K bytes (8,663) .gz 2個 5.0M bytes (5,037,271) .hlp 2個 58.5K bytes (58,497) .html 3個 39.7K bytes (39,712) .inf 2個 14.3K bytes (14,290) .ini 3個 519 bytes (519) .jar 3個 971.5K bytes (971,470) .java 1個 83.2K bytes (83,166) .jpg 2586個 70.9M bytes (70,862,587) .lst 1個 1.8K bytes (1,824) .m3u8 20個 547.4K bytes (547,370) .m4a 15146個 105.4G bytes (105,362,972,354) .manifest 1個 2.5K bytes (2,514) .mp3 3個 20.5M bytes (20,517,946) .sh 3個 296 bytes (296) .stf 1個 18.4K bytes (18,390) .tdf 1個 84 bytes (84) .txt 14個 115.9K bytes (115,902) .xml 4個 29.0M bytes (29,041,143) .zip 5個 27.2M bytes (27,190,726) 削除フォルダ 0個 削除ファイル 12個 (none) 1個 76 bytes (76) .bat 2個 3.1K bytes (3,079) .dat 1個 12 bytes (12) .fpl 4個 255.4K bytes (255,428) .jar 2個 583.0K bytes (582,988) .java 1個 32.7K bytes (32,685) .py 1個 2.9K bytes (2,890) 生成フォルダ 8個 生成ファイル 115個 365.8M bytes (365,845,849) (none) 1個 0 bytes (0) .X 4個 617.9K bytes (617,876) .bat 1個 903 bytes (903) .dmg 1個 2.3M bytes (2,272,009) .dmp 42個 5.4M bytes (5,394,739) .flac 6個 355.5M bytes (355,487,507) .fpl 9個 897.1K bytes (897,092) .ini 1個 129 bytes (129) .m3u8 4個 39.5K bytes (39,471) .py 1個 3.1K bytes (3,096) .sav 1個 598.9K bytes (598,907) .txt 44個 534.1K bytes (534,120) 置換ファイル 21個 8.0M bytes (8,045,413) (none) 9個 7.4M bytes (7,376,033) .bat 1個 150 bytes (150) .cfg 2個 13.2K bytes (13,247) .dat 1個 2.1K bytes (2,071) .dmp 2個 420.3K bytes (420,291) .fth 1個 1.5K bytes (1,496) .jar 1個 598.9K bytes (598,907) .m3u8 1個 19.0K bytes (18,982) .txt 3個 30.4K bytes (30,446) タイムスタンプ変更ファイル 0個 全転送ファイル 136個 373.9M bytes (373,891,262) --------------- 置き換えを実行しますか ? y/n MOVE START:2024/05/08 20:24:31 ~省略~ 楽曲とは無関係 *********** 0:00.016 90/136 0A1DF599F4B9078C4D0FFA6A82CDE507.fpl 117.2K bytes (117,192) *********** 0:00.046 91/136 0E7E2B389284667FB556C3CA253B868F.fpl 387.7K bytes (387,679) ~省略~ fplはfoobar2000のplaylist *********** 0:00.565 110/136 ====省略====.flac 98.3M bytes (98,318,784) *********** 0:21.827 111/136 ====省略====.flac 108.4M bytes (108,411,833) *********** 0:24.244 112/136 ====省略====.flac 37.2M bytes (37,191,793) *********** 0:08.644 113/136 ====省略====.flac 34.2M bytes (34,227,049) *********** 0:07.980 114/136 ====省略====.flac 35.1M bytes (35,135,691) *********** 0:07.913 115/136 ====省略====.flac 42.2M bytes (42,202,357) *********** 0:09.650 ~省略~ 136/136 ビートルズ全曲.m3u8 18.6K bytes (18,551) *********** 0:00.094
発生したいくつかの問題点
最近使っていない複数のPCの動作確認も今回の作業の目的です。
幾つか問題点が生じました。
- macPro:sdカードが認識されない
Finderで[移動]->Volumes
Unknownとなっているのをfoobarに変更 - rasPiでexfatが認識できない
理由は不明だが、15G-sd時代の古いOSだったので新しいOSに置き換えた。
15Gでは無理がありそうだったので64G-sdにした。 - Javaが動かなくなった
sudo apt install default-jdkとした - centOSマシンでUSBに挿したsdが認識できなくなった。
USB-sdアダプタを置き換えた。 - note-PC(ubuntu)が起動しない
ときどき健康チェックは行っておくべきですね。
くつろぎとは
こうしてビートルズ三昧の日々を過ごしました。
作業も落ち着いたので、久しぶりにBach/Beethoven/Mozartを聞きました。
なんなんでしょうね。このくつろげる感じ。旅行から帰ってきて、部屋でホッとする感覚。
ビートルズは好きだし、ずっと聞き続けても疲れた感覚はなかったのですが。
2024年5月 4日 (土) パソコン・インターネット | 固定リンク
Tweet