হালনাগাদ
এটির সাথে আরও কিছুটা গোলমাল করার পরে এবং কোডটির জন্য 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
সফল বলে মনে হয় তবে এরপরে আর কিছু পড়তে ব্যর্থ হয় এবং সেট করা নামস্থান থেকে কিছু পড়তে ব্যর্থ হয় । সফল হওয়ার কারণটি হ'ল এটি একটি কল ব্যবহার করে এবং না ।trusted
security
getfattr
system
chattr
chattr
ioctl
libattr
যা পুরোপুরি কাজ করে তা হ'ল নামস্পেসে বর্ধিত বৈশিষ্ট্য নির্ধারণ user
করা setfattr
এবং তাদের সাথে অক্ষত ব্যবহার করা rsync
বা cp
অনুলিপি করা ( cp
এট্রিবিউট তৈরি করার সময় আপনি কোনও মান নির্দিষ্ট না করলেও কোনও সমস্যা নেই )। আমি মনে করি নীচের অংশটি হ'ল system
নেমস্পেস মানগুলি বর্তমানে ব্যবহার করাবগি এবং / বাঅসমর্থিত, কমপক্ষে ডেবিয়ান এবং সম্ভবত অন্যান্য ডিস্ট্রোসেও। সম্ভবত rsync
বিকাশকারীরা এটি জানেন, যে কারণে তারা তাদের উপেক্ষা করেন।