venv/
অন্তর্ভুক্ত করার আগে এটিকে বাদ দেওয়া দরকার */
:
rsync -avz --exclude='venv/' --include='*/' --include='*.py' --exclude='*' /tmp/src/ /tmp/dest/
সূক্ষ্মতাটি হ'ল rsync
নিয়মগুলি ক্রমে প্রক্রিয়া করে এবং প্রথম মিলের নিয়ম জয়ী হয়। সুতরাং, যদি --include='*/'
এর আগে হয় --exclude='venv/'
তবে ডিরেক্টরিটি venv/
অন্তর্ভুক্ত থাকে --include='*/'
এবং বাদ দেওয়ার নিয়মটি কখনও পরামর্শ করা হয় না।
আমরা কি এটি সহজ করতে পারি?
আমাদের দরকার কেন --include='*/'
এবং --exclude='*'
? কেন --exclude=venv/ --include='*.py'
পর্যাপ্ত নয় ?
ডিফল্ট ফাইল / ডিরেক্টরি অন্তর্ভুক্ত করা হয়। সুতরাং, বিবেচনা করুন:
rsync -avz --exclude='venv/' --include='*.py' source target
এর মধ্যে ফাইল বা ডিরেক্টরিগুলি অন্তর্ভুক্ত সমস্ত কিছুই অন্তর্ভুক্ত থাকবে venv/
। আপনি তবে কেবল .py
ফাইল চান want এর অর্থ হল যে আমাদের সাথে অন্য ফাইলগুলি স্পষ্টভাবে বাদ দিতে হবে --exclude='*'
।
--exclude='*'
ফাইল এবং ডিরেক্টরি উভয়ই বাদ দেয় । সুতরাং, আমরা যদি নির্দিষ্ট করে রাখি --exclude='*'
, তবে সমস্ত ডিরেক্টরি বাদ দেওয়া হবে এবং কেবলমাত্র .py
সেই রুট ডিরেক্টরিগুলির মধ্যে ফাইলগুলি পাওয়া যাবে। .py
উপ-ডিরেক্টরিগুলিতে ফাইলগুলি কখনই খুঁজে পাওয়া যাবে না কারণ rsync
যে ডিরেক্টরিগুলি বাদ নেই সেগুলি অনুসন্ধান করে না। সুতরাং, যদি আমাদের থাকে তবে আমাদের অবশ্যই --exclude='*'
এটির আগে থেকেই --include='*/'
সমস্ত ডিরেক্টরিগুলির বিষয়বস্তু অন্বেষণ করা উচিত তা নিশ্চিত করতে হবে।
--include='*/'
?