Как использовать rsync для резервного копирования каталога без подкаталога git

43

Я хочу скопировать мой cкаталог со всеми подкаталогами, кроме ./gitподкаталога. Я делаю это используя rsync:

echo "copy c and sh files "
rsync -a --include='*.c' --include='*.sh' --include='*/' --exclude='*' ~/c/ ~/Dropbox/Public/c
# remove .git directory = do not send it to dropbox. Thx to Tomasz Sowa
rm -rf ~/Dropbox/Public/c/.git

Могу ли я сделать это лучше?

Адам
источник

Ответы:

48

Просто добавьте явное исключение для .git:

rsync -a --exclude='.git/' --include='*.c' --include='*.sh' --include='*/' --exclude='*' ~/c/ ~/Dropbox/Public/c

Другой вариант - создать ~/.cvsignoreследующую строку вместе с любыми другими каталогами, которые вы хотите исключить:

.git/

Quetza
источник
Указывается, как вы должны указать путь --exclude. Если у вас есть проблемы с этим, проверьте этот ответ .
Тотемедли
32

Вы можете просто использовать rsync --cvs-exclude. Он также игнорирует .gitкаталоги.

Но будьте осторожны, это также игнорирует каталоги, называемые coreв исходных файлах Magento.

sebastianwagner
источник
10
Это работает для .gitкаталога верхнего уровня, но не для .gitкаталогов в подмодулях. Он также не игнорирует такие файлы, как Git .gitmodules.
maxschlepzig