O ponto de montagem não está funcionando bem

3

Temos um trabalho de rsnapshot automático todos os dias que escreve em um disco montado. Ultimamente, em vez de escrever no disco montado, ele fazia isso no sistema de arquivos principal, preenchendo lentamente o espaço disponível.

Existe uma opção que eu posso usar na definição de montagem (fstab) para garantir que as gravações não sejam feitas no disco principal se a montagem não estiver disponível? Ou é algo que eu tenho que colocar em um script relacionado ao instantâneo?

Obrigado

    
por littleadmin 09.12.2013 / 20:54

3 respostas

6

Quando um sistema de arquivos é montado, o ponto de montagem adquire as permissões do inode raiz desse sistema de arquivos. Se um sistema de arquivos não estiver montado, o diretório que atua como ponto de montagem é apenas outro diretório no sistema de arquivos pai.

Você pode usar este fato a seu favor para evitar gravar acidentalmente em um ponto de montagem que não pode ser montado:

  1. Desmonte o sistema de arquivos de destino.
  2. Altere as permissões do ponto de montagem para algo hostil.
    Algo como chmod 0000 /path/to/mountpoint deve funcionar bem.
  3. Remontar o sistema de arquivos de destino
    As permissões no ponto de montagem devem ser alteradas para corresponder às permissões do inode raiz do sistema de arquivos montado.

Observe que isso não funciona tão bem se root estiver fazendo a escrita e as verificações de permissão usuais forem ignoradas.
Você pode fazer algo semelhante com immutable flags ( schg ou uchg em Sistemas BSD , o atributo i em sistemas Linux ) mas eu não testei o comportamento dos atributos do sistema de arquivos pessoalmente. Intuitivamente, eles devem funcionar da mesma forma que as permissões do sistema de arquivos.

Observe que, idealmente, você deseja modificar seus scripts de backup para garantir que o sistema de arquivos apropriado seja montado, caso contrário, você terá que capturar e manipular os erros que as soluções acima gerarão.
Detectar que os sistemas de arquivos apropriados não estão na saída de mount pode ser uma solução mais robusta.

    
por 09.12.2013 / 21:39
2

A solução típica seria uma verificação no seu script, por ex. com o comando mountpoint .

if mountpoint -q $dir ; then
   echo "$dir is not mounted"
   exit 1
else
   echo "$dir is mounted" 
fi

Uma alternativa seria um teste com stat :

if [ 'stat -fc%t:%T "$dir"' != 'stat -fc%t:%T "$dir/.."' ]; then
    echo "$dir is mounted"
else
   echo "$dir is not mounted"
   exit 1
fi
    
por 09.12.2013 / 21:42
2

Um pouco velho, mas no caso de alguém encontrar isso.

Veja /etc/rsnapshot.conf

# If no_create_root is enabled, rsnapshot will not automatically create the
# snapshot_root directory. This is particularly useful if you are backing
# up to removable media, such as a FireWire or USB drive.
#
no_create_root  1
    
por 19.10.2014 / 15:22