Dropbox na pasta montada em NFS

4

Estou usando o Dropbox na minha caixa Ubuntu com a pasta Dropbox presente em uma unidade montada através de uma entrada em / etc / fstab. Eu estou encontrando ligeiro aborrecimento após cada reinicialização. Quando eu me logar, recebo uma mensagem dizendo que a pasta dropbox está faltando. No entanto, no momento em que eu realmente estou logado, a pasta já está lá como a montagem concluída em breve no processo de inicialização.

Quando eu simplesmente encerro o prompt e re-inicio o dropbox novamente, tudo fica sem problemas.

Então, minha pergunta é: como fazer o dropbox launcher esperar que todas as montagens / etc / fstab pendentes estejam completas?

A montagem do NFS está no mesmo servidor que é usado para servidor do hdd virtual do Ubuntu (VMWare), então o problema da inicialização da máquina e do compartilhamento não estar lá é extremamente improvável.

    
por petr 22.07.2013 / 17:08

2 respostas

2

Assumindo que você usou o link e não o pacote .deb, uma maneira possível de criar a caixa de depósito Espera do lançador seria com um script de shell. Na verdade, eu acho que você usou o pacote .deb desde que você disse que ele "corrigiu o gerenciador de arquivos". De qualquer forma, o script abaixo deve funcionar independentemente do método de instalação.

Tanto quanto eu posso ver, mountall(8) é executado como um "trabalho inicial" em Ubuntu (seja o que for). Ele é executado até que todos os sistemas de arquivos (incluindo o NFS) estejam montados. Podemos verificar se está sendo executado ou iniciá-lo. Quando o sinal USR1 é recebido por processo, todos os sistemas NFS são montados. Se as montagens forem bem-sucedidas, mountall morre. Este script deve ser executado como o superusuário.

/ usr / local / bin / dropbox-wait-mount

#!/bin/sh
runas={$1:-root}
mpid='pidof mountall'
if [ -z "$mpid" ] ; then
        mountall --daemon --no-events -q
        mpid='pidof mountall'
else
        echo mountall is running, going to notify it to mount nfs shares
fi

kill -USR1 $mpid # see /etc/init/mountall-net.conf and mountall(8)
mpid='pidof mountall'

while [ -n "$mpid" ]; do
        echo waiting for all mounts
        sleep 30
        kill -USR1 $mpid # see /etc/init/mountall-net.conf and mountall(8)
        sleep 1
        mpid='pidof mountall'
done

echo should be safe to run dropbox now
exec su $runas -c /home/$runas/.dropbox-dist/dropboxd

A página man aconselha a não confiar na funcionalidade de mountall , mas dada a natureza de "soluções temporárias" Eu acho que você pode usar isso por algum tempo.

E para alguma integração com trabalhos de início do Ubuntu:

/etc/init/dropbox.conf

# based on ssh.conf

description     "Dropbox daemon"
env RUNAS=root # use /etc/init/dropbox.override

#start on stopped mountall-net RESULT=ok
start on remote-filesystems
stop on runlevel [!2345]

respawn
respawn limit 10 5
umask 022

# 'sshd -D' leaks stderr and confuses things in conjunction with 'console log'
console none

pre-start script
    test -x /usr/local/bin/dropbox-wait-mount || { stop; exit 0; }
end script

# if you used to set SSHD_OPTS in /etc/default/ssh, you can change the
# 'exec' line here instead
exec /usr/local/bin/dropbox-wait-mount $RUNAS || { stop; exit 0; }

/etc/init/dropbox.override

env RUNAS=jaroslav

Este exemplo deve ser executado somente após todos os sistemas de arquivos de rede terem sido montados, mas também pode ser executado manualmente:

start dropbox #RUNAS=jaroslav
    
por 23.07.2013 / 21:01
0

Muito mais fácil apenas usar o autofs para montar o nfs para você, então é sob demanda e você não precisa se preocupar com a sincronização

aqui está minha configuração

$ grep home  /etc/auto.master 
/home2 /etc/auto.home

$ cat /etc/auto.home

dropbox -intr,nfsv4,soft NFS.intranet:/backups/dropbox

$ echo $HOME
/home2/dropbox

$ id
uid=1001(dropbox) gid=1001(dropbox) groups=1001(dropbox)
    
por 20.11.2015 / 14:26