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='*/'?