Zastosowania FUSE cz.1 – cmdfs

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

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Poprzedni post

MC: szybkie przełączanie sortowania i coś jeszcze

Następny post

Seven Kingdoms: AA

Powiązane posty