🦔

UbuntuにおけるpCloudの自動マウント

2024/06/22に公開

pCloudが提供しているLinuxコマンドラインツールpcloudccを用いて、Ubuntu Server 22.04の起動時に自動マウントする手順を記す。

ライブラリと導入手順については以下のGitHubリポジトリに存在する。

pcloudccのインストール

前提となるライブラリをインストールする。

terminal
sudo apt install -y cmake zlib1g-dev libboost-system-dev libboost-program-options-dev libpthread-stubs0-dev libfuse-dev libudev-dev fuse build-essential git

作業用ディレクトリ作成し、リポジトリをクローンする。

terminal
cd /tmp
mkdir console-client
git clone https://github.com/pcloudcom/console-client.git ./console-client/

ビルドおよびインストールをする。

terminal
cd console-client/pCloudCC/lib/pclsync/
make clean
make fs
cd ../mbedtls/
cmake .
make clean
make
cd ../..
cmake .
make
sudo make install
sudo ldconfig

インストールできたことを確認する。

terminal
pcloudcc

以下のように出力されたらOK。

pCloud console client v.2.0.1
Username option is required!!!

初期設定

pCloudのマウント先の設定

pCloudのマウント先を作成する。
ここではPCLOUD_MOUNT_DIRとし、/pcloudというディレクトリを作成するが、適宜置き換えてほしい。

terminal
PCLOUD_MOUNT_DIR=/pcloud
sudo mkdir ${PCLOUD_MOUNT_DIR}

なお、実行権限の問題も生じるので、置く場所によってはPCLOUD_MOUNT_DIRの所有権も変更しておくとよいだろう。

terminal
PCLOUD_ADMIN=user01
sudo chown ${PCLOUD_ADMIN}:${PCLOUD_ADMIN} ${PCLOUD_MOUNT_DIR}

手動でのマウント

以下のコマンドにより、PCLOUD_MOUNT_DIRに対してマウントされる。
ただし、PCLOUD_USERNAMEは、pCloudへのログインするアカウントとする。

terminal
PCLOUD_USERNAME=your@address
pcloudcc -p -u ${PCLOUD_USERNAME} -m ${PCLOUD_MOUNT_DIR}

以下の通り出力される。

pCloud console client v.2.0.1
Please, enter password

ここで、PCLOUD_USERNAMEに対応するパスワードを入力することにより、指定したPCLOUD_MOUNT_DIRに対してマウントされるようになる。
マウントされたことを確認する。

terminal
ls ${PCLOUD_MOUNT_DIR}

マウントされたことを確認したら、Ctrl+Cで終了する。

パスワードの記憶

pCloudのログインパスワードは~/.pcloud/data.dbに格納させることで、随時の入力を省略することができるようになる。
これはpcloudcc-sをつけることで、そのとき入力したパスワードを記録させることで実現される。

terminal
pcloudcc -p -s -u ${PCLOUD_USERNAME} -m ${PCLOUD_MOUNT_DIR}

いったんCtrl+Cで抜けて、以下のコマンドで再度ログインすればよい。

terminal
pcloudcc -u ${PCLOUD_USERNAME} -m ${PCLOUD_MOUNT_DIR}

手動でのアンマウント

ディレクトリの階層構成を確認の上実行すること。

terminal
pcloudcc -u ${PCLOUD_USERNAME} -k < <(printf "finalize")

サービス化の実行

サービス化を行う。
もし、pCloudのマウントがされている場合は、アンマウント等を行うこと。

以下の通り、pcloud.serviceを記述する。

terminal
sudo vi /etc/systemd/system/pcloud.service
[Unit]
Description=pCloud mount
After=network-online.target

[Service]
Type=forking
User=${PCLOUD_ADMIN}
Group=${PCLOUD_ADMIN}
WorkingDirectory=/home/${PCLOUD_ADMIN}
ExecStart=/usr/local/bin/pcloudcc -u ${PCLOUD_USERNAME} -m ${PCLOUD_MOUNT_DIR} -d
ExecStop=/usr/local/bin/pcloudcc -u ${PCLOUD_USERNAME} -k < <(printf "finalize")
Restart=always

[Install]
WantedBy=multi-user.target

サービスの開始および有効化を行う。

terminal
sudo systemctl daemon-reload
sudo systemctl start pcloud
sudo systemctl enable pcloud

参考にさせていただいたサイト

GitHubで編集を提案

Discussion