Cara menggunakan rsync untuk membuat cadangan direktori tanpa subdirektori git

43

Saya ingin menyalin cdirektori saya dengan semua subdirektori tidak termasuk ./gitsubdirektori. Saya melakukannya menggunakan 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

Bisakah saya melakukannya dengan lebih baik?

Adam
sumber

Jawaban:

48

Cukup tambahkan pengecualian eksplisit untuk .git:

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

Pilihan lain adalah membuat yang ~/.cvsignoreberisi baris berikut bersama direktori lain yang ingin Anda kecualikan:

.git/

Quetza
sumber
Ini ditentukan bagaimana Anda harus memberikan jalan untuk --exclude. Jika Anda memiliki masalah dengan itu, periksa jawaban ini .
totymedli
32

Anda bisa menggunakannya rsync --cvs-exclude. Ini juga mengabaikan .gitdirektori.

Tetapi berhati-hatilah, bahwa ini juga mengabaikan direktori yang disebut coreterjadi di file sumber Magento.

sebastianwagner
sumber
10
Ini berfungsi untuk .gitdirektori level atas tetapi tidak untuk .gitdirektori dalam submodul. Ini juga tidak mengabaikan file Git seperti .gitmodules.
maxschlepzig