Cómo usar rsync para hacer una copia de seguridad de un directorio sin el subdirectorio git

43

Quiero copiar mi cdirectorio con todos los subdirectorios, excepto el ./gitsubdirectorio. Lo hago 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

¿Puedo hacerlo mejor?

Adán
fuente

Respuestas:

48

Simplemente agregue una exclusión explícita para .git:

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

Otra opción es crear que ~/.cvsignorecontenga la siguiente línea junto con cualquier otro directorio que desee excluir:

.git/

Quetza
fuente
Se especifica cómo debe dar la ruta --exclude. Si tienes problemas con esto, mira esta respuesta .
totymedli
32

Solo puedes usar rsync --cvs-exclude. También ignora los .gitdirectorios.

Pero tenga cuidado, que esto también ignora los directorios llamados corecomo ocurridos en los archivos fuente de Magento.

sebastianwagner
fuente
10
Esto funciona para el .gitdirectorio de nivel superior pero no para los .gitdirectorios en submódulos. Tampoco ignora los archivos Git como .gitmodules.
maxschlepzig