Ayant utilisé les systèmes Windows pendant longtemps, je sais qu’à un moment donné, une fenêtre d’erreur peut apparaître lorsque les noms de fichiers et de dossiers deviennent trop longs.
Cela m'est arrivé lorsque j'ai essayé de sauvegarder des fichiers avec SFTP d'un serveur vers un dossier dans (par exemple):
D:(Windows drive partition)/Temporary/Projects/2015-06/Websites/Guitar-Site/Images/Logos/Manufacturers/Instruments/Basses/(long file name).png
Comme vous pouvez le constater, j'ai parfois tendance à créer des chemins de dossier très spécifiques et si un nom de fichier est trop long, NTFS risque de ne pas pouvoir l'enregistrer de cette façon.
Je suis actuellement préoccupé par mes sauvegardes physiques, car le chemin du dossier de mon lecteur de sauvegarde ajoutera /backups/(drive name)/...
à tous les chemins de fichiers.
Existe-t-il une telle limite (ou une limite similaire) dans ext4/Ubuntu que je devrais rechercher?
La longueur maximale du nom de fichier est de 255 octets. Trouvé dans le page wiki pour ext4 .
Et un chemin maximum de 4096 caractères. trouvé dans cette question Unix & Linux SE .
Bien que j'ai trouvé cet article du wiki qui ne spécifie pas un chemin de fichier max dans ext4.
Je pense que le moyen le plus fiable de déterminer cela consiste à utiliser la fonction pathconf(".", _PC_PATH_MAX);
POSIX, qui détermine le chemin maximal pour un chemin donné.
Comme le suggère la fonction, cela peut varier d’un système de fichiers à l’autre.
Je ne connais pas d'utilitaire de ligne de commande qui l'expose cependant. Voici un exemple C minimal: https://stackoverflow.com/questions/16285623/how-to-get-the-to-get-path-to-the-current-file-pwd-in-linux -de-c/54155296 # 54155296
Les limites du chemin d'accès dépendent du système de fichiers utilisé. la réponse de jtoscarson couvre ext4 qui est la valeur par défaut sous Ubuntu, mais vous pouvez utiliser divers systèmes de fichiers sur Ubuntu. Pour citer la réponse WerkkreW sur serverfault, voici quelques-uns des systèmes de fichiers et leurs limites:
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
Notez également que divers systèmes de fichiers ont des limitations quant au type de caractère pouvant être présent dans le nom de fichier. Par exemple, les noms de fichiers dans ext4
ne peuvent pas contenir NULL et /
. Voir aussi, article Wikipedia pour comparaisons de systèmes de fichiers .
Notez également que les systèmes de fichiers Linux doivent prendre en compte définitions POSIX :
3.266 Chemin
Une chaîne de caractères utilisée pour identifier un fichier. Dans le contexte de la norme IEEE 1003.1-2001, un chemin est composé au maximum de {PATH_MAX} octets, y compris l'octet nul final. Il comporte une barre oblique de début facultative, suivie de zéro ou de plusieurs noms de fichiers séparés par des barres obliques. Un chemin peut éventuellement contenir une ou plusieurs barres obliques. Plusieurs barres obliques successives sont considérées comme identiques à une barre oblique.
De limits.h :
{PATH_MAX}
Nombre maximal d'octets dans un chemin d'accès, y compris le caractère nul final. Valeur minimale acceptable: {_POSIX_PATH_MAX}
{_POSIX_PATH_MAX}
Nombre maximum d'octets dans un chemin. Valeur: 256