Blog (53)
Komentarze (3.2k)
Recenzje (0)
@command-dosAndroid & Linux - Zgrywamy dane z mobila

Android & Linux - Zgrywamy dane z mobila

04.04.2013 23:11

Jako, że na co dzień w domu korzystam z linuksów, od dnia kiedy w ręce wpadł mi tablet Samsunga z Androidem, myślałem sobie jak w łatwy sposób zgrać garść danych z tabletu na komputer z zainstalowanym, np. Ubuntu, nie wyciągając karty SD ze slotu urządzenia, lecz korzystając z WiFi... Pod uwagę brałem różne rozwiązania, a droga jaką przeszedłem poszukując tego satysfakcjonującego, wyglądała mniej więcej tak:

MTP vs MassStorage

Skąd w ogóle wziął się problem? Nie wystarczy wziąć kabel USB, podłączyć go do komputera i zgrać co trzeba? W przypadku linuksa nie jest to takie proste - już tłumaczę dlaczego. Urządzenia przechowujące dane i podpinane do portu USB komputera (pendrive'y, dyski przenośne) rozpoznawane są zazwyczaj, jako Urządzenia Pamięci Masowej (USB MassStorage) i z tymi na linuksie nie ma problemu. Tak też było z Androidem, aż do momentu wydania wersji HoneyComb, w której postanowiono zastąpić MassStorage protokołem MTP (Media Transfer Protocol). Obsługa tego protokołu pod linuksem działa tragicznie, żeby nie powiedzieć, że w ogóle nie działa - przynajmniej mnie nie udało się dorwać do danych via MTP na linuksie. Pomysł wykorzystania gMTP do transferu danych z Androida do Ubuntu szybko zweryfikowała rzeczywistość - po kilku próbach zrezygnowałem i porzuciłem to rozwiązanie.

Może KiesAir?

Niezłym rozwiązaniem wydaje się być KiesAir. KiesAir pobieramy na urządzenie z Androidem z Googlowego sklepu Play za darmo. Po potwierdzeniu i wyrażeniu zgody instalujemy program, jak każdy inny w systemie od Googli.

Program KiesAir jest bardzo łatwy w użyciu i prawdopodobnie część użytkowników na tym etapie zakończy czytanie moich przygód z przesyłaniem danych z androida do linuksa, znajdując to czego szukali. Jak działa program? Wręcz banalnie: po odpaleniu program prosi nas, abyśmy połączyli się komputerem do tej samej sieci, do której podłączony jest nasz tablet i wprowadzili konkretny adres w przeglądarce. Adres ten to nic innego, jak adres IP naszego tabletu, który nasłuchuje połączenia na porcie 8080. W moim przypadku jest to http://10.10.10.103:8080. Po wykonaniu powyższej czynności, w oknie przeglądarki wyświetli się monit o podanie kodu PIN, który właśnie został wygenerowany i wyświetlony na ekranie tabletu.

Po wpisaniu PIN'u oczom naszym ukazuje się istny kombajn do zarządzania zawartością naszego tabletu. Mamy dostęp do muzyki, filmów, zdjęć, dzwonków, zakładek, spisu połączeń, kalendarza, jak i eksploratora plików. Pliczki możemy pobierać, wysyłać, teoretycznie przeglądać (nie udało mi się pooglądać filmików), lecz wszystko to jest, według mnie, jakieś takie "przerośnięte". Owszem, jest to ładne i czytelne, ale według mnie, średnio funkcjonalne. Do poprawnego działania niezbędna jest zainstalowana java, a wszystko działa tak jakoś ślimaczo - mam wrażenie, że większość pakietów podróżujących przez sieć dzięki KiesAir, robi to bez większej potrzeby i bezsensownie zapycha naszą sieć - co kto lubi, ale ja nie takiego rozwiązania szukałem...

KiesAir Interface
KiesAir Interface

zwyczajnie zgrać pliczki...

Zawsze byłem pod wrażeniem, jak sprawnie inne udziały potrafią się zintegrować z systemem plików na linuksie. Czy to udział sieciowy NFS, CIFS, czy vFAT, NTFS - wszystko to możemy podpiąć sobie do, np. jakiegoś podkatalogu w domowym folderze użytkownika. Po podmontowaniu właściwego udziału, zwyczajnie wchodzimy do katalogu i już oglądamy zawartość urządzenia/lokalizacji sieciowej - wszystko w obrębie jednego drzewa katalogów, wręcz genialne.

Idąc tym tokiem rozumowania, chciałem początkowo tak podmontować androidowy MTP, lecz jak to opisałem powyżej, bez większych sukcesów. Z pomocą przyszedł program WebDav Server, który udostępnia zawartość tabletu w sieci przez protokół HTTP. WebDav miał pełnić funkcje podobne do FTP, ale przy okazji miał rozwiązywać szereg innych problemów, z którymi borykał się ten znany protokół. Jednym z problemów były zapory internetowe, z którymi WebDav (w odróżnieniu od FTP) radzi sobie bezproblemowo, bo transmisja zawartości odbywa się tym samym protokołem, co przesyłanie stron internetowych, a te (jak wiemy) rzadko są przez adminów blokowane. Znając mniej więcej założenia WebDav, postaram się więc podejrzeć i zgrać pliczki z tabletu z jego pomocą.

WebDAV Server
WebDAV Server

WebDav Server

Jak już wspomniałem, do osiągnięcia celu użyłem programu od The Olive Tree: WebDav Server. Pobieramy go i instalujemy na tablet za pomocą sklepu Play - program jest rozpowszechniany za darmo. Uruchamiamy zainstalowany program i wchodzimy do ustawień (settings). Zanim udostępnimy zawartość tabletu, musimy ustawić kilka opcji:

  • Network interfaces: ustawiamy Loopback
  • Port: możemy ustawić, np. 8080
  • Use Password: Zaznaczamy, aby nikt niepowołany zgrał nasze dane
  • Username: podajemy nazwę użytkownika
  • Password: wprowadzamy hasło
  • Home directory: ustawiając na Root (/) mamy dostęp do wszystkich pliczków w tablecie
WebDAV Settings
WebDAV Settings

Dalsze parametry pozostawiamy bez zmian - nie mają większego znaczenia. Mając ustawione opcje, powracamy do ekranu głównego, klikamy na czerwoną ikonę i uruchamiamy serwer, a stan uruchomienia będzie obrazować zielona ikonka w tray'u, za pomocą której możemy ponownie wywołać okno programu WebDAV Server.

davfs

Mając uruchomiony serwer WebDAV na tablecie, przechodzimy do komputera i naszego linuksa. W moim przypadku jest to Ubuntu, więc opis dalszej części, siłą rzeczy, oparty będzie o system Ubuntu. Aby obejrzeć udostępnioną zawartość tabletu programem WebDAV, musimy zainstalować obsługę davfs na linuksie.

Terminal - montowanie udziału
Terminal - montowanie udziału

Na Ubuntu robimy to (za pomocą konsoli) tak:

sudo apt-get install davfs2

Kiedy mamy już zainstalowany davfs w systemie, musimy utworzyć katalog, do którego będziemy montować udział:

mkdir ~/Android

Mając katalog, możemy przystąpić do zamontowania w nim udostępnianego udziału z tabletu. Tablet w mojej sieci ma adres 10.10.10.103 (można sprawdzić to w ustawieniach połączenia):

sudo mount -t davfs http://10.10.10.103:8080 ~/Android

i voila...

Android IP
Android IP

Teraz możemy za pomocą naszego ulubionego menadżera plików przejść do katalogu ~/Android i zobaczyć w nim zawartość tabletu, z którego możemy teraz zgrać co trzeba na dysk naszego komputera będącego pod kontrolą pingwina.

Midnight Commander
Midnight Commander

Może metoda ta nie jest jakaś nadzwyczajna czy imponująca, ale jest (IMHO) genialna w swej prostocie. Robi co trzeba, nie generując zbędnego ruchu sieciowego podczas działania. Wydajność, czytelność, pełna integracja z drzewem katalogów - nic więcej do szczęścia nie potrzeba. Ściąganie plików z androida na linuksa to teraz czysta przyjemność - o takie właśnie rozwiązanie mi chodziło. Oczywiście, całość można sobie ułatwić, tworząc skrypty gotowe do uruchomienia, które automatycznie bez klepania w konsoli zrobią co trzeba, ale to nie jest aż tak bardzo konieczne - ileż razy dziennie łączymy się z tabletem w celu pobrania jakiejś słitfoci?

Sweet fotka
Sweet fotka
Wybrane dla Ciebie
Komentarze (37)