Linux.pl

 START  |  BLOG  |  FORUM  |  POCZTA  |  HOSTING

Hosting Linux.pl
Smaller Default Larger
Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

Z pewnością wśród technologii systemów plików, FUSE (Filesystem in USErspace) jest jednym z przydatniejszych narzędzi jakie do tej pory stworzono. Na jego bazie powstało już wiele ciekawych i pożytecznych projektów, z których najbardziej popularny to ntfs-3g - pozwalający montować w trybie odczytu i zapisu partycje NTFS.

Postanowiłem przybliżyć nieco najciekawsze zastosowania FUSE - w szczególności takie, o których mało kto słyszał, a mogą być bardzo przydatne do codziennej pracy.

Na pierwszy ogień pójdzie dzisiaj cmdfs - "poleceniowy system plików", który pozwala na wykonywanie określonych poleceń na wybranych plikach. Dzięki zastosowaniu cmdfs możemy w określonym katalogu otrzymywać automatycznie przetworzone pliki, np. przeskalowane i obrobione obrazki, odpowiednio sparsowane pliki tekstowe, wygenerowane pliki PDF itp.

Strona domowa projektu:

http://cmdfs.sourceforge.net

Składnia polecenia:

cmdfs <katalog źródłowy> <miejsce montowania> [opcje]

opcje:

-o command=<polecenie shell>
    uruchamiane polecenie [domyślnie: cat]

-o extension=jpg[;gif[;...]]
    wybrane rozszerzenia plików na których polecenie ma operować

-o path-re=<wyrażenie regularne>
    wyrażenie regularne określające ścieżki do zastosowania polecenia

-o mime-re=<wyrażenie regularne>
    wyrażenie regularne określające typ plików do zastosowania polecenia (jak
    zwracane przez file -b --mime-type)

-o link-thru
    opcja wyświetlająca linki do plików źródłowych, które normalnie są niewidoczne

-o hide-empty-dirs
    opcja blokująca wyświetlanie katalogów nie zawierających wybranego rodzaju plików

-o monitor
    śledzenie na bieżąco katalogu źródłowego

-o cache-dir=<katalog>
    zmiana położenia katalogu tymczasowego dla tworzonych plików (domyślnie
    /tmp/cmdfs-cache.)

-o cache-size=<rozmiar w Mb>
    ograniczenie rozmiaru katalogu tymczasowego do określonej wielkości

-o cache-entries=<liczba>
    maksymalna liczba plików jaka może być utworzona w katalogu tymczasowym,
    w przypadku włączenia tej opcji najstarsze pliki będą usuwane [domyślnie bez limitu]

-o cache-expiry=<czas w sekundach>
    czas po jakim pliki zostaną zastąpione przez nowe [domyśnie bez limitu]

Przykład:

Najprostszym przykładem będzie automatyczne skalowanie obrazków za pomocą polecenia convert, wchodzącego w skład pakietu ImageMagick. Zakładamy, że mamy katalog "/home/user/fotki/" do którego wrzucamy oryginalne zdjęcia, zaś w katalogu "/home/user/miniaturki/" chcemy mieć miniaturki tych zdjęć - bez ręcznego ich skalowania.

W takim przypadku polecenie, które będzie opcją montowania może wyglądać następująco:

command=convert - -resize 20% -

Dobrze jest również określić zakres plików, które powinny być przetwarzane - nie planujemy przecież skalować przypadkowo umieszczonych tam plików MP3:

extension=jpg;gif;png

Teraz wystarczy zamontować nasz system plików poleceniem:

cmdfs /home/user/fotki /home/user/miniaturki "-ocommand=convert - -resize 20% -,extension=jpg;gif;png"
 

Oczywiście po restarcie systemu nasz system plików zniknie, więc żeby przy każdym starcie systemu był on montowany musimy dodać odpowiedni wpis do pliku /etc/fstab:

cmdfs#/home/user/fotki /home/user/miniaturki fuse user,allow_other,command=convert\040-\040-resize\04020%\040-,monitor,extension=jpg;gif;png 0 0

Pamiętajmy, aby przy tworzeniu wpisu zamienić spacje na znaki \040

To tylko prosty przykład, mam jednak nadzieję, że twórczy Czytelnicy pochwalą się innymi ciekawymi zastosowaniami cmdfs - z chęcią je opublikuję, lub proszę się chwalić w komentarzach.

Dodaj komentarz


Kod antyspamowy
Odśwież