Jak tar / rozpakować wyjście w locie


27

Jaki jest idiomatyczny sposób na wykonanie następujących czynności

  • tar na standardowe wyjście
  • przeczytaj to wyjście tar ze standardowego wyjścia i wypakuj do innego folderu.

Moje rozwiązanie to tar --to-stdout .. | tar -C somefolder -xvf -

Ale może być bardziej idiomatyczny sposób na zrobienie tego.

Odpowiedzi:


34

Ta sama -f -opcja działa również w przypadku tarowania.

tar -cf - something | tar -C somefolder -xvf -

GNU tar domyślnie używa stdio:

tar -c something | tar -C somefolder -xv

rsync jest również popularny.

rsync -av something/ somefolder/

9

Po prostu dodam tutaj inny przypadek użycia. Miałem dużą strukturę katalogów w systemie prawie brak miejsca na dysku i chciałem skończyć z plikiem tar.gz struktury katalogów na innym komputerze z dużą ilością miejsca.

tar -czf - big-dir | ssh user@host 'cat > /path/to/big-dir.tar.gz'

Oszczędza to narzutów sieciowych i oznacza, że ​​nie musisz tarować po drugiej stronie, na wypadek gdybyś chciał zamiast tego użyć rsync do transferu.


Netcat jest do tego idealny. (Cat od jednego hosta do drugiego hosta).
— Hennes,

3
@Hennes: Z powodu braku uwierzytelnienia, sprawdzania integralności, szyfrowania danych, a także konieczności ręcznego uruchamiania go po obu stronach dla każdego pojedynczego transferu (tj. 2 × pracy), brzmi to nieco mniej niż idealnie
— grawitacja

Przez większość czasu gzipuję go przed zrzuceniem go przez sieć. Wszelkie awarie integralności mogą pojawić się jako błędy dekompresyjne (chociaż nigdy ich nie dostałem, gdy ich użyłem). Jeśli chodzi o uruchomienie dwóch programów: Tak, prawda.
— Hennes,

3
Może to być więcej pracy, ale w przypadku wysyłania dużego skompresowanego archiwum za pośrednictwem łącza podczas operacji wrażliwej na czas między maszynami w zabezpieczonej sieci lokalnej lub przez sieć VPN, przesyłanie przez nc będzie znacznie szybsze niż SSH (w sieci 1 Gb, często 2 razy). Wyślij sumę md5 archiwum w celu sprawdzenia integralności.
— Spooler
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.