Jak używać rsync do tworzenia kopii zapasowych katalogu bez podkatalogu git


43

Chcę skopiować mój ckatalog ze wszystkimi podkatalogami oprócz ./gitpodkatalogu. Robię to za pomocą 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

Czy mogę to zrobić lepiej?

Odpowiedzi:


48

Po prostu dodaj wyraźne wykluczenie dla .git:

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

Inną opcją jest utworzenie ~/.cvsignorezawierającej następujący wiersz wraz z innymi katalogami, które chcesz wykluczyć:

.git/


Określono, jak należy podać ścieżkę --exclude. Jeśli masz z tym problemy, sprawdź tę odpowiedź .
totymedli

32

Możesz po prostu użyć rsync --cvs-exclude. Ignoruje także .gitkatalogi.

Uważaj jednak, aby ignorowało to również katalogi nazywane corejako występujące w plikach źródłowych Magento.


10
Działa to w przypadku katalogu najwyższego poziomu, .gitale nie dotyczy .gitkatalogów w podmodułach. Nie ignoruje również plików Git takich jak .gitmodules.
maxschlepzig
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.