আরএসসিএন দিয়ে একাধিক ডিরেক্টরি কীভাবে বাদ দেওয়া যায়?


184

আমি আরএসসিএনসি ব্যবহার করে আমার হোম ডিরেক্টরিটি ব্যাকআপ করার চেষ্টা করছি এবং আমি জাঙ্ক ধারণ করে এমন কিছু ডিরেক্টরি বাদ দিতে চাই। আমি বিশেষভাবে বাদ দিতে চাই /home/ben/.ccacheএবং /home/ben/build। দুর্ভাগ্যক্রমে rsync এর জন্য ডকুমেন্টেশন ছিল তথ্য ওভারলোড এবং আমার প্রশ্নের উত্তর দেয় নি। এটি আমি চেষ্টা করেছি:

rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/

এটি করার সঠিক উপায় কী?


4
শুধু বলতে চেয়েছিলেন যে পতাকাটি ইতিমধ্যে aইঙ্গিত rকরেছে :)-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
পপুলাস

উত্তর:


238

ঠিক আছে আমি সত্যিই বোবা অনুভব করছি। এই প্রশ্নটি পোস্ট করার আগেও আমার বন্ধুটি আমাকে কীভাবে এটি করতে হবে তা দেখিয়েছিল এবং এটি সত্যিই সহজ। একাধিক ডিরেক্টরি বাদ দিতে আপনি কেবল একাধিক --exclude=pathস্যুইচ ব্যবহার করেন । সুতরাং উপরে আমার আদেশ সঠিকভাবে লিখিত:

rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/

7
একটি নিখুঁত পাথ আমার পক্ষে কাজ করে নি (নির্দিষ্ট ডিরেক্টরিটি নিঃশব্দে বাদ দেওয়া হয়নি), তবে উত্স ডিরেক্টরি সম্পর্কিত একটি পাথ সঠিকভাবে কাজ করেছে। সম্ভবত আমি কিছু মিস করছি, তবে আমি @ ফ্রিজ সফটওয়্যার সার্ভারের দৃ about়তা সম্পর্কে সতর্ক থাকব যে পরম পথ সর্বদা কাজ করে।
সোরেন জর্নস্ট্যাড

5
অবগতির জন্য: বিকল্প -aঅন্তর্ভুক্ত -r, যাতে -arঅপ্রয়োজনীয়।
ডেভিড

4
ফ্রিসফটওয়্যার সার্ভারগুলি যা বিশ্বাস করে তার বিপরীতে, বাদ দেওয়া পথটি সোর্স পাথের সাথে তুলনামূলক, নয় / নয়। সুতরাং সেই মন্তব্যটি স্পষ্টতই মিথ্যা এবং যদি আপনি এটি অনুসরণ করেন তবে ব্যর্থতার দিকে পরিচালিত করবে। এই জাতীয় মানসিক ত্রুটি এড়াতে সেরা কৌশলটি হল আপনার অগ্রাহ্য / বাদ দেওয়া leave যদি উত্সটি বলা হয়, / হোম / আমাকে এবং যদি আপনি = '/ মাইডির /' বাদ দেন তবে এটি / হোম / আমার মধ্যে ডিরেক্টরিটি মাইডির বাদ দেয়, এটি হ'ল / হোম / আমার / মাইডির নট / মাইডির / এট /। এটি দুর্ভাগ্যজনক যে আমি প্রযুক্তিগতভাবে ভুল এবং যেহেতু বিভ্রান্ত হবে সেহেতু আমি মন্তব্যটিকে ডাউনওয়েট করতে বা সম্পাদনা করতে পারি না।
টিকটিকি

3
পরবর্তী ভ্রমণকারীদের জন্য এফওয়াইআই, দেখে মনে হচ্ছে @ ফ্রিসফটওয়্যার সার্ভারের প্রশ্নে করা মন্তব্যটি সরানো হয়েছে। tl; dr: আপেক্ষিক পথগুলি ব্যবহার করুন
ফ্রিডম_বেন

2
আপনি যদি বোবা হন তবে আমি এবং অন্যান্য 179 জন প্রচারক!
শ্রীধর সারনোবাত

108

একাধিক ডিরেক্টরি এবং / বা ফাইলগুলি বাদ দেওয়ার জন্য, একটি পাঠ্য ফাইল তৈরি করুন এবং --exclude-fromস্যুইচটি ব্যবহার করুন । কল করা একটি ফাইল তৈরি করুন exclude_me.txtএবং এতে আপনার ব্যতিক্রমগুলি তালিকাবদ্ধ করুন। উদাহরণ ( /home/ben/exclude_me.txt):

.ccache
build
.java
.gvfs
.xsession-errors

তারপরে আপনার আরএসএনসিটি দেখতে এরকম কিছু দেখাবে:

rsync -arv --exclude-from='/home/ben/exclude_me.txt' /home/ben /media/ben/thumbdrive/

এটি ফিল্টার বিধি সম্পর্কিত কিছু তথ্য যা সহায়তা করতে পারে:

  • /dir/ এর অর্থ মূল ফোল্ডারটি বাদ দেওয়া /dir
  • /dir/*মানে মূল ফোল্ডারটি পাবেন /dirতবে সামগ্রীগুলি নয়
  • dir/ মানে যেখানে যে কোনও ফোল্ডার নাম অন্তর্ভুক্ত করুন exc dir/

  • উদাহরণগুলি বাদ দেওয়া: /dir/, /usr/share/directory/, /var/spool/dir/ /var/spool/lpd/cfমানে যে cfকোনও ফাইলের মধ্যে যে কোনও ফোল্ডারের মধ্যেই শুরু হয় sk/var/spool/lpd

আরো দেখুন ফিল্টার নিয়ম মানুষ পৃষ্ঠাতে অধ্যায়।


4
এটি লক্ষণীয় গুরুত্বপূর্ণ যে রুট ফোল্ডারটির অর্থ হ'ল স্থানান্তরের মূল মূল ডিরেক্টরি নয়।
জেমসডলিন

এটি একটি উজ্জ্বল উত্তর!
আলেকজান্ডার ঝুকভ

85

আপনি কোঁকড়া ধনুর্বন্ধনী মধ্যে একাধিক পাথ বাদ দিতে পারেন:

rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/

40
এটি দুর্দান্তভাবে কাজ করে, কেবলমাত্র শ এর অধীনে নয়, কেবল বাশের অধীনেই, আমি "কঠিন উপায়" খুঁজে পেয়েছি
xor

7
কমা পরে কোন স্থান নেই। শিখেছি যে কঠিন
উপায়ও

এবং '' ----clc = '। Gvfs'
মার্টিন টি

এফডাব্লুআইডাব্লু, আমি মনে করি কোঁকড়ানো ধনুর্বন্ধনীগুলি ksh দিয়ে কাজ করে। : অন্যান্য শাঁস জন্য, আপনি সম্ভবত ভালো কিছু ব্যবহার করতে পারে IFS=$'\n'; rsync -arv $(printf '.ccache\nbuild\n' | sed 's/^/--exclude=/g') /home/ben /media/ben/thumbdrive/। অথবা, আপনি কেবল একাধিক --excludeযুক্তি ব্যবহার করতে পারেন , যা আপনাকে ম্যানুয়ালি টাইপ করতে হবে।
TSJNachos117

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