Como usar o rsync para fazer backup de um diretório sem o subdiretório git

43

Quero copiar meu cdiretório com todos os subdiretórios, exceto o ./gitsubdiretório. Eu faço isso usando 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

Posso fazer melhor?

Adão
fonte

Respostas:

48

Basta adicionar uma exclusão explícita para .git:

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

Outra opção é criar ~/.cvsignorecontendo a seguinte linha, juntamente com outros diretórios que você deseja excluir:

.git/

Quetza
fonte
É especificado como você deve indicar o caminho --exclude. Se você tiver problemas, verifique esta resposta .
totymedli
32

Você pode apenas usar rsync --cvs-exclude. Ele também ignora .gitdiretórios.

Mas tome cuidado, pois isso também ignora diretórios chamados corecomo ocorrendo nos arquivos de origem do Magento.

sebastianwagner
fonte
10
Isso funciona para o .gitdiretório de nível superior, mas não para .gitdiretórios em submódulos. Ele também não ignora os arquivos do Git .gitmodules.
maxschlepzig