উবুন্টুতে কোন ফাইল পাথের সর্বাধিক দৈর্ঘ্য কত?


9

দীর্ঘ সময় ধরে উইন্ডোজ সিস্টেম ব্যবহার করার পরে, আমি জানি যে ফাইল এবং ফোল্ডারের নামগুলি দীর্ঘ হয়ে গেলে একটি নির্দিষ্ট সময়ে, একটি ত্রুটি উইন্ডো উপস্থিত হতে পারে।

যখন আমি সার্ভার থেকে একটি ফোল্ডারে (উদাহরণস্বরূপ) একটি ফোল্ডারে এসএফটিপি দিয়ে ফাইলগুলি ব্যাকআপ করার চেষ্টা করেছি তখন আমার সাথে এটি ঘটেছিল:

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

আপনি দেখতে পাচ্ছেন, আমি মাঝে মাঝে খুব নির্দিষ্ট ফোল্ডার পাথ তৈরির প্রবণতা রাখি এবং যদি কোনও ফাইলের নামটি দীর্ঘতর হয় তবে এনটিএফএস এভাবে এটি সংরক্ষণ করতে সক্ষম হতে পারে না।

আমি বর্তমানে আমার শারীরিক ব্যাকআপগুলি নিয়ে উদ্বিগ্ন, কারণ আমার ব্যাকআপ ড্রাইভের ফোল্ডার পথটি /backups/(drive name)/...সমস্ত ফাইল পাথ যুক্ত করবে।

Ext4 / উবুন্টুতে এমন কোনও সীমা (বা অনুরূপ) রয়েছে যা আমাকে সন্ধান করতে হবে?


2
সার্ভারফল্টে উত্তর দেওয়া হয়েছে: 4 কে। এটি একটি ওএস সীমা, কোনও এফএস সীমা নয়। serverfault.com/questions/9546/…
জন এন

উত্তর:


15

ফাইলের সর্বোচ্চ সর্বাধিক দৈর্ঘ্য 255 বাইট। Ext4 এর জন্য উইকি পৃষ্ঠায় পাওয়া গেছে ।

এবং সর্বাধিক 4096 টি অক্ষরের পথ। এই ইউনিক্স এবং লিনাক্স এসই প্রশ্নে পাওয়া গেছে

যদিও, আমি এই উইকি নিবন্ধটি পেয়েছি যা ext4- এ কোনও সর্বোচ্চ ফাইলের পথ নির্দিষ্ট করে না।


হাই জেটোকারসন, আপনার উত্তরের জন্য ধন্যবাদ। আমি সম্ভবত এটি সন্ধান করার চেষ্টা করতে পারি, তবে আপনি কি "255 বাইট" দৈর্ঘ্যের মানে বোঝানোর জন্য যত্ন নেবেন? আমি ধরে নিয়েছি যে সমস্ত অক্ষর অগত্যা 8 টি বিট ব্যবহার করে না, সুতরাং এটি মোট 255 টিরও বেশি হবে, আমি ধরে নিই? অথবা কম কম, বিবেচনা করে বিভিন্ন অক্ষর ব্যবহার করা যেতে পারে।
প্রোটোটাইপ

সাধারণত একটি একক চরিত্র বলতে একটি বাইট হয়। আমি নথির সন্ধান করিনি, তবে এখানে একটি সহজ পরীক্ষা: jtoscarson@Tylers-Ubuntu:~$ echo "123abc" | wc -c 7 jtoscarson@Tylers-Ubuntu:~$ echo "123abc" | wc -m 7 -m অক্ষর গণনা করছে এবং -c বাইট গণনা করছে। এটি 6 এর পরিবর্তে 7 হওয়ার কারণ লাইন চরিত্রের সমাপ্তি যা মুদ্রিত হয়নি। ফাইলের মোট অক্ষরটি 255 হতে চলেছে
jtoscarson

