ফোল্ডারগুলি মার্জ করুন এবং সিএলআই ব্যবহার করে ফাইলগুলি প্রতিস্থাপন করুন


9

আমি কিছু ফোরাম সফ্টওয়্যার আপডেট করতে চাই এবং আমি শিখার সম্ভাবনা হিসাবে CLI ব্যবহার করে আপগ্রেড প্রক্রিয়াটি পরীক্ষা করতে চাই।

আমি কীভাবে কোনও ফোল্ডারের সামগ্রী অন্য ফোল্ডারে মার্জ করব এবং ফাইলগুলি প্রতিস্থাপন করব?

উত্তর:


10

আপনি এটি করতে ব্যবহার করতে পারেন rsync:

$ rsync -abviuzP src/ dest/
  • -aসংরক্ষণাগার মোড; সমান -rlptgoD (কোন-এইচ, -এ,-এক্স)
  • -i আইটেমযুক্ত ফর্ম্যাটটি চালু করে, যা ডিফল্ট ফর্ম্যাট থেকে আরও তথ্য দেখায়
  • -bপুরানো ফাইলটিতে ending সংযুক্ত করে, উভয় ফোল্ডারে থাকা আরএসসিএন ব্যাকআপ ফাইলগুলি তৈরি করে। আপনি - সুফিক্স .সুফ দিয়ে এই প্রত্যয়টি নিয়ন্ত্রণ করতে পারেন
  • -u আরএসসিএনসি ট্রান্সফার স্কিপ ফাইলগুলি তৈরি করে যা এসআরসি-র চেয়ে ভাগ্যে নতুন
  • -z সংক্ষেপণ চালু করে, যা ধীর লিঙ্কগুলির মাধ্যমে সহজে-সংকোচনযোগ্য ফাইলগুলি স্থানান্তর করার সময় কার্যকর
  • -P - পার্টিশিয়াল এবং - প্রগ্রেস চালু করে
    • --partial ট্রান্সফার বাধাগ্রস্থ হলে rsync আংশিক স্থানান্তরিত ফাইলগুলি রাখে
    • --progress প্রতিটি স্থানান্তরের জন্য একটি অগ্রগতি বার দেখায়, দরকারী যদি আপনি বড় ফাইল স্থানান্তর করেন

আমি এই সুইচগুলির বেশ কয়েকটি ড্রপ করব তবে এটি আপনাকে শুরু করার জন্যই। আমি সম্ভবত এই জাতীয় কিছু ব্যবহার করব:

$ rsync -abuP src/ dest/

এটি একবারে ঠিক আছে, আপনি ব্যাকআপ ফাইলগুলি সরাতে এই আদেশটি চালাতে পারেন:

$ find dest/ -name "*.~" -delete

উদাহরণ

আসুন ভান করি যে আমাদের নীচের নমুনা ডেটা রয়েছে।

মূল তথ্য

আমরা কয়েকটি জাল তথ্য তৈরি করতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করব।

$ seq 10 | xargs -I{} -- mkdir dest/dir{}
$ for i in $(seq 5); do echo "$i" > dest/dir$i/file$i;done

ভুয়া তথ্যগুলি নীচে দেখায়:

$ tree -DsifvF --noreport dest/
dest
[       4096 Aug 29 22:21]  dest/dir1/
[          2 Aug 29 22:21]  dest/dir1/file1
[       4096 Aug 29 22:21]  dest/dir2/
[          2 Aug 29 22:21]  dest/dir2/file2
[       4096 Aug 29 22:21]  dest/dir3/
[          2 Aug 29 22:21]  dest/dir3/file3
[       4096 Aug 29 22:21]  dest/dir4/
[          2 Aug 29 22:21]  dest/dir4/file4
[       4096 Aug 29 22:21]  dest/dir5/
[          2 Aug 29 22:21]  dest/dir5/file5

নতুন তথ্য

