Logotipo Dicas-L, por Ricardo Burile

Busca

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

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

 

Zura! - Busque. Compare. Compre. Zura! - Busque. Compare. Compre.

Outras ofertas

TV LCD

TV Plasma

DVD Player

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 (693 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*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
Engenharia de Software na Prática


Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais

Grupo MBS