হালনাগাদ
এটির সাথে আরও কিছুটা গোলমাল করার পরে এবং কোডটির জন্য chattrএবং অন্যান্যটি দেখার পরে e2fsprogs, এটি স্পষ্ট হয় যে নির্ধারিত বৈশিষ্ট্যগুলি chattrএবং সেটগুলি libattr(যেমন কমান্ড সহ setfattr) দ্বারা নির্ধারিত বৈশিষ্ট্যগুলি খুব আলাদা। ফাইল সিস্টেম ফ্ল্যাগ chattrসেট করে extযা কেবল কোনও নামযুক্ত বৈশিষ্ট্য বা নেমস্পেসে ম্যাপ করে না। কোনটি তাদের কোনো কলের মাধ্যমে দেখা libattr'র listxattr। তাদের সম্ভবত নীচের অনুমান হিসাবে নেমস্পেসে নামযুক্ত বৈশিষ্ট্যগুলির মানচিত্র করা উচিতsystem , তবে এখনও এটি সম্পূর্ণরূপে বাস্তবায়নযোগ্য নয়। এছাড়াও system.posix_acl_accessনীচের এই বৈশিষ্ট্যগুলির মধ্যে একটিতে ম্যাপিংয়ের জন্য আমি যে বৈশিষ্ট্যটি ভুল করেছিলাম তা extফাইল সিস্টেমের পতাকাগুলির সাথে কোনও সম্পর্কযুক্ত নয় এবং এটি অ্যাক্সেস নিয়ন্ত্রণ তালিকাগুলির সাথে করণীয়। সম্পর্কিতstraceকোনও ফাইলের জন্য বার্তা উপস্থিত হয় এবং কেবল যখন cp --preserve=xattrব্যবহৃত হয় তখন অদৃশ্য হয়ে যায় ।
দেখে মনে হয় যে নির্ধারিত বৈশিষ্ট্যগুলি ফাইল সিস্টেমের chattrজন্য নির্দিষ্ট এবং extএটিগুলিকে প্রভাবিত করার একমাত্র উপায় হল e2fsprogsসরঞ্জামগুলির মাধ্যমে । আসলে manপৃষ্ঠাটি তাদের জন্য 'বর্ধিত বৈশিষ্ট্য' শব্দটি ব্যবহার করে না, বরং 'ফাইল বৈশিষ্ট্য' ব্যবহার করে। 'রিয়েল' বর্ধিত বৈশিষ্ট্য হ'ল নাম / মান জোড়া যা পরিবর্তিত হতে পারে libattrএবং একাধিক ফাইল সিস্টেমে প্রয়োগ করা হয়। এগুলো কি cpএবং rsyncচেহারার জন্য এবং কপি করা ফাইল উপর স্থানান্তর যখন ডান অপশন দেওয়া হয়। তবে এটি মনে হয় যে systemনামের স্থানের chattrবৈশিষ্ট্যগুলি এবং অন্যান্য ফাইল সিস্টেমে সমতুল্য বৈশিষ্ট্যগুলির মানচিত্রের জন্য নেমস্পেস বিদ্যমান exists তবে আপাতত এটি কাজ করে না।
সেখানে কিছু ভাল তথ্য আছে বলে আমি আসল উত্তরটি অক্ষত রেখেছি, যদিও এটি পয়েন্টে বেশ ভুল হয়ে যায়।
আপডেট 2
আমার এখন আগে এই ফিরে আসা উচিত ছিল, কিন্তু এই উত্তর হিসাবে , chattrকেবল extফাইল সিস্টেমের চেয়ে বেশি কাজ করে । উইকিপিডিয়া অনুসারে , এটি chflagsবিএসডি ভিত্তিক সিস্টেমের কমান্ডের সমতুল্য ।
আমি কয়েকটি ফাইল সিস্টেমে এই বৈশিষ্ট্যগুলির সেটিং এবং পঠন পরীক্ষা করার জন্য একটি স্ক্রিপ্ট লিখেছি এবং নিম্নলিখিত ফলাফল পেয়েছি:
ext4:
suS-iadAcj-t-e-- mnt/test_file
suSDiadAcj-tTe-- mnt/test_dir
reiserfs:
lsattr: Inappropriate ioctl for device While reading flags on mnt/test_file
lsattr: Inappropriate ioctl for device While reading flags on mnt/test_dir
xfs:
--S-iadA-------- mnt/test_file
--S-iadA-------- mnt/test_dir
btrfs:
--S-iadAc------C mnt/test_file
--SDiadAc------C mnt/test_dir
দ্রষ্টব্য যে reiserfsউইকিপিডিয়ায় কিছু কার্যকারিতা হিসাবে তালিকাবদ্ধ থাকা সত্ত্বেও ফাইলের পতাকা পড়ার / সেট করার সমস্ত প্রচেষ্টা উপরের ত্রুটিটি দিয়েছে gave আমি পরীক্ষা করিনি reiser4। এছাড়াও cপতাকাটি ext4লাগাতে পারলে সম্মান হয় না। এই ফ্ল্যাগগুলি প্রভাবিত করে এমন টিউনিং / মাউন্ট বিকল্পগুলিও থাকতে পারে তবে আমি কোনও খুঁজে পেলাম না।
তবে এটি মনে হয় যে বর্তমানে chattrএই বৈশিষ্ট্যগুলিকে সংশোধন করতে সক্ষম লিনাক্সের একমাত্র ইউটিলিটি এবং তাই কোনও অনুলিপি ইউটিলিটি সেগুলি সংরক্ষণে সক্ষম নয়।
আসল উত্তর
কারণ rsyncমনে হচ্ছে যে এমনকি চেষ্টা করে না। থেকে -Xবিভাগে rsyncডকুমেন্টেশন:
For systems that support extended-attribute namespaces, a copy being done by a
super-user copies all namespaces except system.*. A normal user only copies
the user.* namespace.
এটা তোলে অ্যাট্রিবিউট দ্বারা ব্যবহৃত অক্ষর মানচিত্র করা কঠিন chattrএবং lsattrঅন্তর্নিহিত নামে ফাইলসিস্টেম ব্যবহৃত বৈশিষ্ট্যাবলী (ওয়ান সেখানে ইন্টারনেটে কোন তালিকা)। যদিও আমার পরীক্ষাগুলি থেকে, Aঅ্যাট্রিবিউটকে অ্যাট্রিবিউট মানচিত্রগুলি system.posix_acl_accessএবং যেহেতু এটি systemনামস্থান, তাই rsyncএটি অনুলিপি করার চেষ্টাও করবে না।manস্নিপেটে উল্লিখিত অন্য দুটি নেমস্পেসগুলি হ'ল trustedএবং securityএগুলি নির্ধারণের জন্য মূল সুযোগগুলি প্রয়োজন (এবং rsyncএটি ছাড়া চেষ্টা করবে না)।
সম্ভবত আপনি যে বৈশিষ্ট্যগুলি সেট করার চেষ্টা করেছেন সেগুলি systemনেমস্পেসে পড়ে যা যা rsyncউপেক্ষা করে (এবং সম্ভবত বুদ্ধিমানের সাথে)। হয় বা না হয় আপনি পেতে মূল হতে হবে।
হিসাবে cp, খেলতে বাগ আছে বলে মনে হচ্ছে।চলমান straceউপর cp -a, আমি নিম্নলিখিত দুটি আকর্ষণীয় লাইন পাবেন:
fgetxattr(3, "system.posix_acl_access", 0x7fff5181c0e0, 132) = -1 ENODATA (No data available)
এবং
fsetxattr(4, "system.posix_acl_access", "\x02\x00\x00\x00\x01\x00\x06\x00\xff\xff\xff\xff\x04\x00\x04\x00\xff\xff\xff\xff \x00\x04\x00\xff\xff\xff\xff", 28, 0) = 0
প্রথমত fgetxattrকলটি কোনও ডেটা ফেরত দেয় না (সম্ভবত কোনও কারণ নেই - বৈশিষ্ট্যের অস্তিত্বই যথেষ্ট), তবুও cpগন্তব্য ফাইলে অ্যাট্রিবিউটের মান হিসাবে সেট করতে 28 বাইট (জাঙ্ক?) ডেটা খুঁজে পাওয়া যায়। এটি একটি বাগ-এর মতো মনে হয় cp, তবে সমস্যাগুলি কী ঘটছে libattrতা fsetattrকলটি 0আসলে এট্রিবিউটটি সেট না করেই সাফল্যের জন্য কল হিসাবে ফিরে আসে বলে মনে হয় ।
আমি ext4মাউন্ট করবো কিনা তা বিবেচনা না করেই আমি এই আচরণটি পাই user_xattr। 'কিছু সিস্টেমে' কাজ করার জন্য বর্ধিত বৈশিষ্ট্যের জন্য এই মাউন্ট বিকল্পের প্রয়োজন ছাড়া এটি অন্য কোনও ডকুমেন্টেশন পাচ্ছি না। আপাতদৃষ্টিতে আমার (ডেবিয়ান জেসি) তা হয় না। এমন কি একটি মাউন্ট ইস্যু রয়েছে যা আমি মিস করেছি, এটি ভুল fsetattrএবং এভাবে cpনীরবে ব্যর্থ হওয়া।
বাস্তবিক user_xattrউপর প্রয়োজন হয় ext2, ext3, reiserfsএবং সম্ভবত কিছু অন্যদের। এটির জন্য প্রয়োজনীয় নয়ext4
এছাড়াও লক্ষ করুন যে attrসরঞ্জামগুলি setfattr, getfattrএবং attr(দ্বিতীয়টি কেবলমাত্র কেবলমাত্র হিসাবে ডকুমেন্টেড XFS, তবে কেবল অন্যদের মতো কাজ করবে বলে মনে হয় ext4) userনামস্থান ব্যতীত অন্য কোনও ক্ষেত্রে সমস্যা আছে । আমি পেতে Operation not supportedযদি আমি ব্যবহার করার চেষ্টা setfattrএকটি অ্যাট্রিবিউট করা systemনামস্থান (বা এই অনুযায়ী কোন নামস্থান বাগ )। নাম এবং জায়গাগুলিতে setfattrসফল বলে মনে হয় তবে এরপরে আর কিছু পড়তে ব্যর্থ হয় এবং সেট করা নামস্থান থেকে কিছু পড়তে ব্যর্থ হয় । সফল হওয়ার কারণটি হ'ল এটি একটি কল ব্যবহার করে এবং না ।trustedsecuritygetfattrsystemchattrchattrioctllibattr
যা পুরোপুরি কাজ করে তা হ'ল নামস্পেসে বর্ধিত বৈশিষ্ট্য নির্ধারণ userকরা setfattrএবং তাদের সাথে অক্ষত ব্যবহার করা rsyncবা cpঅনুলিপি করা ( cpএট্রিবিউট তৈরি করার সময় আপনি কোনও মান নির্দিষ্ট না করলেও কোনও সমস্যা নেই )। আমি মনে করি নীচের অংশটি হ'ল systemনেমস্পেস মানগুলি বর্তমানে ব্যবহার করাবগি এবং / বাঅসমর্থিত, কমপক্ষে ডেবিয়ান এবং সম্ভবত অন্যান্য ডিস্ট্রোসেও। সম্ভবত rsyncবিকাশকারীরা এটি জানেন, যে কারণে তারা তাদের উপেক্ষা করেন।