Dropbox в папке, смонтированной в NFS

Я использую Dropbox на моем поле Ubuntu с папкой Dropbox, присутствующей на диске, смонтированном через запись в /etc / fstab. Я сталкиваюсь с небольшим раздражением после каждой перезагрузки. При входе в систему появляется сообщение о том, что папка dropbox отсутствует. Тем не менее, в то время, когда я на самом деле вошел в систему, папка уже есть, так как монтирование завершено довольно скоро в процессе загрузки.

когда я просто выйти из приглашения, а затем повторно запустить dropbox снова, все без затруднение.

Итак, мой вопрос - как я могу заставить Dropbox launcher ждать завершения всех ожидающих монтирования/etc / fstab?

крепление NFS находится на том же сервере, что и сервер виртуального жесткого диска Ubuntu (VMWare), поэтому проблема загрузки машины и отсутствия доли крайне маловероятна.

28
задан petr
05.01.2023 16:28 Количество просмотров материала 3279
Распечатать страницу

2 ответа

предполагая, что вы использовали https://www.dropbox.com/download?plat=lnx.x86 и не то .deb пакет, возможный способ сделать Dropbox launcher ждать будет с помощью сценария оболочки. на самом деле, я думаю, что вы использовали .пакет deb, так как вы сказали, что он"исправил файловый менеджер". В любом случае, приведенный ниже скрипт должен работать независимо от способа установки.

насколько я вижу, mountall(8) выполняется как "задание upstart" в Убунту (что бы это ни было). Он работает пока не будут смонтированы все файловые системы (включая NFS). Мы можем проверить, что он работает или запустить его. Когда USR1 сигнал получен, что процесс, все системы NFS смонтированы. Если маунты удачны,mountall умрет. Этот сценарий должен выполняться от имени суперпользователя.

/usr/местные/Бен/на Dropbox-подожди-гора

#!/bin/sh
runas={:-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

man-страница советует не полагаться на функциональность mountall, но с учетом характера из "временных решений" I думаю, ты сможешь использовать это некоторое время.

и для некоторой интеграции с Ubuntu up-start заданий:

в/etc/инит/с 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/инит/с Dropbox.override

env RUNAS=jaroslav

этот пример следует запускать только после монтирования всех сетевых файловых систем, но его также можно запустить вручную:

start dropbox #RUNAS=jaroslav
2
отвечен Ярослав Рахматуллин 2023-01-07 00:16

гораздо проще просто использовать autofs для монтирования nfs для вас, то его по требованию, и вам не придется беспокоиться о синхронизации

вот мой конфиг

$ 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)
0
отвечен chris scott 2023-01-07 02:33

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх