クラウドストレージの暗号化に以前紹介したCryptoMatorをGoogleDriveで使用しているのですが、空のフォルダを削除できないというバグに遭遇したので、その内容と対処方法についてまとめておきます。

以前のCryptoMator紹介についてはこちらの記事を参照してください。

発生した問題

GoogleDrive(バックアップと同期)で使用しているCryptoMator(for windows 1.3.3)の暗号化ドライブで問題は発生しました。

あるフォルダにあるファイルをフォルダごと削除しようとした際に、その中のファイルは削除されるのですが格納しているフォルダ自身は削除されないというものでした。

さらに空になったフォルダを再度削除しても削除が反映されませんでした。

4/8 追記

Cryptomatorの最新バージョン1.3.4では、このバグは既に修正済みです。

以下の記事を読む方は、あくまでバージョン1.3.3で発生した内容ということをご承知の上で読み進めてください。

原因調査

CryptoMatorかGoogleDriveのどちらかのバグかと思われるので軽く調査したところ、GithubのIssueで1か月ほど前にバグ報告されていました。

どうやらGoogleDriveのアプリ側に帰属する問題のようで、Dropboxなど他のクラウドストレージでは生じない問題に見えます。

次期バージョン(1.4.0)で修正される模様です。

特に急ぎでないのならアップデート待ちでいいと思いますが、現バージョンで対処するには少し面倒な手順を踏む必要がありそうです。

対処方法

現バージョン(1.3.3)でこの問題で対処する方法をまとめます。

CryptoMatorのログファイルをuser/xxx/AppData/Roaming/Cryptomator/cryptomator.log(Windows10の場合) より確認して、次のような記述を探します。

Caused by: java.nio.file.FileSystemException: /parent_dir/dir: failed to delete one or more files; see suppressed exceptions for details
    at com.google.common.io.MoreFiles.throwDeleteFailed(MoreFiles.java:836)
    at com.google.common.io.MoreFiles.deleteRecursively(MoreFiles.java:582)
    at org.cryptomator.frontend.webdav.servlet.DavFolder.removeMemberInternal(DavFolder.java:134)
    ... 53 common frames omitted
    Suppressed: java.nio.file.AccessDeniedException: D:\Path\to\GoogleDrive\x\xx\xxxxxxxxxxxxxxxx

ここで削除したいフォルダに対応する難読化ファイル・ディレクトリをログより確認します。

その後、GoogleDrive側で手動削除してやるとCryptoMator内でも削除されます。

このとき、ディレクトリ構造に注意する必要があるので注意しましょう。

CryptoMatorでは以下のディレクトリ構造は次のように変換される模様です。

# original
- parent_dir
     |_ dir1
     |_ dir2

# cryptomator
- x
     |_ AA     # parent_dirに対応
     |_ BB     # dir1に対応
     |_ CC     # dir2に対応

この時、削除したいディレクトリすべてに対応する難読化ディレクトリAA,BB,CCを事前に把握しておかないと削除に支障が出る可能性があります。

BB,CCを削除してからAAを削除しておかないと正常に削除できない可能性があります。

アップデート時期

上記のように手動対応するのも結構な手間なのでアプデ待ちか、GoogleDrive以外のクラウドストレージに一時乗り換えでよさそうに思えます。

公式ブログを見ると、2018年のロードマップで1.4と1.5系が順次リリースされるみたいなので、2018年前期には修正されるのでしょうか。

まとめ

  • CryptoMator+GoogleDriveで空のフォルダを正常に削除できないバグがある
  • 次期バージョン(1.4.0)で修正予定
  • 現バージョンで対応したいなら次の2択
    • 対応ファイルを手動削除
    • GoogleDrive以外のクラウドストレージに乗り換え