প্যাসিকলি, আপনি paxএই -lবিকল্পটি সহ রিড + রাইটিং মোডে ব্যবহার করবেন :
pax -rwlpe -s /A/B/ dirA .
( -pe(সব ফাইল সম্ভব বৈশিষ্ট্যাবলী এই ক্ষেত্রে শুধুমাত্র ডিরেক্টরি) যে অনুলিপি করা অপরিবর্তিত, গনুহ মত cp'র -aনা)।
এখন, যদিও মান , তবুও কমান্ড খুব পোর্টেবল হয় না ।
প্রথমত, অনেকগুলি জিএনইউ / লিনাক্স-ভিত্তিক সিস্টেম paxডিফল্টরূপে অন্তর্ভুক্ত করে না (যদিও এটি একটি অ-alচ্ছিক POSIX ইউটিলিটি)।
তারপরে, কয়েকটি বাস্তবায়ন সহ বেশ কয়েকটি বাগ এবং অ-কনফর্মেন্সগুলি সেই কোডটি নিয়ে বেশ কয়েকটি সমস্যা সৃষ্টি করে।
- ত্রুটির কারণে, সোলারিস 10
pax(কমপক্ষে) এর -rwlসাথে সংমিশ্রণে ব্যবহার করার সময় কাজ করে না -s। কোনও কারণে, মনে হয় এটি মূল এবং অনুলিপি উভয় পথেই বিকল্প প্রয়োগ করে। সুতরাং উপরে, এটি link("dirB/file", "dirB/file")পরিবর্তে কিছু করার চেষ্টা করবে link("dirA/file", "dirB/file")।
- FreeBSD 'র উপর,
paxধরনের ফাইলের জন্য hardlinks তৈরি করে না সিমবলিক লিঙ্ক (POSIX দ্বারা অনুমোদিত একটি আচরণ)। কেবল এটিই নয়, এটি প্রতিলিঙ্কগুলির লক্ষ্যগুলিতেও বিকল্প প্রয়োগ করে (পসিক্স দ্বারা অনুমোদিত নয় এমন আচরণ )। সুতরাং উদাহরণস্বরূপ একটা যদি জন্য foo -> AAএ সিমবলিক লিঙ্ক dirA, এটা হয়ে যাবে foo -> BAএ dirB।
এছাড়াও, আপনি যদি একই কাজ করতে চান তবে স্বেচ্ছাসেবী ফাইল পাথের সাথে যার বিষয়বস্তু সঞ্চিত আছে $srcএবং $dst, এটি উপলব্ধি করা গুরুত্বপূর্ণ যে এটির ভিতরে pax -rwl -- "$src" "$dst"সম্পূর্ণ ডিরেক্টরি কাঠামো তৈরি করে (এটি বিদ্যমান এবং একটি ডিরেক্টরি হতে হবে)। উদাহরণস্বরূপ, যদি হয় তবে তৈরি হয়।$src$dst$srcfoo/bar$dst/foo/bar
পরিবর্তে, আপনি এর $dstঅনুলিপি হতে চান $src, সম্ভবত সবচেয়ে সহজ এটি হিসাবে এটি করা:
absolute_dst=$(umask 077 && mkdir -p -- "$dst" && cd -P -- "$dst" && pwd -P) &&
(cd -P -- "$src" && pax -rwlpe . "$absolute_dst")
(যা উপরে উল্লিখিত বেশিরভাগ সমস্যার ক্ষেত্রেও কাজ করবে তবে $dstনতুন লাইনের চরিত্রগুলিতে যদি নিখুঁত পথটি শেষ হয় তবে ব্যর্থ হবে )।
এখন এটি জিএনইউ / লিনাক্স সিস্টেমগুলিতে সহায়তা করবে না যেখানে নেই pax।
এটি লক্ষণীয় আকর্ষণীয় যে paxএটি পসিক্স দ্বারা তৈরি tarএবং cpioকমান্ডের বৈশিষ্ট্যগুলিকে মার্জ করার জন্য তৈরি করেছিল ।
cpioপসিক্স আবিষ্কারের বিপরীতে একটি historical তিহাসিক ইউনিক্স কমান্ড (1977 সাল থেকে), এবং একটি জিএনইউ বাস্তবায়নও রয়েছে ( paxএকটিও নয়)। সুতরাং এটি আর কোনও স্ট্যান্ডার্ড কমান্ড না থাকলেও (এটি যদিও SUSv2 তে ছিল) তবে এটি এখনও খুব সাধারণ এবং আপনি সাধারণত নির্ভর করতে পারেন এমন বৈশিষ্ট্যের একটি মূল সেট রয়েছে।
সমতুল্য pax -rwlহবে cpio -pl। যাহোক:
cpio আর্গুমেন্টের বিপরীতে স্টিডিনে ইনপুট ফাইলের তালিকা গ্রহণ করে (নিউলাইন সীমানা যার অর্থ নতুন লাইনের অক্ষরযুক্ত ফাইলের নাম সমর্থিত নয়)
- সমস্ত ফাইল নির্দিষ্ট করতে হবে (সাধারণত আপনি এটিকে আউটপুট খাওয়ান
find( findএবং cpioএকই লোকেরা যৌথভাবে বিকাশ করেছিলেন))।
- মেটাডেটা সংরক্ষণ করা হয় না (কিছু
cpioপ্রয়োগে কিছু সংরক্ষণের বিকল্প রয়েছে, তবে কিছুই বহনযোগ্য নয়)।
তাই দিয়ে cpio:
absolute_dst=$(umask 077 && mkdir -p -- "$dst" && cd -P -- "$dst" && pwd -P) &&
(cd -P -- "$src" && find . | cpio -pl "$absolute_dst")
pax, ফ্রিবিএসডি-তেcp -aলাইকগুলি হার্ডলিঙ্ক করে না m