web-dev-qa-db-ja.com

Ubuntuのファイルパスの最大長は?

長い間Windowsシステムを使用してきましたが、特定の時点で、ファイルとフォルダー名が長くなりすぎるとエラーウィンドウが表示されることがあります。

これは、SFTPを使用してサーバーから(たとえば)フォルダーにファイルをバックアップしようとしたときに起こりました。

D:(Windows drive partition)/Temporary/Projects/2015-06/Websites/Guitar-Site/Images/Logos/Manufacturers/Instruments/Basses/(long file name).png

ご覧のとおり、非常に指定されたフォルダーパスを作成することがありますが、ファイル名が長い場合、NTFSはこの方法で保存できない場合があります。

現在、バックアップドライブのフォルダーパスがすべてのファイルパスに/backups/(drive name)/...を追加するため、物理的なバックアップについて心配しています。

Ext4/Ubuntuには、注意しなければならない制限(または同様の制限)はありますか?

8
Prototype700

ファイル名の最大長は255バイトです。 ext4のwikiページ にあります。

そして、最大4096文字のパス。 このUnix&Linux SEの質問にあります

ただし、ext4の最大ファイルパスを指定しない このwiki記事 が見つかりました。

13
jtoscarson

これを決定する最も信頼できる方法は、pathconf(".", _PC_PATH_MAX); POSIX関数を使用することであると考えています。これは、指定されたパスの最大パスを決定します。

関数が示唆するように、これはファイルシステム間で異なります。

私はそれを公開するコマンドラインユーティリティを知りません。最小限のCの例を次に示します。 https://stackoverflow.com/questions/16285623/how-to-get-the-to-get-path-to-the-current-file-pwd-in-linux -from-c/54155296#54155296

パス名の制限は、使用中のファイルシステムによって異なります。 jtoscarson's answer Ubuntuのデフォルトであるext4をカバーしていますが、Ubuntuではさまざまなファイルシステムを使用できます。 WerkkreWの答えを引用するため serverfaultで、ファイルシステムとその制限の一部を以下に示します。

BTRFS   255 bytes
exFAT   255 UTF-16 characters
ext2    255 bytes
ext3    255 bytes
ext3cow 255 bytes
ext4    255 bytes
FAT32   8.3 (255 UCS-2 code units with VFAT LFNs)
NTFS    255 characters
XFS     255 bytes

また、さまざまなファイルシステムには、ファイル名に含めることができる文字の種類に関して制限があることに注意してください。たとえば、ext4のファイル名にNULLと/を含めることはできません。 ファイルシステムの比較 については、Wikipediaの記事も参照してください。

Linuxファイルシステムでは、 POSIX定義 を考慮する必要があることにも注意してください。

3.266パス名

ファイルを識別するために使用される文字列。 IEEE Std 1003.1-2001のコンテキストでは、パス名は最大で{PATH_MAX}バイトで構成され、終端のヌルバイトも含まれます。オプションの開始スラッシュがあり、その後にスラッシュで区切られたゼロ個以上のファイル名が続きます。オプションで、パス名に1つ以上の末尾のスラッシュを含めることができます。複数の連続したスラッシュは、1つのスラッシュと同じと見なされます。

limits.h から:

{PATH_MAX}

終端のヌル文字を含む、パス名の最大バイト数。最小許容値:{_POSIX_PATH_MAX}

{_POSIX_PATH_MAX}

パス名の最大バイト数。値:256

0