আপনি এই পরিস্থিতিতে সিপি ব্যবহার করে লিনাক্সে ডিরেক্টরিগুলি কীভাবে অনুলিপি করবেন?


4

পরিস্থিতি ঘ

আমি কিভাবে কপি /home/src/somedirকরতে /dest/যেমন যে পথ সবসময় শেষ পর্যন্ত /dest/somedir, কিনা নির্বিশেষে /dest/somedirআগে থেকেই আছে?

আমি শেষ পর্যন্ত এড়াতে চাই /dest/somedir/somedir

পরিস্থিতি 2

আমি কিভাবে ভিতরে সবকিছু কপি /home/src/somedirকরার জন্য /dest/যেমন যে /dest/somedirনির্মিত হয় না এবং যদি এটা আগে থেকেই আছে তিনি উপেক্ষা করছেন?


আমি ব্যবহার করতে পারি এমন পিছনে স্ল্যাশ সম্পর্কে কি কোনও নিয়ম আছে? আমি ভেবেছিলাম একটি পিছনে স্ল্যাশ শেষ হওয়ার অর্থ হ'ল সর্বদা সামগ্রীগুলি অনুলিপি করা তবে এটি এখনও আমার পক্ষে প্রায়শই ভুল হয়ে যায়।


1
"উপেক্ষা" দ্বারা আপনি বিশেষত কী বোঝাতে চান? আপনি কি অনুলিপি চালিয়ে যেতে চান বা বাতিল করতে চান? cp -r /home/src/somedir /dest/উভয় অবস্থারই সমাধান করা উচিত, হয় বিদ্যমান ফোল্ডারে তৈরি বা মার্জ করে
ফ্র্যাঙ্ক থমাস

এটা কি সাথে থাকতে হবে cp? এটির জন্য সম্ভবত একটি সঠিক বিকল্প রয়েছে rsync
বার্মার

উত্তর:


7

cpকমান্ডের শুরুতে সর্বদা ফাইল (গুলি) কমান্ডের শেষে ফাইল বা ডিরেক্টরিতে অনুলিপি করা হবে। স্ল্যাশ আর্গুমেন্টগুলিতে সত্যিই খুব বেশি কিছু করে না, যদি না তত যুক্তি একটি ডিরেক্টরিতে একটি syMLink না হয়। তারপরে স্ল্যাশ থাকার পরে এটি একটি ডিরেক্টরি হিসাবে দেখাবে এবং স্ল্যাশ বাদ দিলে লিঙ্কটি অনুলিপি করা হবে।

আপনি উদাহরণস্বরূপ যে কোনও সাব-ডাইরেক্টরিটি অনুলিপি করতে চান তা ধরে নিচ্ছেন:

cp -r /home/src/somedir /dest

এবং

