লিনাক্স কীভাবে অনুলিপি করবেন না?


385

আমি cpএকটি ডিরেক্টরিতে চাই তবে আমি কোনও বিদ্যমান ফাইলগুলি অনুলিপি করতে চাই না এমনকি এটি অনুলিপি করা ফাইলগুলির চেয়েও পুরানো। এবং আমি এটি সম্পূর্ণরূপে নিখরচায় করতে চাই কারণ এটি কোনও ক্রন্টব বাশ স্ক্রিপ্টের অংশ হবে। কোন ধারনা?


উত্তর:


589

ম্যান পৃষ্ঠা থেকে নেওয়া :

-n, --no-clobber
              do not overwrite an existing file (overrides a previous -i option)

উদাহরণ:

cp -n myoldfile.txt mycopiedfile.txt

32
দ্রষ্টব্য, ফাইল উপস্থিত থাকলে এটি একটি ত্রুটি সহ প্রস্থান করবে। সাফল্যের সাথে প্রস্থান করতে, চেষ্টা করুন cp -n source.txt destination.txt || true
গ্যালানানড্রিউ

13
cp -nউবুন্টু ১২.০৪-তে ফাইলটি উপস্থিত থাকলে @ গ্যালানানড্রু ত্রুটি সহ প্রস্থান করে না।
amit

পুনঃটুইট করেছেন ধন্যবাদ. আমার টার্গেটে একটি রান স্ক্রিপ্ট যুক্ত করার পরে আমার প্রকল্পটি এক্সকোডে তৈরি হচ্ছে না।
রুইজ

অ্যারোনফ্রানাকে এটির মতো দেখাচ্ছে।
বরিস

93

ব্যবহার বিবেচনা করুন rsync

rsync -a -v --ignore-existing src dst

মন্তব্য অনুসারে rsync -a -v src dstসঠিক নয় কারণ এটি বিদ্যমান ফাইলগুলি আপডেট করবে।


7
--ignore-existingবিদ্যমান ফাইলগুলি ওভাররাইট হওয়া থেকে রোধ করতে আপনি পতাকাটি যুক্ত করতে চান ।
সমস্ত কর্মীরা

7
সম্পূর্ণ কমান্ড rsync -a -v --ignore-existing <src> <dst>হ'ল cp -uউপরের পরিবর্তে সত্যই সঠিক উত্তর ।
হোয়াইটবার্ড

যদি আগের কোনও অনুলিপি বাধাগ্রস্ত হয় এবং কেবল একটি ছেঁটে ফেলা ফাইলই অনুলিপি করে থাকে তবে আমি নিশ্চিত সিপি-ইউ এটি পুনরায় অনুলিপি করবে না ... তবে - সিগনোর-বিদ্যমান থাকাতে আরএসসিএনসি করবে? সম্ভবত হয় না ... যাতে তাদের পুরোপুরি সমতুল্য করে তোলে, তাই না?
dagelf

সিপি বর্তমান সময় (আমার অভিজ্ঞতায়) ব্যবহার করে আরএসআইএনসি ফাইল টাইমস্ট্যাম্প রাখে
স্টিফান ডিয়াবো

1
কিছু সার্ভারের কোনও
আরএসসিএন

51
cp -n

আপনি কি চান। ম্যান পৃষ্ঠাটি দেখুন।


অ্যারোন ফ্র্যাঙ্ক হ্যাঁ, এটি পুনরাবৃত্তভাবে কাজ করবে।
বরিস

33

এটি রেডহ্যাটটিতে কাজ করবে:

false | cp -i source destination 2>/dev/null

ওভাররাইট করা আপডেট করা এবং না করা কিছু আলাদা।


4
falseএখানে কি করে ?
হিমশীতল শিখা

11
@ ফ্রোজেনফ্লেমে -iপ্রশ্নের উত্তরসমূহ ।
সিল্ভ করা

স্পষ্টতই, আপনি আরজি_এমএক্স ফাইলের চেয়ে বেশি অনুলিপি করার চেষ্টা করলে এই আদেশটি কাজ করবে না। এই ক্ষেত্রে কাজ করার জন্য, এই লিঙ্কটি পরীক্ষা করুন
মিজিনিয়াস

2
এছাড়াও স্পষ্টতই, পৃথিবী সূর্যের দিকে ক্র্যাশ হলে এই আদেশটি কার্যকর হবে না।
সিভ করা

32

এমন লোকেরা যা খুঁজে পান যে কোনও 'এন' বিকল্প নেই (রেডহ্যাটে আমার মতো) আপনি ব্যবহার করতে পারেন cp -u কেবলমাত্র ফাইলটি লিখতে যদি উত্সটি বিদ্যমানের চেয়ে নতুন হয় (বা কোনও বিদ্যমান নেই)।

[সম্পাদনা] মন্তব্যে উল্লিখিত হিসাবে, এটি পুরানো ফাইলগুলি ওভাররাইট করে দেবে, তবে ওপি যা চেয়েছিল ঠিক তাই নয়। তার জন্য সিলিংয়ের উত্তরটি ব্যবহার করুন।


11
ওপি বিদ্যমান ফাইলগুলি অনুলিপি করতে না চেয়েছে এমনকি তারা অনুলিপি করা ফাইলগুলির চেয়ে বেশি বয়স্ক , তাই -uআসলে উদ্দেশ্যটির সাথে খাপ খায় না।
অ্যান্ড্রু লট

4
মঙ্গল, আপনি একদম ঠিক বলেছেন। আমি অবাক হয়েছি কারও নজরে আসতে এত দিন লেগেছে।
...

এটি ওপি যা চেয়েছিল তা নাও হতে পারে তবে আমার উবারস্পেসের জন্য এটি ঠিক আমার প্রয়োজন (সেন্টোস 7)। ধন্যবাদ!
টমাস প্রেক্সল

আমি আনন্দিত ছয় বছর আগে আমাকে সাহায্য করতে পেরেছিলাম :
গ্রিম ...

10

অ্যালপাইন লিনাক্স: নীচের উত্তরটি কেবলমাত্র একক ফাইলের ক্ষেত্রে: আলপাইনটিতে cp -nকাজ করছে না (এবং false | cp -i ...খুব) তাই আমার ক্ষেত্রে সলিউশন কাজ করছে যা আমি পেয়েছি তা হ'ল:

if [ ! -f env.js ]; then cp env.example.js env.js; fi 

উপরের উদাহরণে যদি env.jsফাইল বিদ্যমান না থাকে তবে আমরা অনুলিপি env.example.jsকরি env.js


1

সিপির কিছু সংস্করণে - না -ক্লোবার বিকল্প নেই। এই ক্ষেত্রে:

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