1
ইউটিএফ -8 লোকেল ব্যবহারের 4জন্য echo -n "💩" | wc -c। এই নামটি সহ একটি ফাইল নাম তৈরি করতে 4 ফাইল বাইট লাগবে যদিও এই ফাইলের নামটি 1 গ্রাফিয়াম দীর্ঘ। একটি "চরিত্র" পরিষ্কারভাবে সংজ্ঞায়িত ধারণা নয় (সাধারণত এর অর্থ বাইট, গ্রাফি বা ইউনিকোড কোড পয়েন্ট)।
মিক্কো রেন্টালাইনেন

এনক্রিপ্ট করা ফাইল সিস্টেমে সর্বাধিক ফাইলের নাম দৈর্ঘ্য 143 বাইট। কোনও ফাইলের নাম যথেষ্ট সংক্ষিপ্ত কিনা তা স্থির করতে আপনি পাইথনে তার বাইট দৈর্ঘ্যটি খুঁজে পেতে পারেন len(filename.encode())
মারভো

0

আমি বিশ্বাস করি এটি নির্ধারণের সবচেয়ে নির্ভরযোগ্য pathconf(".", _PC_PATH_MAX);উপায়টি পসিক্স ফাংশন সহ যা কোনও প্রদত্ত পথের সর্বাধিক পথ নির্ধারণ করে।

ফাংশনটি যেমন বোঝায়, এটি ফাইল সিস্টেমের মধ্যে পৃথক হতে পারে।

আমি কোনও কমান্ড লাইন ইউটিলিটি জানি না যা এটি প্রকাশ করে। এখানে একটি ন্যূনতম সি উদাহরণ রয়েছে: /programming/16285623/how-to-get-the-to-get-path-to-turrent-file-pwd-in-linux-from-c / 54155296 # 54155296


1
এই এছাড়াও স্বার্থে হতে পারে zsh.org/mla/workers/2000/msg03393.html
Sergiy Kolodyazhnyy

0

পথের নাম সীমা ব্যবহারের ক্ষেত্রে ফাইল সিস্টেমের উপর নির্ভর করে। jtoscarson এর উত্তর ext4 কভার করে যা উবুন্টুতে ডিফল্ট, তবে আপনি উবুন্টুতে বিভিন্ন ফাইল সিস্টেম ব্যবহার করতে পারেন। সার্ভারফল্টে ওয়ার্কক্রেডব্লু উত্তর উদ্ধৃত করার জন্য , এখানে কিছু ফাইল সিস্টেম এবং তাদের সীমাবদ্ধতা রয়েছে:

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 এবং থাকতে পারে না /ফাইল সিস্টেমের তুলনার জন্য উইকিপিডিয়া নিবন্ধটিও দেখুন ।

লিনাক্স ফাইল সিস্টেমগুলি পসিক্স সংজ্ঞা বিবেচনা করতে হবে তাও নোট করুন :

3.266 পথের নাম

একটি অক্ষর স্ট্রিং যা কোনও ফাইল সনাক্ত করতে ব্যবহৃত হয়। আইইইই স্ট্যান্ড 1003.1-2001 এর প্রসঙ্গে, একটি পথনামটি সর্বাধিক, {PATH_MAX} বাইট সমাপ্ত করে নাল বাইট সমাপ্ত করে। এটিতে beginningচ্ছিক শুরু স্ল্যাশ রয়েছে, তারপরে শূন্য বা আরও বেশি ফাইল নাম স্ল্যাশ দ্বারা পৃথক করা হয়। একটি পাথনামে oneচ্ছিকভাবে এক বা একাধিক ট্রেলিং স্ল্যাশ থাকতে পারে। একাধিক ক্রমাগত স্ল্যাশ একই স্ল্যাশের সমান হিসাবে বিবেচিত হয়।

সীমা থেকে :

{PATH_MAX}

সমাপনী নাল অক্ষর সহ কোনও পাথনামে সর্বাধিক বাইটের সংখ্যা। ন্যূনতম গ্রহণযোগ্য মান: {_POSIX_PATH_MAX}

{_POSIX_PATH_MAX}

কোনও পাথরূপে বাইটের সর্বাধিক সংখ্যা। মান: 256


0

