NASをLinuxからクラウドストレージのように使用する (rcloneで同期する)

※当ブログでは商品・サービスのリンク先にプロモーションを含みます。

NASのとあるフォルダを、Linuxマシンからクラウドストレージのように使えると便利なんだよなぁ、と思ったのでやってみることにした。

使用したのはrcloneだ。

経緯

UGREEN NASync DXP2800でNASを構築し、ファイルサーバーとして使っている。

このNASのとあるフォルダをクラウドストレージのようにして使っていて、デスクトップとラップトップという違う端末でも作業を継続しやすいようにしていた。

Windowsであれば、UGREEN NASアプリを使うことで、NASの特定のフォルダをクラウドストレージのように使うことができるのだけれど、最近デスクトップをLinux (CachyOS)にしたことで、このアプリが使えなくなってしまったのである。

デスクトップはLinux化したとはいえ、ラップトップとの作業の継続性は担保したいので、デスクトップでもNASをクラウドストレージのように使える環境にしてやりたい。LinuxではUGREEN NASアプリは使えないけど、どうにかできないかと考え、やってみたのであった。

なお、NASのとあるフォルダを直接Linuxからマウントしてやってもよかったんだけど、そうするとネットワークが不調なときに影響を受けるので、できれば他のやり方がいいんじゃないかと思っており、今回のやり方にしている。

rcloneをインストールして、設定する

結論としては、rcloneを使うことで実現できた。Gemini先生が大体教えてくれた。

まず、CachyOSにはrcloneがデフォルトでは入ってなかったので、インストールからはじめた。Arch Linuxでおなじみのpacmanの登場だ。

sudo pacman -S rclone

インストールができたら、rcloneの設定をする。rcloneの設定は config オプション付きで実行してやるといい。

rclone config

config オプション付きで実行してやると、次々に設定内容を聞かれる。ほとんどの設定はデフォルトでOK。

ポイントとしては、

  1. 設定を新規作成する
  2. 設定に名前をつける
  3. SMB/CIFSというプロトコルでNASに接続する
  4. ホスト名 (IPアドレス)、NASのユーザ名とパスワードを入力する

のあたりだ。

設定は文字がずらずらと続くため、ここに掲載するのが難しいため割愛しているが、上記のポイントを正しく設定すればOKだ。

rcloneでマウントする (一時マウント)

そうしてrcloneの設定を作ったら、マウントしてやる。

rclone mount 設定名:NASのマウントしたいパス ローカルのパス --vfs-cache-mode full

Gemini先生によると、–vfs-cache-mode full というオプションが重要らしい。これを設定することで、「一旦ローカルにキャッシュして読み書きする」という挙動を取るとのこと。

なお、これはターミナルからコマンドを実行してマウントしており、NASをクラウドストレージのように使いたいと思ったときに毎回このコマンドを入力することになる。

流石にそれだと面倒だから、自動でマウントしてやることにする。あくまでこのコマンドは、接続して使えるかのテストである。

rcloneをsystemdで自動マウントする

自動マウントするには、systemdを使用した。これが今のCachyOSでは最適解らしい。Geimini先生がそう言っている。

まずはsystemdの設定ファイルを作成する。systemdはシステムレベルのサービスを制御するのによく使っているものだが、ユーザレベルでも使える。

ユーザレベルでsystemdを使う場合、スタンダードなやり方では ~/.config/systemd/user/ 以下に設定ファイルを作るものらしいので、それに従って作成する。

~/.config/systemd/user/rclone-nas.service

[Unit]
Description=この設定の説明。rclone UGREEN NAS Mount とかそういうことを書いておく。
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/rclone mount 設定名:NASのマウントしたいパス %h/ローカルのパス \
    --vfs-cache-mode full \
    --vfs-cache-max-age 24h \
    --vfs-cache-max-size 10G \
    --bwlimit-file 50M
ExecStop=/usr/bin/fusermount -u %h/ローカルのパス
Restart=on-failure
 
[Install] 
WantedBy=default.target

ローカルのパスを指定する際に、%hを使っている。systemdが実行する際に、実行するユーザのホームディレクトリのフルパスに置き換えられるものだそうだ。

設定を作成したら、サービスを有効化する。

systemctl --user daemon-reload
systemctl --user enable --now rclone-nas.service

これでログイン時にrcloneが実行され、NASのマウントしたいパスがローカルのパスにマウントされるようになる。

ファイラー (CachOSならnemo)を開き、ローカルのパスを見に行ってやれば、NASにあるファイルがローカルにもあるように見えるはずだ。あとは普通にファイルを読み書きしてやれば適宜rcloneがNASと同期してファイルを最新の状態に保ってくれる。

おわりに

NASの特定のフォルダを、Linux (CashyOS)からクラウドストレージのように使えないかと模索した結果、rcloneを使うことで思っていたようなことができることがわかった。

Googleドライブなどにあるファイルと同様で、クラウドストレージにファイルがあるとか意識することなく使うことができている。

おかげで、ラップトップとうまいこと、ストレスなくファイル共有できており、ラップトップとデスクトップの間で作業の継続性を担保したいという当初の望みが実現できた。

それにしても、こういう設定においてもGemini先生に聞きながらやると早くて助かった。これまでだと、この手の設定はWebを検索しまくって、自分の環境に置き換えたらどうなるかを考えながら試していたものだが、Gemini先生が私の環境に合わせて提示してくれるので、大体そのままで設定することができた。

Linuxの環境構築といった領域でも、生成AIを使うとこんなに素早くできるんだなぁという発見にもなったのであった。

パソコン-Linux

Posted by junchan