Eu instalei o Rclone e configurei minha conta do OneDrive com sucesso, seguindo esse vídeo tutorial.
No final ele comenta que criou um script para montar automaticamente a unidade no Dolphin, porém eu não faço ideia de como criar e executar esse script na inicialização do Manjaro
Há N maneiras de fazer isso, de acordo com o seu ambiente gráfico (e mais ainda se você usar um WM) – por isso ele deixou como um exercício para o leitor . Recomendaria olhar se ele não possui uma interface “fácil” em que você pode simplesmente jogar o caminho script.
Enquanto isso, vai o método “terminal” praticamente universal (o exemplo envolve outro programa, mas é só adaptar as linhas Name
e Exec
).
@Capezotte estou usando Manjaro com KDE Plasma 6.3.4.
Notei no vídeo que a pasta do “OneDrive” está montada na categoria “Dispositivos” do “Dolphin”, então pensei que se eu fosse até “Configurações do sistema => Discos e câmeras => Montagem automática de dispositivos” eu enxergaria a unidade “OneDrive” , em “Dispositovos conectados” e marcaria a opção de “Na inicialização”, mas infelizmente nãoo é tão facil assim…
Crie um arquivo de texto com o conteúdo do script do vídeo (rclone ...
), salve-o e marque como executável nas permissões (igual você faria com um programa baixado da internet).
Abra as configurações do sistema, vá em “Sistema → Iniciar Automaticamente”. Clique em “Adicionar novo → Script de início de sessão”, e selecione o arquivo que você criou na etapa anterior.
@Capezotte , ao executar o script, aparece a notificação como esperado, mas o OneDrive não é montado!
O que estou fazendo de errado?
Em termos de conteúdo e permissões do arquivo, nada, tanto que a segunda linha do script roda.
Qual a saída ao copiar e colar a linha com rclone ...
, tirando o &
no final, e rodar no terminal? Qual o processo que você normalmente usa para montar o OneDrive manuamente?
Do jeito que o script está montado, a mensagem de “Montado com sucesso” sai independente do real sucesso do comando, ou mesmo do comando estar instalado.
Daria para adaptar para as mensagens de erro que normalmente vão para o terminal saírem na notificação, mas são outros 500 e como fazer exatamente varia de acordo com o comportamento do programa…
@Capezotte , por algum motivo nem colando diretamente no terminal está dando certo
Tradução da mensagem de erro:
CRÍTICO: Erro fatal: falha ao montar o sistema de arquivos FUSE: “/home/usuario/OneDrive” não está vazio, use
--allow-non-empty
para montar mesmo assim
Se a pasta não estiver já sincronizando, provavelmente em algum momento você colou arquivos nela sem querer. Abra a pasta, mova os arquivos para outro lugar (aperte Ctrl+H para ver os arquivos ocultos também), e rode o comando/script novamente.
Isso, ou adicione adicione --allow-non-empty
depois do rclone
para ignorar essa condição, porém não recomendaria fazer isso, pois você vai perder a pasta vazia como indicador de que a montagem falhou.
Dei uma lida na documentação do programa e acredito que o script poderia ficar assim:
#!/bin/sh
#
# Passando --daemon para o programa, em vez de usar o palavra-chave `&` do
# shell, o próprio programa vai ao fundo, no próprio tempo.
# Isso traz dois benefícios:
# 1. O script "se segura" até ter certeza de que o programa de fato existe e
# foi executado.
# 2. Podemos usar o if/&&/|| para reagir a erros (enquanto na versão com `&` a
# mensagem sai independente, com ou sem sucesso)
#
if rclone --daemon --vfs-cache-mode=writes mount OneDrive: ~/OneDrive; then
notify-send "OneDrive conectado" "Microsoft OneDrive montado com sucesso!"
else
notify-send "Falha ao montar OneDrive!" "Rode o comando manualmente e analise a mensagem de erro"
fi
EDIT: acrescentado um igual no script.
Ainda não mostra a mensagem de erro exata, mas pelo menos sinaliza corretamente se deu certo ou errado.
@Capezotte, você tem razão, havia um arquivo oculto e tenho quase certeza da origem desse arquivo, como alterei o ícone da pasta, para o ícone de uma pasta com nuvem, deve ter criado esse arquivo, pois foi só eu remover o arquivo, que a pasta voltou para o ícone de pasta padrão, executei o script e a unidade de rede foi montada!
Será que se eu fizer o upload desse arquivo oculto para minha conta do OneDrive via web, quando eu iniciar o sistema, a unidade for montada automaticamente, esse arquivo puxado para a pasta OneDrive do PC, o ícone da pasta será alterado para o ícone de pasta com nuvem?
Algo que achei estranho que no vídeo, o OneDrive dele foi montado na categoria de “Dispositivos” com o ícone de um pendrive, representando uma unidade USB, já o meu está sendo montado na categoria “Rede”.
Não sei dizer. A princípio acredito que sim, porém fiz um breve teste usando o backend local (de uma pasta para outra da mesma máquina) dele e não funcionou.
O vídeo tem praticamente dois anos, pode ser que esse comportamento tenha mudado desde então. Acho até que o comportamento atual faz mais sentido, pois você está montando, bem, um conjunto de arquivos hospedados remotamente.
Não garante que o OneDrive foi montado com sucesso antes de mostrar a notificação. Isso porque:
O comando rclone… está sendo executado em segundo plano (&).
notify-send é executado logo em seguida, sem saber se o rclone realmente conseguiu montar.
Tem como corrigir esse bug.
Outro ponto importante é se existe registros de vazamentos de dados envolvendo o Rclone?
Por padrão, as credenciais armazenadas no arquivo rclone.conf são legíveis.
Dica: Pode chama o rclone na inicialização do sistema.
@Capezotte, upei o arquivo “.directory” no OneDrive via Web e infelizmente não funcionou.
Como ficaria o script ao acrescentar --allow-non-empty
para ignorar o arquivo “.directory” no momento da montagem do OneDrive?
Qual a função do =
que você acrescentou?
Basta colocar essa palavra logo depois de rclone
. Isso vale para qualquer opção (“palavra” que começa com hífen e sinaliza para o programa mudar de comportamento).
Porém, não adiantaria. Devido à natureza da operação de montar, o .directory
da pasta original (todo o conteúdo dela, na verdade) iria ficar inacessível e o Dolphin pararia de mostrar o ícone. O arquivo (e o ícone) só voltariam se você desmontasse a pasta, mas daí não daria para usar o OneDrive
Achei um relato de um usuário com o mesmo problema, e os desenvolvedores do rclone não veem solução para esse problema que não envolva tornar o rclone desnecessariamente complicado.
Logo deveria ser levado aos desenvolvedores do KDE para ver o que eles acham. Concordo que é muito estranho: nos meus testes espelhando uma pasta de um lado pro outro, a pasta original tem o ícone, mas o espelho não…
Esse igual não era para ser necessário, parece haver um bug em como o rclone
analisa as opções.
Tangente de shell script
Convencionalmente, programas são chamados em scripts nesse formato:
programa | opções | argumentos |
---|---|---|
rclone |
--vfs-cache-mode writes |
mount OneDrive: ~/OneDrive |
rclone |
--daemon --vfs-cache-mode=writes |
mount OneDrive: ~/OneDrive |
No caso do rclone
, a primeira palavra dos argumentos deve ser um “comando”.
Quando há uma opção longa (que começa com dois hífens, no caso --vfs-cache-mode
) que pede um complemento (aqui, writes
), essas duas formas de expressar devem ser equivalentes:
# duas "palavras", separadas por espaço
rclone --vfs-cache-mode writes mount OneDrive: ~/OneDrive
# numa "palavra" só, unidos por `=`
rclone --vfs-cache-mode=writes mount OneDrive: ~/OneDrive
No código do vídeo, tanto faz escrever qualquer uma dessas linhas.
Igualmente, as duas linhas a seguir deveriam ser equivalentes:
rclone --daemon --vfs-cache-mode writes mount OneDrive: ~/OneDrive
rclone --daemon --vfs-cache-mode=writes mount OneDrive: ~/OneDrive
A versão sem =
não funcionou, alegando que:
comando desconhecido
writes
A análise que ele fez foi:
programa | opções | argumentos |
---|---|---|
rclone |
--vfs-cache-mode |
writes mount OneDrive: ~/OneDrive |
Porém, isso é contraditório, no manual diz que --vfs-cache-mode
precisa de um complemento; obviamente writes
é o complemento. Com o =
contornamos o bug pois o programa não tem que pensar se a palavra writes
é o primeiro argumento (e portanto, o “comando”), ou um complemento para a última opção, ela já está unida à opção que ela complementa.