tar: --exclude = „. git”: Nie można stat: Brak takiego pliku lub katalogu

11

Doprowadza mnie to do szału. Chcę do tarkatalogu, ale wykluczam niektóre pliki. Oto moje polecenie:

tar -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION --exclude='.git' --exclude='.gitignore'

Chociaż powyższe polecenie działa na RedHat EL5, nie działa na Mac OS 10.8.2. Próbowałem zastępując 'z ", \'i \". Próbowałem usunąć znaki równości. Nic nie działa.

Co ja robię źle?

Randomblue
źródło
Używaj gnutarz Brew, MacPort itp. Smoła firmy Apple jest zbyt uszkodzona.
jww

Odpowiedzi:

23

Wszystkie opcje muszą być razem przed argumentami, a -fflaga musi poprzedzać plik tar:

tar -zcv --exclude = '. git' --exclude = '. gitignore' -f $ NAZWA- $ VERSION.tar.gz $ NAZWA- $ WERSJA
Flup
źródło
Jeśli tak tar --help, czy --excludeopcja pojawia się w pomocy? Nie znam OSX, ale być może jest gtarzapas tar.
Flup
2
Ach widzę :) to spróbuj tego: flag oczekuje nazwy pliku jako kolejny argument. tar --exclude='.git' --exclude='.gitignore' -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION-f
Flup
Przepraszam tak, edytowane. Jestem tu nowy, więc znoś mnie!
Flup
2
Potwierdzam, że działa to na komputerze Mac - 10.9. Zajęło mi chwilę znalezienie właściwej wersji tego, dlatego zostawiam tutaj swój komentarz!
JohnAllen
2

To daje Ci to, czego chcesz:

tar czvf $NAME-$VERSION.tar.gz $NAME-$VERSION --wildcards --exclude=.git --exclude=.gitignore
Sonde
źródło
1

Wygląda na to, że chcesz filtrować meta katalogi .git, najłatwiejszym sposobem jest użycie opcji --exclude-vcs, aby wykluczyć katalogi systemu kontroli wersji:

tar -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION --exclude-vsc

Użyłem „tar (GNU tar) 1.27.1” na moim komputerze z systemem Linux. Wygląda na to, że ogólne polecenie systemu MacD BSD (wersja nie GNU) nie obsługuje tej opcji.

Kayvan Tehrani
źródło
Czy jesteś pewien, że to działa ze smołą Apple'a? Zobacz Apple tar(1)stronę man . nie ma na liście --exclude-vscani --exclude-vcs.
jww
Dzięki kochanie @jww za podpowiedź. Zredagowałem swoją odpowiedź, aby była bardziej skuteczna.
Kayvan Tehrani