Você está na página 1de 3

TUTORIAL | Sistemas de arquivos virtuais

Sistemas de arquivos virtuais

Ambiente virtual
TUTORIAL

O cmdfs cria sistemas de arquivos virtuais baseados


em uma rvore de diretrios original e possui integrao
com outros programas para converter dados em
tempo real. Conhea todo o poder desse sistema.
por Dennis Schreiber e Markus Feilner


uma tarefa comum: voc arquivos para um formato alternati- vimento do FUSE. Infelizmente, o
quer apenas que os usurios vo (de .doc, para .odt, por exemplo). script ./configure no ir notific-lo
vejam determinados arqui- Os sistema de arquivos cmdfs se o pacote est faltando, mas atra-
vos em um servidor de arquivos e baseado em FUSE [2] e lhe permite vs do comando aptitude install
que tambm possam alterar esses criar filtros de contedo sem a ne- libfuse-dev voc poder instalar o
arquivos dinamicamente durante o cessidade de o administrador passar pacote sem grandes problemas.
acesso. Da grande coleo de arqui- pela tarefa demorada e propensa Para o cdigo fonte do cmdfs,
vos no servidor, talvez voc queira a erros tarefa de criao de uma consulte o site da ferramenta. De-
que o departamento pessoal veja estrutura complexa de diretrios e pois que o pacote de desenvolvimen-
apenas os documentos pertencentes links. Embora a ltima verso do to do FUSE instalado, o familiar
a ele e o departamento financeiro cmdfs remonte a 2010, o aplicativo processo de baixar, descompactar,
apenas os arquivos relacionados funciona bem e atende o propsito executar os comandos ./configure,
equipe correspondente. a que se destina. make e make install ir cuidar da con-
O cmdfs [1] uma ferramenta figurao do cmdfs. Se voc prefere
til que cria um sistema de arquivos Instalao saber quais programas sero instala-
virtual, filtrando o contedo a partir A menos que o repositrio de sua dos pelo gerenciador de pacotes, use
de uma rvore de diretrios j exis- distribuio Linux oferea o pacote o comando checkinstall ao invs de
tente. Com o cmdfs possvel criar cmdfs por padro, a instalao requer make install.
um sistema de arquivos virtual que algum trabalho manual com o arquivo Aps concluir a instalao, os
contm apenas determinadas partes de cdigo fonte, j que, at agora, o administradores que precisam
do sistema de arquivos de origem que cmdfs no encontrou seu caminho ser membros do grupo fuse em al-
voc deseja disponibilizar aos usu- para os repositrios do Debian ou gumas distribuies podem usar
rios. No entanto, o cmdfs pode fazer do Ubuntu). o comando cmdfs para criar vises
muito mais, incluindo recursos de Para compilar o cdigo fonte, alternativas para arquivos ou dire-
filtragem para transformar os arqui- voc precisa do pacote de desenvol- trios usando uma sintaxe mode-
vos de acordo com especificaes
predeterminadas. Por exemplo, voc Listagem 1: Cmdfs no fstab
poderia usar o recurso de filtragem 01 []
do cmdfs para reduzir a resoluo 02 cmdfs#/Data /home/Benutzername/test fuse
das imagens digitais que estivessem user,mime-re=image/*,hide-empty-dirs,command=convert\
040-\040-sepia-tone\04090%\040- 0 0
grandes demais ou para converter

72 www.linuxmagazine.com.br
Sistemas de arquivos virtuais | TUTORIAL

lada no comando mount. O cmdfs


fornece uma estrutura de diretrio
somente leitura, modificvel pelo
administrador usando parmetros
no momento da montagem.

Filtro de arquivos
Como um exemplo do cmdfs em
ao, suponha que eu queira criar
um sistema de arquivos que monta
um diretrio de origem, mas apenas
mostra os arquivos de um tipo espe-
cfico, e que eu tambm queira isso
para esconder diretrios vazios ou
seja, os diretrios que no contm
Figura 1 O diretrio de origem est esquerda, e o diretrio montado com
arquivos do tipo especificado. Se o cmdfs est direita. O usurio s enxerga diretrios com arquivos
tipo de arquivo em que estou inte- que combinam com o tipo MIME de imagem.
ressado .jpg, devo usar o comando:
execute o comando file com a op- Pelo fato de a ferramenta convert
cmdfs ~/Data ~/test -o
extension=jpg,hide-empty-dirs o --mime-type: poder lidar com escalonamento sim-
file --mime-type ples, bem como executar diversas outras
A extenso do arquivo no diferen- LibreOfficeText.odt operaes, um parceiro perfeito para
cia maisculas de minsculas. Se voc LibreOfficeText.odt: application o cmdfs. A seguinte linha de comando
vnd.oasis.opendocument.text
estiver fazendo isso para vrios tipos gera todos os arquivos de imagem no
de arquivo, use uma lista separada ponto de montagem com uma altura
por ponto e vrgula entre aspas, como: Edio direta e largura mximas de 800 pixels:

cmdfs ~/Data ~/test -o de arquivos cmdfs ~/Data ~/test "-omime-re=


image/*, hide-empty-dirs,
extension="JPG;PNG", command=convert --resize
hide-empty-dirs O cmdfs pode fazer mais do que apenas
800x800\'^>' -"
filtrar dados. Voc tambm pode usar
O parmetro hide-empty-dirs diz ao programas externos para modificar os Arquivos menores mantm seu ta-
cmdfs para esconder diretrios que no arquivos. Por exemplo, voc pode usar manho original, conforme definido
combinam com as condies do filtro. o pacote de ferramentas ImageMagick pelo parmetro convert >, necessrio
Filtrar apenas pela extenso do arquivo [3] para converter imagens de um for- para mascarar a entrada para o cmdfs.
tem algumas desvantagens. Arquivos mato para outro. O ImageMagick um Se tudo isso funcionar como espera-
sem extenso, ou com uma extenso conjunto abrangente de ferramentas do, uma converso direta para spia
incorreta, no sero includos, e se voc para manipular imagens grficas. Uma tambm deve ser simples:
quiser ver todos os formatos de ima- delas a ferramenta convert, com a cmdfs ~/Data ~/test
gem possveis, sua lista de filtros ser qual possvel reduzir as imagens para "-omime-re=image/*,
muito longa. A viso resultante seria uma largura mxima de 800 pixels ou hide-empty-dirs,command=convert
--sepia -tone 90% -"
difcil de entender e provavelmente convert-las para tons de spia.
incompleta. Neste cenrio, a filtragem Como as ferramentas do Image- A integrao de programas como
por tipo MIME (Multipurpose Internet Magick aceitam parmetros que for- este requer alguns cuidados e ateno.
Mail Extensions, onde um de seus pa- matam a entrada e a sada dos dados,
rmetro o Content-Type, que define voc pode integr-las perfeitamente Cache e opes
o tipo de arquivo a ser considerado) com o cmdfs para, por exemplo, O cmdfs usa cache para acelerar
a melhor escolha (figura 1): converter automaticamente todos os alguns processos. Sistemas Debian
seus arquivos JPG para arquivos PNG armazenam este cache no diretrio
cmdfs ~/Data ~/test -o
mime-re=image/*,hide-empty-dirs (um problema potencial com esta /usr/local/var/cache/cmdfs/nome-
tcnica que todos os seus arquivos dousuario; no entanto, voc pode
Para identificar o tipo correto de PNG ainda teriam um sufixo .jpg, alterar esse comportamento usando
MIME para um arquivo especfico, o que confunde muitos aplicativos). o parmetro -o cache-dir. Durante

Linux Magazine #92 | Julho de 2012 73


TUTORIAL | Sistemas de arquivos virtuais

testes, uma boa ideia apagar regu- Quando uma mudana des- ~/teste. Neste caso, o cmdfs parecia
larmente o contedo do diretrio coberta, ele pode disparar aes entrar em um loop infinito em algu-
de cache. A excluso de arquivos automatizadas. Por exemplo, voc mas distribuies quando tentamos
em cache importante porque o pode informar seus usurios sobre acessar o ponto de montagem com,
cmdfs s cria arquivos em cache se as alteraes nos arquivos no dire- por exemplo, ls -l.
as datas de modificao dos arquivos trio de origem, ou pode iniciar Entramos em contato com o de-
forem alteradas. automaticamente uma ferramenta senvolvedor, mas seus esforos para
Embora seja possvel especificar de leitura OCR para documentos a resoluo dos problemas no che-
uma data de expirao do cache que so digitalizados. Se quiser usar garam a uma explicao para este
no ato da montagem do sistema este mecanismo em seus prprios comportamento antes da concluso
de arquivos usando o parmetro -o scripts, ser necessrio carregar as deste artigo. Uma possvel causa po-
cache-expiry, isto causar picos de ferramentas inotify a partir dos re- deria ser permisses incorretas para
sobrecarga no sistema. Quando o positrios apropriados [5]. o diretrio de cache (o Syslog relata
cmdfs acessar o ponto de montagem, Para uso permanente, talvez voc esse tipo de erro.)
recriar todos os arquivos no cache queira integrar o ambiente em seu
aps a data de validade ter expirado. arquivo /etc/fstab para montar o Faa testes
O parmetro -o oferece algumas sistema de arquivos virtual automa- Se preferir no usar seus prprios
outras opes teis alm do geren- ticamente. Por exemplo, adicione a arquivos como candidatos a teste,
ciamento de cache. A tabela 1 mos- entrada que est na listagem 1 para ou se no quiser criar arquivos de
tra algumas das mais importantes. o exemplo da converso das imagens teste por sua prpria conta e risco,
para spia. Para certificar-se de que a ainda possvel baixar arquivos de
Dinmico entrada seja montada como preten- exemplo da Internet.
Todos os exemplos at agora tm dido, tambm necessrio substituir Existe uma grande coleo de
sido estticos, o que significa que o os espaos em branco na linha de dados de teste, incluindo arquivos
cmdfs ir ignorar novos arquivos e comando com \040. de imagem, com tamanhos de at
diretrios da rvore de origem. No 35GB, em sites como o Digital Cor-
entanto, se voc adicionar o parme- Problemas estranhos pora [6]. Teste e divirta-se.
tro monitor opo -o, poder dizer Em nosso laboratrio, os nicos
ao cmdfs para monitorar os arquivos problemas que encontramos fo- Mais informaes
originais. Para fazer isso, o cmdfs de- ram quando o diretrio e o ponto
[1] Cmdfs: http://sourceforge.
pende de um mecanismo do kernel de montagem residiam no mesmo net/projects/cmdfs/
Linux chamado inotify [4]. local por exemplo, ~/Documentos e
[2] FUSE, Filesystem in
Parmetro Significado Userspace: http://fuse.
-o command=shell command Comandos Shell para converso direta sourceforge.net

-o extension=extension_1; [3] Imagemagick: http://


Extenso(es) que o cmdfs ir filtrar
extension_2 www.imagemagick.org/
-o path-re=regular_expression Expresso regular para filtrar por diretrio [4] inotify: http://linux.die.
-o mime-re=regular_expression Expresso regular para filtrar por tipo MIME net/man/7/inotify
Arquivos que no correspondem [5] Ferramentas inotify: https://
-o [no]link-thru aos filtros so exibidos como links github.com/rvoicilas/
simblicos no diretrio de destino inotify-tools/wiki/
Ocultar [no ocultar] diretrios [6] Arquivos de teste da
-o [no]hide-empty-dirs
correspondentes Digital Corpora: http://
-o [no]monitor Monitorar [no monitorar] mudanas digitalcorpora.org
-o cache-dir=directory Diretrio a ser usado para o cache
-o cache-size=MB Restringir o tamanho do cache (em MB) Gostou do artigo?
igo?
O nmero mximo de entradas Queremos ouvir sua opinio.
pinio.
-o cache-entries=count Fale conosco em
no diretrio de cache
cartas@linuxmagazine.com.br
zine.com
-o cache-expiry=seconds Prazo de validade do cache
Este artigo no nosso
sso site:
s :
Tabela 1 Parmetros do cmdfs. r/artic 7104
http://lnm.com.br/article/7104

74 www.linuxmagazine.com.br

Você também pode gostar