এখন আমরা আসল ডেটা ( dest/*-> src/) এবং মিক্সটিতে আরও কয়েকটি নতুন ফাইল যুক্ত করব। এটি একটি "নতুন প্রকাশের অনুকরণ করে।

$ cp -pr dest/* src/
$ mkdir src/dir11
$ for i in 1 3 5 11; do echo "$i$i" > src/dir$i/file$i;done

ভুয়া তথ্যগুলি নীচে দেখায়:

$ tree -DsifvF --noreport src/
src
[       4096 Aug 29 22:21]  src/dir1/
[          3 Aug 29 23:00]  src/dir1/file1
[       4096 Aug 29 22:21]  src/dir2/
[          2 Aug 29 22:21]  src/dir2/file2
[       4096 Aug 29 22:21]  src/dir3/
[          3 Aug 29 23:00]  src/dir3/file3
[       4096 Aug 29 22:21]  src/dir4/
[          2 Aug 29 22:21]  src/dir4/file4
[       4096 Aug 29 22:21]  src/dir5/
[          3 Aug 29 23:00]  src/dir5/file5
[       4096 Aug 29 23:00]  src/dir11/
[          5 Aug 29 23:00]  src/dir11/file11

এসআরসি / ডেস্ট / এ মার্জ করুন

এটি নকল করে যে আমরা সবেমাত্র আমাদের নতুন সফ্টওয়্যার ট্রি সেটআপ করেছি src/এবং আমাদের প্রাক-বিদ্যমান ডিরেক্টরিতে মার্জ করতে চাই dest/

$ rsync -abuP src/ dest/
sending incremental file list
dir1/file1
           3 100%    0.00kB/s    0:00:00 (xfer#1, to-check=5/13)
dir11/
dir11/file11
           5 100%    4.88kB/s    0:00:00 (xfer#2, to-check=4/13)
dir3/file3
           3 100%    2.93kB/s    0:00:00 (xfer#3, to-check=2/13)
dir5/file5
           3 100%    2.93kB/s    0:00:00 (xfer#4, to-check=0/13)

sent 416 bytes  received 97 bytes  1026.00 bytes/sec
total size is 18  speedup is 0.04

আপনি দেখতে পাচ্ছেন যে নিম্নলিখিত ফাইলগুলি আপডেট করা হয়েছিল, file1, file3, file5, এবং সদ্য সংযুক্ত dir11 + file11।

এবং নিশ্চিতকরণ হিসাবে আমরা দেখতে পাচ্ছি যে নিম্নলিখিত ব্যাকআপ ফাইলগুলি rsyncযখন প্রাক-বিদ্যমান ফাইলগুলির মুখোমুখি হয়েছিল তখনই এটি তৈরি হয়েছিল dest/

$ find dest/ | grep "~"
dest/dir3/file3~
dest/dir1/file1~
dest/dir5/file5~

উপরের পয়েন্টটি পরিষ্কার করার জন্য: একবার ঠিক হয়ে গেলে আপনি ব্যাকআপ ফাইলগুলি সরাতে এই কমান্ডটি চালাতে পারেন:> dest ভাগ্য / -নেম "স্টার্ট ডট $" সন্ধান করুন - এটি আমার পক্ষে কাজ করে না বলে মনে হচ্ছে, যেখানে:> $ ভাগ্য / -নেম "স্টার্ট ডট স্টার ~" সন্ধান করুন -ডিলিটটি করেছেন। নিশ্চিত না যে এটি কোনও টাইপো বা কোনও কিছু ঠিক আমার শেষ সেট আপ না করে!

2

আপনি সিপি-আর নাম_ওফটি_ফোল্ডার / * নাম_ও_তিনিষ্ঠা_পদ্ধতি_ফোল্ডারটি ব্যবহার করতে পারেন যেখানে অ্যাসিটার্ক (*) সমস্ত ফাইল এবং -r পুনরাবৃত্তির অনুলিপি জন্য দাঁড়িয়ে আছে।

আপনি -i বিকল্পটিও ব্যবহার করতে পারেন যা আপনাকে সামগ্রীতে ওভাররাইট করতে চাইলে আপনাকে জিজ্ঞাসা করবে।

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