pcloudccによるpCloudの自動マウント

Created , Modified .

概要

オンラインストレージサービスpCloudを同社が提供しているLinuxコマンドラインツールpcloudccを用いて, Linux(Ubuntu 20.04)起動時に自動マウントした際の備忘録を残す. 端的に言えば, systemdのUnitファイルにpcludccのデーモン起動を登録しておくだけである. 暗号化オプションによるディレクトリも取り扱うことができる.[*1]

systemdのUnitファイルの中身をCode 1. pcloud.serviceに提示する. コード中のuserはUbuntuでのユーザー名, your@addressはpCloudでのアカウント(のメールアドレス)である.

code 1. pcloud.service

          [Unit]
          Description=pCloud daemon
          After=network-online.target

          [Service]
          Type=forking
          User=user
          Group=user
          WorkingDirectory=/home/user
          ExecStart=/usr/local/bin/pcloudcc -u your@address -m /home/user/pcloud -d
          ExecStop=/usr/local/bin/pcloudcc -u your@address -k < <(printf "finalize")
          Restart=always

          [Install]
          WantedBy=multi-user.target
        

pCloudについて

pCloudDropboxと同じようなものである[*2]. しかし, 1. 買い切りサービス, 2. 暗号化スタンス, 3. (Linuxで)ディレクトリをローカル配置しない手段がある, という点がユニークだと思っている.

私が今まで知る限り, オンラインなWebサービスで買い切り(一回の支払い)で以後サービスがずっと利用可能である形態はpCloud以外で見たことがない. 1年はザラだし, 2~3年もみないわけではない, しかしてドメインネームですら10年更新だったのに... 私は暗号化オプションも含めて買い切りで利用している.

pCloudのセキュリティには, まぁ通常のよくある一般的な保全管理のものもあるが, 暗号化オプションがある. 見た目ただのパスワードロックなディレクトリだが, (少なくとも公的には)そのパスワードがクラウド上のpCloud側で管理されていない. つまり, 暗号化された領域をサービス提供側も展開することができない. 金庫の土地貸すから鍵は自分でどうにかしろと言う感じである. 暗号化のパスワードをユーザーが紛失すれば丸ごと消すしかなくなる.

DropboxやGoogle Driveと同じようにpCloudも自分のPCのファイルシステム上にmountできる. そして, このときにローカルコピーをしない手段がとれる. つまり, 既存のHDD/SSDなどのドライブ容量をほとんど圧迫しない. ディレクトリやファイルアクセスは特に意識せずにクラウドへ飛ぶ. ネットワーク接続がないとアクセスできないとも言える.

pCloud Lifetime

500GBや月払いのプランもある.

pCloud Crypto

pcloudcc

pcloudccはpCloudのストレージのクライアント用コマンドラインツールである. 3.の手順で/usr/local/bin/にpcloudccがインストールされる. 4.の手順は動作確認を兼ねる.

1. 前提ライブラリとアプリのインストール

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

2. 作業用ディレクトリ作成とリポジトリダウンロード

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

3. ビルドとインストール

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

4. 手動でのマウントとパスワード保存

一時中断から先はバックグラウンド実行への切り替えである.

        mkdir /home/user/pcloud
        pcloudcc -p -s -u your@address -m /home/user/pcloud
        pCloud console client v.2.0.1
        Please, enter password
        <password>
        # Ctrl+zで一時中断
        jobs
        # pcloudccのjob番号確認後, 次のbgのxをそのjob番号にする.
        bg %x
      

パスワードを保存した後の再マウントならば&を後端につけて, 一気にバックグラウンド実行させてもよい.

        pcloudcc -u your@address -m /home/user/pcloud &
      

5. 手動でのアンマウント

ディレクトリの階層構成とかもろもろ確認しておくこと.

        pcloudcc -u your@address -k < <(printf "finalize")
      

横着せずにプロンプトをださせてからやってもよい.

        pcloudcc -u your@address -k
        pCloud console client v.2.0.1
        Supported commands are:
        startcrypto <crypto pass>, stopcrypto, finalize, q, quit
        > finalize
      

自動マウント

ファイルアクセスの手間は小さいほうがやる気の維持がしやすいから, pCloudを自動マウントできるようにする. 以下はそのステップである.

  1. systemdのUnitファイル(pcloud.service)を書く
  2. /etc/systemd/system/pcloud.serviceとしてアクセスできるようにする[*3]
  3. systemctl daemon-reloadで再読込
  4. systemctl start pcloudでマウントをsystemd越しに実行
  5. 不備なければsystemctl stop pcloudで終了
  6. systemctl enable pcloudで自動起動するサービスとして登録

startしたときでも, 自動でも, pcloudccでマウント中にpcloudcc -u your@address -kでプロンプトが出せる. このプロンプトから暗号化ディレクトリの復号(というよりちゃんとしたアクセス)ができる. pcloudcc -u your@address -k < <(printf "startcrypto <crypto pass>")でワンライナーできるが, これをやるとコマンドラインのhistoryとsystemdのjournalctlに履歴が残るのでお勧めしない. プロンプトを出す手段でも[*1]になってしまうけれど.

systemd補足

systemdはinitプロセス, つまり起動時の自動処理の1つである. 私がこれの他に起動時の自動処理として知っているのはinit.dとcrontabの@reboot指定くらいである. init.dの方がよりその存在の意味が近しい. というより, ほぼinit.dの後継がsystemdにあたるようだ.

systemdのサービス登録は設定ファイルの配置として行う. init.dではshell scriptの設置だった. 正直, shell scriptにも慣れている身としてはどっちをどっちにも変換できるから, まぁ新しいしsystemd使うかという感慨しかない. 古いほうがより広範に使えると言っても, systemdももう大分浸透していると言って差し支えないだろう.

systemctlのコマンドでsystemdの各操作ができる. 詳細はそれぞれで検索したほうが確実だ. しかし, 特定サービスへの利用は頻繁に使うイメージはない. せいぜいログの簡易確認とsystemctl suspend(スリープ)とsudo systemctl poweroff(シャットダウン)くらいだろうか.

多分, 一度登録して安定稼働に入るとそれを設定したことを忘れる. Linux(Ubuntu)使っててそんな間抜けをしでかし, SSDすっ飛ばしてまた調べるようなことが無いように今回は残した[*4].

参考


*1 :: 運用でまぁカバーできるとはいえ, パスワードが画面上に残りうるのはセキュリティのインパクトを半減させてしまうように思う.

*2 :: Dropboxとは何であるかについては検索したほうが早い.

*3 :: 単に"保存する"と記さないのは, 私はこのときln -sでリンクファイルを作ったからである. 実体のファイルは他のこういった自作の設定ファイル用ディレクトリに設置している.

*4 :: バックアップはしてるときウザいのに, してないとシンドい. 一応, システム系と一般利用系はドライブ分けてるし, なんやかんやでオンラインなデータ空間にそれなりに分散してるから実ダメージ小さいけど, やる気はすごく削がれる.