cp -r /home/src/somedir/* /dest

প্রথমটি ডিরেক্টরিটি পায় /home/src/somedirএবং সেই যুক্তিটি, ডিরেক্টরিটি নিজেই এবং এর সমস্ত বিষয়বস্তু, শেষ আর্গে অনুলিপি করে /dest। এটি প্রয়োজনে somedirডিরেক্টরি তৈরি করবে /destএবং এটি ইতিমধ্যে বিদ্যমান থাকলে এটি ব্যবহার করবে।

দ্বিতীয় যুক্তটি *প্রথম যুক্তির শেষে যুক্ত করে, যা শেলটি প্রতিটি ফাইল হিসাবে প্রসারিত হবে যা শুরু হয় .না /home/src/somedirএবং সেগুলি /destআগে থেকেই আছে তা বিবেচনা না করে সমস্ত ফাইল এবং ডিরেক্টরিগুলি অনুলিপি করবে (কিছু পতাকা ব্যতীত cpএটি তৈরি করবে) একটি বিদ্যমান ফাইলের মতো গন্তব্যস্থলে একই ফাইলগুলি ওভাররাইট করার অনুরোধ জানানো হবে)।

এই উত্তরের মন্তব্যগুলিতে যেমন উল্লেখ করা হয়েছে, *ডিরেক্টরিতে সমস্ত ফাইল দখল করতে সমস্যা আছে । একটি বিকল্প tarআপনার জন্য অনুলিপি করতে ব্যবহার করা হবে

tar -c -C /home/src/somedir . | tar -x -C /dest

somedirএটি -Cপ্রথমে সেই ডিরেক্টরিটিতে স্যুইচ করতে ব্যবহার করে অগ্রণী পথ ছাড়াই একটি টার ফাইল তৈরি করবে । ডিফল্টরূপে tarমুদ্রণ করা হবে stdoutযার পরে আমরা প্রথমে tarকাঙ্ক্ষিত /destডিরেক্টরিতে স্যুইচ করে এটি নিষ্কাশন করতে অন্যটিতে পাইপ করব । এটি ফাইলের অনেকগুলি বৈশিষ্ট্যও সংরক্ষণ করবে, যা cpপাশাপাশি করতে পারে।


2
*খুব বেশি মিল থাকলে ওয়াইল্ডকার্ড সম্প্রসারণ ব্যর্থ হবে তা লক্ষণীয় । আমি সঠিক সংখ্যাটি জানি না, তবে শেষ বার এটি আমার জন্য ব্যর্থ হয়েছিল, ডিরেক্টরিটিতে প্রায় 100000 ফাইল / ডিরেক্টরি রয়েছে।
আলেক্স জি

ভাল কথা, ডিফল্টরূপে ফাইল না থাকলে এটি নামের ফাইলটি অনুলিপি করার চেষ্টা করবে*
এরিক রেনোফ

প্রকৃতপক্ষে, সুতরাং একটি উত্পাদন-স্তরের স্ক্রিপ্টে আপনি এই সমস্ত চেক যুক্ত করতে চাইবেন।
আলেক্স জি

হ্যাঁ স্পষ্টতই ওয়াইল্ডকার্ড এড়াতে চায় এটি বিবেচনা করে যে এটি লুকানো ফাইলগুলি অনুলিপি করে না এবং শেলের মধ্যে যেভাবে এটি প্রসারিত হয় তাতে সমস্যা রয়েছে।
ব্যক্তি

@ অ্যালেক্সজি এবং @ পার্সন গ্লোবগুলির সাথে সমস্যার পর্যবেক্ষণ দিয়েছিলেন আমি এমন একটি বিকল্প অন্তর্ভুক্ত করেছি যা ব্যবহার না করে cpতবে কাজটি সম্পাদন করা উচিত
এরিক রেনোফ

2

কীভাবে আমি / home / src / somedir কে / গন্তব্য / এমনভাবে অনুলিপি করব যে পথটি সর্বদা / গন্তব্য / somedir হিসাবে শেষ হয়, নির্ধারিত / গন্তব্য / সামাদির ইতিমধ্যে বিদ্যমান কিনা?

cp -rv /home/src/somedir /dest

আমরা «/ somedir» কে dest / গন্তব্য cop অনুলিপি করছি, তাই আমরা «/ নিয়ত / সামাদির with

আমি কীভাবে / home / src / somedir এর মধ্যে / গন্তব্য / যেমন / গন্তব্য / somedir তৈরি না করে এবং যদি তা ইতিমধ্যে বিদ্যমান থাকে তবে তা উপেক্ষা করা হবে?

cp -rv /home/src/somedir/* /dest

আমরা some / ফাইলের মধ্যে «সমস্ত ফাইল সিমডির» ( somedir/*) অনুলিপি করছি

ক্যাভেট: সোমদার / * লুকানো ফাইলগুলি অন্তর্ভুক্ত করে না (যারা বিন্দু দিয়ে শুরু করে)।

চূড়ান্ত স্ল্যাশগুলি প্রক্রিয়াটিকে প্রভাবিত করে না। আপনার cpসাথে বিভ্রান্তি হতে পারে rsync, যেখানে একটি পিছনের স্ল্যাশ মানে "সামগ্রীগুলি অনুলিপি করুন, ফোল্ডারটি নয়"।


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