Jak rozpakować katalog, przesłać przez scp i rozpakować w jednym poleceniu?


11

Często przesyłam duże katalogi scpi byłoby miło, gdybym mógł w jakiś sposób skompresować katalog, wysłać go i zdekompresować w jednym.

Czy coś takiego jest możliwe?

Odpowiedzi:


29

Co powiesz na użycie rsynczamiast tego z -zwłączoną opcją kompresji?

rsync -az --progress source_dir/* remote_host:/destination_dir

Ma to również tę dodatkową zaletę, że jeśli plik już istnieje i nie zmienił się w miejscu docelowym, nie zostanie przesłany.


7

Dzięki odpowiedzi @ johnshen64 udało mi się wymyślić coś całkiem fajnego

tar -zc path/to/source | ssh user@remote tar -zxC path/to/destination

Niestety nie pokazuje to postępu podczas przesyłania. Za pomocą tej metody zauważyłem niesamowitą poprawę prędkości.

Jeśli ktoś wie, jak pokazać postęp w takim transferze, bardzo doceniam pomoc :)


1
Wstaw pvpomiędzy tar i ssh .
user1686

Jest to świetne, jeśli nie masz dostępnego rsync
Simon Hartcher,

2

cóż, zamiast tego użyłbym tar

tar cf - katalog | serwer ssh „tar xf -”

możesz dodać v, aby zweryfikować.

zip powinien być taki sam, ale moim zdaniem tar jest bardziej odporny na Linuksa.


+1 dzięki za pomoc; to doprowadziło mnie do połowy. Udało mi się znaleźć rozwiązanie, które nie korzysta z tajemniczej -postaci, używa także kompresji gzip i pozwala na wybranie katalogu docelowego.
Macek

@macek: Zauważ, że f -może to być wymagane w innych systemach operacyjnych, ponieważ większość wersji tar spróbuje inaczej odczytać z napędu taśmowego. Domyślnie odczyt ze standardowego wejścia jest specyficzny dla GNU.
user1686,
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.