Jak przesłać dane ze zdalnego systemu?

29 października, 2011 (21:05) | linux | By: konrad

Załóżmy, że mamy system, który stoi sobie na drugim końcu świata (o ile świat ma dwa końce). Dostęp do tegoż systemu mamy wyłącznie przez SSH i żadna inna usługa na nim nie pracuje. Mam wprawdzie uprawnienia administratora, jednak host strzeżony jest przez „wielkiego ogniomura”, który nie pozwala podróżować pakietom innym, niż tym z inicjałami tcp/22 i nie jesteśmy w stanie nic na to poradzić. I chcemy z tego wspaniałego systemu pobrać plik. W sumie nic prostszego:

[kbechler@flame .ssh]$ scp kbechler@lupus:~/lico-update.sh ~
kbechler@lupus's password:
lico-update.sh 100% 19KB 18.9KB/s 00:00
[kbechler@flame .ssh]$

Trudne to jakoś specjalnie nie było.

A teraz spróbujmy zrobić to samo, ale z urządzeniem blokowym (bo chcemy zrobić kopię zapasową odmontowanej partycji):

[kbechler@flame .ssh]$ scp kbechler@lupus:/dev/sda2 ~
kbechler@lupus's password:
scp: /dev/sda2: Permission denied
[kbechler@flame .ssh]$

Hmmm, brakuje nam trochę uprawnień :-\
Ale możemy przecież zrobić tak, aby te uprawnienia uzyskać:

[kbechler@lupus ~]$ sudo chmod 644 /dev/sda2

I co teraz?

[kbechler@flame .ssh]$ scp kbechler@lupus:/dev/sda2 ~
kbechler@lupus's password:
scp: /dev/sda2: not a regular file
[kbechler@flame .ssh]$

Upsss….chyba niewiele to dało. Przywróćmy lepiej poprzednie prawa:
[kbechler@lupus ~]$ sudo chmod 64 /dev/sda2

No dobra, to co możemy zrobić? Ano możemy połączyć siłę SSH z wielce użytecznym narzędziem dd oraz potokami:

[kbechler@flame ~]$ ssh kbechler@lupus "sudo dd if=/dev/sda2" | dd of=~/sda2
kbechler@lupus's password:
4116480+0 records in
4116480+0 records out
2107637760 bytes (2.1 GB) copied, 70.9355 seconds, 29.7 MB/s
4116480+0 records in
4116480+0 records out
2107637760 bytes (2.1 GB) copied, 75.0957 seconds, 28.1 MB/s
[kbechler@flame ~]$

Tadam!

W zależności od tego, co tak naprawdę przesyłamy, możemy do kompletu zaprosić jeszcze jakiś kompresor:

[kbechler@flame ~]$ ssh kbechler@lupus "sudo dd if=/dev/sda2 | bzip2 -9" | bzip2 -d | dd of=~/sda2
kbechler@lupus's password:
4116480+0 records in
4116480+0 records out
2107637760 bytes (2.1 GB) copied, 74.1963 seconds, 28.4 MB/s
ex4116480+0 records in
4116480+0 records out
2107637760 bytes (2.1 GB) copied, 107.966 seconds, 19.5 MB/s
[kbechler@flame ~]$

W sumie tyle :-)

Trackback URL: https://konrad.bechler.pl/2011/10/jak-przeslac-dane-ze-zdalnego-systemu/trackback/

«

»

Write a comment





*