Synology NASの暗号化フォルダの文字数制限について

PC

はじめに

こんにちは。

私は自宅で、SynologyのNASである、DS218jを運用しており、一部共有フォルダを暗号化しています。

この暗号化フォルダーには、文字数制限があります。具体的には、以下のように書かれています。

暗号化した共有フォルダ内のファイル/フォルダ名は最大 143 英数文字(ラテン系言語以外は最大 47 文字)とし、ファイルパスは最大 2,048 英数文字としてください

https://www.synology.com/ja-jp/dsm/6.2/software_spec/dsm#storage_file_access__file_station__limitation

ファイルパスが2,048 英数文字を超えることはそうないかなと思うのですが、ファイル/フォルダ名について、「ラテン系言語以外は最大 47 文字」という記述が気になります。

しかし、私が試してみたところ、47文字を超えても大丈夫な場合があることがわかり、釈然としませんでした。

結論

結論から言うと、この制限は、「UTF-8で最大143バイト」と解釈したらいいようです。拡張子もバイト数に含みます。

実際に、ファイル名が144バイトとなる、

春はあけぼの。やうやう白くなりゆく山ぎは、すこしあかりて、紫だちたる雲のほそくたなびきたる_ver1.txt

の場合は、以下のようになり、暗号化フォルダに移すことができませんでしたが、

ファイル名がちょうど143バイトとなる、

春はあけぼの。やうやう白くなりゆく山ぎは、すこしあかりて、紫だちたる雲のほそくたなびきたるver1.txt

の場合は、問題なく暗号化共有フォルダに移すことができました。(わかりにくくて恐縮です 汗)

このことから、Synology NASの暗号化フォルダに、最大限長いファイル名を使いたい場合は、ファイル名のバイト数が、UTF-8で、143バイト以下になるようにすればいいということになります。

こちらのサイト でも同様に紹介されていました。

この制限はSynologyNasのOSであるDSMによる制限のようなので、DS216j、DS218j、DS220jでも同様と思われます(推測です)

ややこしいことを言うと、この、UTF-8でというのがポイントです。さらに、Macの場合、UTF-8でも、NFC/NFD問題により、濁点、半濁点を含む文字列のバイト数が変わってしまうので、要注意です。私が試した限りでは、NFC正規化した後のバイト数が、143バイトだと問題なく暗号化共有フォルダに移せることが確認できました。

バイト数を確認するには、こちらで公開されているツールが便利です。紹介させていただきます。

文字数カウンター:https://tools.m-bsys.com/original_tooles/char_count.php

Macをお使いの方向けに、もっとややこしいことを言うと、この後紹介させていただくバイト数計算ツールは、SafariとChromeで挙動が異なるようです。(ツールの問題というよりブラウザの問題かなと思っています)

正確に確認したわけではないですが、Chromeだと、macのFinderでコピーし、貼り付けた文字列がNFDとして(おそらくそのまま)貼り付けられるのですが、Safariだと、NFCとして(おそらく自動的に正規化されて)貼り付けられるようです。そのため、バイト数がChromeとSafariを使った場合で異なります。

少なくとも暗号化共有フォルダの文字数を調べるという用途では、Safariを使った方が良さそうです。

一応、UTF-8でNFC正規化した後のバイト数を表示するPythonスクリプトも作ってみたので、Pythonが使える方は、参考にしてください。

## python3 count.py "カウントしたい文字列"
## 第一引数に"カウントしたい文字列"を取ります。

import sys
import unicodedata

args = sys.argv
input1 = args[1]
originalname=unicodedata.normalize('NFC', input1)
print(len(originalname.encode('utf-8')))
タイトルとURLをコピーしました