Jak utworzyć archiwum tar w innym katalogu?

38

Chcę utworzyć archiwum tar w innym katalogu niż w bieżącym katalogu.

Próbowałem tego polecenia:

tar czf file.tar.gz file1 -C /var/www/

ale tworzy archiwum w bieżącym katalogu. Czemu?

Omid
źródło
3
Wygląda na to, że źle zrozumiałeś -C(co nie jest dziwne, jak zostało to mętnie udokumentowane). Aby uzyskać szczegółowe informacje, patrz serverfault.com/q/416002/86283 .
NN

Odpowiedzi:

47

Najłatwiejszym sposobem, jeśli nie musisz specjalnie używać -Cpolecenia tarzmiany w innym katalogu, jest po prostu określenie pełnej ścieżki do archiwum w wierszu poleceń. Następnie możesz znajdować się w dowolnym katalogu, w którym chcesz utworzyć strukturę katalogów, którą chcesz w archiwum.

Poniższe spowoduje utworzenie archiwum /var/www/file.tar.gzi umieszczenie file1w nim bieżącego katalogu (cokolwiek by się nie zdarzyło), bez informacji o ścieżce w archiwum.

tar czf /var/www/file.tar.gz file1

Ścieżka (do archiwum, plików składowych lub obu) może oczywiście być względna. Jeśli file1jest w /tmp, jesteś w /var/spooli chcesz utworzyć archiwum /var/www, możesz użyć czegoś takiego:

tar czf ../www/file1.tar.gz /tmp/file1

Jest milion wariantów tego tematu, ale to powinno zacząć. Dodaj vflagę, jeśli chcesz zobaczyć, co tarfaktycznie robi.

CVn
źródło
1
Możesz także użyć ścieżki względnej.
NN
@ NN Oczywiście, ale ponieważ nie mamy pojęcia, co to $PWDjest, najbezpieczniej było użyć ścieżki bezwzględnej w tym przykładzie.
CVn
Rzeczywiście, po prostu pomyślałem, że warto to uwzględnić, aby pokazać, że jest to dostępna opcja rozwiązania problemu.
NN
W ten sposób będzie ścieżka file1do archiwum tar /tmp. To może, ale nie musi być to, czego oczekujesz.
mouviciel
8

Przekształcam skompresowane dane w strumień (-) i łatwo zmieniam nazwę i lokalizuję (>), gdziekolwiek wybiorę (Zawsze również zapisuję ścieżkę względną (./), aby łatwiej było sobie z nią poradzić podczas dekompresji)

tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar
David King
źródło
To nie pomaga w przypadku pojedynczych plików i -Cjest znacznie bardziej idiomatyczne (i krótsze).
Mahmoud Al-Qudsi,
3

Myślę, że powinno to być:
tar czf file.tar.gz -C /var/www/ file1

Który działa dla mnie. Mówi, aby zmienić katalog, a następnie wybrać plik.

użytkownik2039152
źródło
-2

Działał idealnie

cd /home; tar -czvf - /var/log/* > varlog.tar.gz
Myhera
źródło