@ সার্জি-কোলডিয়াজনি যেমন বলেছিলেন, ফাইলের সর্বাধিক ফাইলের দৈর্ঘ্য ফাইল সিস্টেমের উপর নির্ভর করে এবং বৃহত সংখ্যাগরিষ্ঠ সীমা ফাইলের দৈর্ঘ্য 255 বাইটের উপর নির্ভর করে।

তার চার্ট থেকে একটি উল্লেখযোগ্য বাদ দেওয়া হ'ল অপটিকাল মিডিয়া। ইউডিএফ এবং রক রিজ এক্সটেনশনের ফাইল-নেমগুলির জন্য একই 255-অক্ষর সীমা রয়েছে, রক রিজ এবং জোলিয়েট ব্যতীত ISO9660 এর উভয়ই কঠোর সীমাবদ্ধতা রয়েছে যা আপনি যদি youtube-dlডাউনলোডগুলি ব্যাক আপ করার মতো কিছু করছেন তবে আপনি তার বিরুদ্ধে লড়াই করতে পারেন ।

জোলিয়েট ফাইলের নামগুলি 64 ইউটিএফ -16 কোডপয়েন্ট বা সেগুলির মধ্যে 10 টির মধ্যেই সীমাবদ্ধ রয়েছে যদি আপনার ডিস্ক-মাস্টারিং প্রোগ্রামটিতে এমন কোনও উপায় থেকে অনুশীলন থেকে কোনও ক্ষতির কারণ না বলে মনে হয়।

তেমনি, রক রিজ এক্সটেনশানগুলি ছাড়াই আইএসও 96৯ Level০ লেভেল ২ এবং ৩ টি, আপনি যদি স্পেকের সাথে দ্রুত এবং আলগা খেলছেন তবে ৩১ টি অক্ষর বা ৩ either টিরই ফাইলের নাম সীমাবদ্ধ।

আইএসও 9660: 1999, যা করা হয় K3b মত genisoimage দ্বারা কিন্তু সমর্থিত frontends দ্বারা, একটি (রক রিজ ছাড়া) পারেন 207 বাইটের সীমা বা 197 বাইট (রক রিজ সঙ্গে) আছে।

(সূত্র: genisoimageম্যানপেজ)

সর্বাধিক পথের দৈর্ঘ্যের ক্ষেত্রে এটি একটি বড় ভুল ধারণা। বেশিরভাগ লিনাক্স ফাইল সিস্টেমগুলির জন্য একটিও নেই।

সেখানে নামে একটা ধ্রুবক PATH_MAX, কিন্তু এটা শুধুমাত্র নির্দিষ্ট POSIX API গুলির জন্য সর্বোচ্চ , যা আপনি করতে পারেন কাজ প্রায়

এই "পথের দৈর্ঘ্যের কোনও সীমা নেই" কনভেনশনের কেবলমাত্র ব্যতিক্রমগুলি হ'ল FAT32 এবং এক্সএফএটি (32,760 ইউনিকোড অক্ষর), এনটিএফএস এবং রেফার্স (32,767 ইউনিকোড অক্ষর), ইউডিএফ (1,023 বাইট) এবং অস্পষ্ট, তবে আমি দেখেছি এটি 180, 207, 212 বা 222 বাইট হিসাবে উল্লেখ করা হয়েছে)।

এটি ছোট্ট পাইথন প্রোগ্রামটি চালিয়ে এবং এরপরে ফলস্বরূপ ডিরেক্টরিগুলি অন্বেষণ করে সহজেই প্রদর্শিত হতে পারে।

import os
for X in range(20):
    os.mkdir('x' * 255)
    os.chdir('x' * 255)

আমার bash, যা প্রম্পটে পুরো পথটি প্রদর্শন করে এটির সাথে ঝামেলা হবে। তবে আমার zsh, যা প্রম্পটে কেবলমাত্র বর্তমান ফোল্ডারটি দেখায় তাতে কোনও অসুবিধা হবে না এবং এমন একটি pwdবিল্টিন রয়েছে যা ইস্যু ছাড়াই পুরো 5000+ -বাইট পথ প্রদর্শন করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.