長い間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には、注意しなければならない制限(または同様の制限)はありますか?
ファイル名の最大長は255バイトです。 ext4のwikiページ にあります。
そして、最大4096文字のパス。 このUnix&Linux SEの質問にあります 。
ただし、ext4の最大ファイルパスを指定しない このwiki記事 が見つかりました。
これを決定する最も信頼できる方法は、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