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?


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.


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

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.


-2

Działał idealnie

cd /home; tar -czvf - /var/log/* > varlog.tar.gz
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.