Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

PHP CONFERENCE

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Descobrindo em que partição reside um arquivo ou diretório

Colaboração: Juan Carlos Castro y Castro

Data de Publicação: 16 de September de 2008

Esta função para shell script retorna em que dispositivo (partição, compartilhamento remoto etc.) reside um arquivo ou diretório. Útil para determinar se uma operação de "move" de um diretório por outro será "atômica" ou se o SO será obrigado a fazer uma cópia e apagar o original. Também pode ser usada para descobrir se um determinado arquivo está num HD local ou num ponto de montagem remoto.

  whichfs () {
        if ! LANG=C df -P "$1" >/tmp/whichfs.$$ 2>&1; then
                LANG=C df -P "`dirname $1 2>/dev/null`" >/tmp/whichfs.$$ 2>&1
        fi
        RETVAL=$?
        if [ $RETVAL -eq 0 ]; then
                tail -n +2 /tmp/whichfs.$$ | cut -d ' ' -f 1
                RETVAL=$?
        fi
        rm -f /tmp/whichfs.$$
        return $RETVAL
  }

Exemplos de uso:

  if [ `whichfs /home` = `whichfs /` ]; then
        echo "home em partição separada"
  else
        echo "home na partição raiz"
  fi
  
  if [ `whichfs $ARQ_ORIGEM` = `whichfs $ARQ_DESTINO` ]; then
        mv $ARQ_ORIGEM $ARQ_DESTINO
  else
        echo "PERIGO: sistema está tentando mover '$ARQ_ORIGEM' para um filesystem diferente."
  fi
  
  if whichfs "$DIR_DESTINO" | grep ^/dev >/dev/null; then
        echo "Este diretório fica nesta máquina"
  elif whichfs "$DIR_DESTINO" | grep ^// >/dev/null; then
        echo "Este diretório fica num compartilhamento Windows remoto"
  elif whichfs "$DIR_DESTINO" | grep '^[^/].*:/' >/dev/null; then
        echo "Este diretório fica num compartilhamento NFS remoto"
  else
        echo "Nao faço a mais vaga idéia de onde esta %@#&* fica."
  fi

Estou consciente de que existe uma maneira melhor de fazer isto, usando funções em C, como o utilitário df sem dúvida deve fazer para exibir a sua saída. Se algum visitante souber como fazer isso, a informação será bem-vinda nos comentários.


Tutorial de atualização do OpenBSD

Colaboração: Geison Porfirio

Tutorial sobre atualização de versão do OpenBSD.

Referência: http://www.openbsd-br.org/?q=node/71

Veja a relação completa dos artigos de Juan Carlos Castro y Castro

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (542 votos)

Opinião dos Leitores

euzildo
16 Set 2008, 10:30
Nossa util como um disquete de 5 1/4
Anderson Lizardo
16 Set 2008, 08:42
Versão alternativa:

whichfs () {
LANG=C df -P "$1" | awk '/%/{print $6}'
return $PIPESTATUS
}

A variável PIPESTATUS contém o código de erro do comando à esquerda do pipe.
Fernando Scherrer
16 Set 2008, 07:42
Haw!

<pre>
scherrer@home:~/ man df
DF(1) User Commands DF(1)

NAME
df - report file system disk space usage

SYNOPSIS
df [OPTION]... [FILE]...

DESCRIPTION
This manual page documents the GNU version of df. df displays the
amount of disk space available on the file system containing each file
name argument.
...
</pre>

Logo:

<pre>
</pre>
scherrer@home:~$ df .bash_history
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 48070504 44058552 1570072 97% /
scherrer@home:~$ df instalacoes
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 46149444 37885828 5919332 87% /mnt/sda2
</pre>

Repare a coluna "Mounted on", o .bash_history está no meu / e o diretório instalacoes está no meu /mnt/sda2. Como é um df, temos também o Filesystem onde o arquivo está, se for um compartilhamento samba vai aparecer a origem também.

Valeu.
Wagner Macêdo
13 Set 2008, 23:00
Muito boa dica, valeu.

E parabéns!
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

English for Reading and Listening
Enriqueça o seu vocabulário recebendo diariamente mensagens divertidas em inglês, com áudio em MP3.
Saiba mais

Biblioteca

Desenvolvendo Websites com PHP
Por Juliano Niederauer

O Monge e o Executivo: uma História sobre a Essência da Liderança
Por James C. Hunter

Extreme Programming
Por Vinicius Manhaes Teles

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson

O Vendedor de Sonhos
Por Augusto Cury

Segurança de Redes em Ambientes Cooperativos
Por Emilio Tissato Nakamura e Paulo Licio de Geus

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Utilizando UML e Padrões
Por CRAIG LARMAN

Sistema de Banco de Dados
Por Abraham Silberschatz

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

Redes de Computadores e a Internet
Por James F. Kurose e Keith W. Ross

O Segredo
Por Rhonda Byrne

Os Segredos da Mente Milionária
Por T. Harv Eker

Construindo Sites com CSS e (X)HTML
Por Mauricio Samy Silva

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

Expressões Regulares: Uma Abordagem Divertida
Por Aurélio Marinho Jargas

Qualidade de Software
Por Andre Koscianski Michel dos Santos Soares

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson