Я думаю --include
, що використовується для включення підмножини файлів, які інакше виключені --exclude
, а не включають лише ті файли. Іншими словами: ви повинні подумати про включення значення , яке не виключайте .
Спробуйте замість цього:
rsync -zarv --include "*/" --exclude="*" --include="*.sh" "$from" "$to"
Для rsync версії 3.0.6 або новішої, замовлення потрібно змінити наступним чином (див. Коментарі):
rsync -zarv --include="*/" --include="*.sh" --exclude="*" "$from" "$to"
Додавання -m
прапора дозволить уникнути створення порожніх структур каталогів у пункті призначення. Тестовано у версії 3.1.2.
Отже, якщо ми хочемо лише * .sh файлів, ми повинні виключити всі файли --exclude="*"
, включити всі каталоги --include="*/"
та включити всі * .sh файли --include="*.sh"
.
Ви можете знайти кілька хороших прикладів у розділі Включити / виключити правила використання шаблону сторінки людини