আরএসআইএনসি-তে, আমি কীভাবে সমস্ত পদাঙ্কের সাথে মেলে সমস্ত ডিরেক্টরি বাদ করব?


8

আরএসআইএনসি-তে আমি একটি প্যাটার্নের সাথে মেলে এমন সাব-ডিরেক্টরিগুলি বাদ দেওয়ার চেষ্টা করছি। কিন্তু, আমি এটি কাজ করতে পারি না। আমি এখানে এবং গুগলে পাওয়া বেশ কয়েকটি উদাহরণ অনুসরণ করেছি। তবে, আমি সঠিক ফলাফল পাই না। আমার কমান্ডের বিকল্প বিটটি এখানে:

-avh --exclude 'branch*' --stats --delete --link-dest=$LNK

আমার উত্স ডিরেক্টরি কাঠামো হয়

/root
    /branch1
    /branch2
    /branch3
    /other
    /stillAnother
    /etc

এটি ব্যাকআপ স্ক্রিপ্টের অংশ। N এলএনকে হ'ল আগের দিনের আরএসইএনসি গন্তব্যের লিঙ্ক।

আমি / মূল / শাখা 1, / মূল / শাখা 2, / মূল / শাখা 3 চাই না। বা তাদের বিষয়বস্তু সিঙ্ক করতে হবে। কিন্তু তারা.

আমি ইতিমধ্যে চেষ্টা করেছি এমন বাদ দেওয়া বিটগুলি এখানে:

--exclude=branch*
--exclude='branch*'
--exclude '/branch*'
--exclude /branch*

কোন সাহায্য / পরামর্শের জন্য ধন্যবাদ।

সম্পাদনা - "সম্ভাব্য সদৃশ" পতাকাটি সম্বোধন করতে

এই প্রশ্নটি ডিরেক্টরিগুলির একটি পরিচিত তালিকা সম্পর্কিত। প্যাটার্ন অনুসরণ করে এমন কোনও ডিরেক্টরি আমাকে বাদ দিতে হবে, যদিও সেই ডিরেক্টরিগুলি এখনও বিদ্যমান নেই। যেমন আমার উদাহরণ থেকে, নামের অন্য ডিরেক্টরি /branch*যুক্ত হতে পারে। আমাকে আমার স্ক্রিপ্টটি ভবিষ্যত-প্রমাণ করা প্রয়োজন, এবং যখন প্যাটার্নের সাথে মেলে এমন ডিরেক্টরি যুক্ত করা হয় তখন স্ক্রিপ্টটি সম্পাদনা করা এড়ানো উচিত কারণ সেই ডিরেক্টরিগুলি অস্থায়ী হতে পারে।


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

গন্তব্যটি আমার বাশ স্ক্রিপ্ট দ্বারা নির্মিত একটি নতুন, খালি ডিরেক্টরি। আমি লিঙ্ক-ডেস্ট ডিরেক্টরি থেকে শাখা * ডিরেক্টরিগুলি মুছলাম, কোনও ফলস্বরূপ।
রজার ক্র্যাসি

1
আপনি একটি সুনির্দিষ্ট পূর্ণ প্যাটার্ন ব্যবহার করতে চান আছে *branch*বা /root/branch*সংক্ষিপ্ত না branch*- সংক্ষিপ্ত ফর্ম পাওয়া যায় না এবং এইভাবে বহির্ভূত নয়।
Kondybas

@ কনডিবাস সুতরাং, আমার অপশনগুলিতে আমার 'বাদ দেওয়া' শাখায় '*' লাগানো দরকার বাদে সব ঠিক আছে? ( --exclude '*branch*)
রজার ক্র্যাসি

2
RSSync

উত্তর:


2

আপনি বাদ দেন আইনটি সঠিক। তবে, আরএসইএনসি অতিরিক্ত প্যারামিটার ছাড়াই গন্তব্যস্থলে বাদ পড়া ফাইলগুলি মুছবে না --delete-excluded:

--delete-excluded also delete excluded files from dest dirs

উদাহরণ:

#  tree test
test
|-- 123
|-- branch1
|-- branch2
|-- branch3
`-- other

#  tree test2
test2
|-- 123
|-- branch1
|-- branch2
|-- branch3
`-- other

# rsync -avh test/ test2 --delete --exclude='branch1' --delete-excluded
sending incremental file list
deleting branch1/

sent 140 bytes  received 27 bytes  334.00 bytes/sec
total size is 0  speedup is 0.00

#  tree test2
test2
|-- 123
|-- branch2
|-- branch3
`-- other

3 directories, 1 file

আমি স্ক্রিপ্টে আমার বিকল্পগুলি পরিবর্তন করেছি -avh --exclude 'branch*' --stats --delete --delete-excluded --link-dest=$LNKশেষ রাতের ব্যাকআপটিতে এখনও / শাখা * ডিরেক্টরিগুলি ব্যাক আপ করা হয়েছে।
রজার ক্র্যাসি

1

rsync সংস্করণ ৩.১.৩ (সম্ভবত আগে, চেক করা হয়নি) সঠিকভাবে এই সিনট্যাক্সটি ব্যবহার করে উপ-ডিরেক্টরিগুলি বাদ দেয় (স্পষ্টতই exclude_dirnameআপনি যে প্যাটার্নটি বাদ দিতে চান) এর পরিবর্তে:

rsync [other opts...] --exclude='*/exclude_dirname/' /src/ /dst/

এটি ওয়াইল্ডকার্ডগুলির সাথেও কাজ করে। আসল প্রশ্ন ব্যবহার করে 'branch*', সুতরাং এটি কাজ করে:

rsync [other opts...] --exclude='*/branch*/' /src/ /dst/

আশাকরি এটা সাহায্য করবে.

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