wypakuj kilku członków z archiwum tar i przeprowadź przez sieć

9

edycja: Chcę dodatkowo member01i member02i katalogblah/

tarball_1.tar.gzzawiera katalog test/z 20 plikami. Chcę wyodrębnić tylko członka test/member01i test/member02katalog blah/i skopiować je do innego „hosta zdalnego” za pomocą ssh / scp.

Czy można to zrobić jako jedno-liniowy? I uważane za pomocą tar, paxalbo cpio, ale myślę, że nie jestem bardzo wykwalifikowanych z tych narzędzi jeszcze.

Felipe Alvarez
źródło

Odpowiedzi:

15
tar -xzOf file.tar.gz file_you_want_to_extract | ssh user@host 'cat > /path/to/destination_file'
  • -x : Wyciąg
  • -z : Przez gzip
  • -f : Pobierz plik jako dane wejściowe.
  • -O : Wyciąg na standardowe wyjście

file_you_want_to_extractEkstrahuje się file.tar.gzdo standardowej produkcji, sprzęt do ssh, która biegnie catna zdalnych i zapisuje jej poziomu się na pilocie zdalnego sterowania destination_file. Oczywiście musisz upewnić się, że masz uprawnienia do zapisu wybranego pliku docelowego na zdalnym hoście.

atanamir
źródło
Nie było jasne w moim oryginalnym poście :) Muszę wyodrębnić więcej niż jednego członka plus katalog.
Felipe Alvarez
powinno być tar -xz0f: po nadejściu fnazwy archiwum
Felipe Alvarez
1
Wyodrębnianie wielu członków stanie się nieporządne, jeśli chcesz, aby były one jednowierszowe, ponieważ wyodrębnianie wielu plików na standardowe wyjście nie ma sensu. Prawdopodobnie będziesz musiał to zrobić tardla każdego, który chcesz wyodrębnić, a następnie użyć, scp -r member1 member2 blah user@host:/destination/folder/aby je skopiować. Jeśli naprawdę chcesz zrobić to w jednym wierszu, możesz połączyć wszystkie te polecenia &&. Bardziej praktyczną opcją jest po prostu utworzenie skryptu, który będzie iterował opcje wiersza poleceń i uruchamiał się tardla każdego z nich, a następnie scps wszystkich na końcu.
atanamir
ahhhhh, rozumiem. Dlatego nie ma „łatwej” metody jednopowłokowej. Dzięki :-)
Felipe Alvarez
2
Alternatywnie, jeśli „jedna linijka” jest ważniejsza niż „jak długo to trwa”, możesz przesłać całe archiwum przez ssh i wyodrębnić żądane elementy po drugiej stronie „cat file.tar.gz | ssh użytkownik @ host” tar zxvf plik1 plik2 katalog1 '
Colin