czwartek, 25 czerwca 2009

kopiowanie plików na zdalne serwery

Możliwości jest wiele. Od prostego scp, przez rsync'a wywoływanego na wiele sposobów, poprzez netcat'a, montowanie zdalnego zasobu przez sshfs lub temu podobne drivery do sftp, żeby nie wspomnieć tu o standardowym ftp lub uniksowych nfs-ach. Znalazło by się jeszcze wiele innych, o których albo nie pamiętam albo w momencie pisania nie przyszły mi do głowy. Open source - open mind.
  • SCP
Znajduje się w pakiecie z projektu openBSD - openSSH. Najczęscie (w debianie będzie to prawdopodobnie pakiet openssh-client, w gentoo po prostu openssh)

Najprościej można tak:
scp plik_lokalny [user@]host_zdalny:/sciezka/w/filesystemie [-p 22]

-p 22 to port na który łączymy się ze zdalnym hostem.
Popatrz tez w man. Warto z tego polecenia często korzystać - szczególnie na początku, gdy system kryje w sobie mnóstwo tajemnic.
i pojedynczy plik jest skopiowany o ile użytkownik może pisać w określonej zdalnej lokalizacji.
Skopiowaliśmy pojedynczy plik. A co jeśli chcemy skopiować część struktury katalogów. Powiedzmy podkatalog '/home/foo'. Użyjmy przełącznika -r (recursive). Musimy uważać jedynie na symlinki (o tym innym razem) ponieważ scp podąży za tymi linkami i zamiast skopiować informację o linku - przeniesie nam całą zawartość, na którą wskazuje symlink - a to może kosztować sporo miejsca i powielić nam struktury w filesystemie. Zamiast -r często warto najpierw skompresować zawartość, którą zamierzamy przenieść i nie przejmować się problemami związanymi z użyciem przełącznika -r.

Przypomniało mi się jeszcze o dd. Można też w pipe puścić wejście dd i z drugie strony tunelu ssh zapisać do pliku wynikowego. Ale o tym może innym razem.

Jest jeszcze conajmnie jeden problem, który jest związany z użyciem scp. Mianowicie gdy coś nam przerwie transmisję, to możemy śmiało zaczynać kopiowanie od zera - nic się nie da zrobić (przynajmniej tak mi się wydaje).

Warto wtedy pomyśleć o użyciu
  • rsync
Jak można wnioskować z nazwy - remote sync, czyli synchronizacja z systemem zdalnym. Narządko ma ciekawą właściwość, o której wspomnę kolejnym razem. Teraz powiem tylko tyle, że pozwala na szybkie i bezpieczne synchronizowanie zasobów, przy niewielkim zużyciu łącza w wypadkach gdy dane są w znacznym stopniu synchronizowane. Pozwala to ponowić przerwany transport od miejsca jego zakończenia. Polecam artykuł na wikipedii o rsync.

Jako przykład, z którego korzystałem przed chwilką podam:
rsync galeria.tar.bz2 -ave ssh ssh.linuxway.eu:/home/galeria.tar.bz2

Zgłębienie składni pozostawiam czytelnikowi.

1 komentarz: