OneDrive no Ubuntu: sincronize sem baixar a pasta Documents/Videos e ative a sincronização automática (skip\dir, sync\list e systemd)

Quer manter o OneDrive sincronizado no Ubuntu sem baixar a pasta Documents/Videos (≈31 GB)? Veja como filtrar a sincronização com skipdir ou synclist e manter tudo atualizado automaticamente via --monitor ou um serviço systemd de utilizador — com segurança e sem comandos repetitivos.

Índice

Visão geral: problema e solução

Problema: você quer que o OneDrive no Ubuntu não baixe a pasta grande Documents/Videos, mas continue sincronizando todo o resto.

Solução: o cliente “OneDrive Client for Linux” (projeto comunitário) possui filtros nativos no lado do cliente. Você controla o que baixar/ignorar via:

  • skip_dir — ignora pastas;
  • skip_file — ignora ficheiros/arquivos por padrão/padrão (glob);
  • sync_list — lista de inclusão (apenas o que está nela será sincronizado).

Para o caso “excluir apenas Documents/Videos”, o caminho mais simples e robusto é configurar skip_dir e fazer uma ressincronização.

Resumo rápido (para ir direto ao ponto)

  1. Edite ~/.config/onedrive/config e adicione: skip_dir = "Documents/Videos" skipdirstrict_match = true
  2. Reaplique as regras com ressincronização: onedrive --resync --sync
  3. Automatize:
    • No terminal: onedrive --monitor
    • Como serviço de utilizador: systemctl --user enable onedrive systemctl --user start onedrive systemctl --user status onedrive

Instalação e pré‑requisitos

O cliente costuma estar nos repositórios atuais das principais distros. No Ubuntu, experimente:

sudo apt update
sudo apt install onedrive

Verifique a versão:

onedrive --version

No primeiro arranque (por exemplo, com onedrive --synchronize ou onedrive --sync), será solicitado o login/consentimento Microsoft. Siga as instruções no terminal (fluxo de autenticação por navegador ou código de dispositivo).

Configurar o filtro para ignorar Documents/Videos (método recomendado)

Os filtros residem no ficheiro de configuração por utilizador:

mkdir -p ~/.config/onedrive
nano ~/.config/onedrive/config

Adicione as linhas abaixo (adequadas ao seu caso):

# Ignorar a pasta grande situada na sua raiz do OneDrive
skip_dir = "Documents/Videos"

Opcional: exige correspondência exata do caminho, evitando falsos positivos

skip\dir\strict\_match = true 

Importante: caminhos em skip_dir são relativos à raiz remota do seu OneDrive (não ao diretório local). Se no OneDrive você tem “Documents/Videos”, é exatamente isso que deve declarar.

Aplicar as novas regras (ressincronização)

Sempre que você altera skipdir, skipfile ou cria/edita um sync_list, é necessário executar uma ressincronização completa para que o cliente recalcule o estado:

onedrive --dry-run --resync --sync   # simulação segura
onedrive --resync --sync             # execução efetiva

Use --dry-run antes para ver o que aconteceria (adições, eliminações, downloads) sem alterar nada.

Como confirmar que a exclusão está ativa

  1. Mostre a configuração efetiva: onedrive --display-config | sed -n '/skipdir/p;/skipdirstrictmatch/p'
  2. Faça um dry‑run: onedrive --dry-run --resync --sync | grep -i videos || echo "OK: nada com 'Videos' será baixado"

Alternativa: sync_list (lista de inclusão)

Se pretende manter no Ubuntu apenas um subconjunto pequeno e controlado do seu OneDrive, use um sync_list. Crie o ficheiro abaixo e liste, uma por linha, as pastas/ficheiros a incluir:

nano ~/.config/onedrive/sync_list

Exemplo de conteúdo do sync_list:

Documents/Projetos
Pictures
Notas.md

Depois disso, ressincronize:

onedrive --dry-run --resync --sync
onedrive --resync --sync

Observação: quando existe synclist, o cliente passa a sincronizar somente os itens listados. Para muitos casos, skipdir é mais prático (mantém tudo, exceto o que for excluído).

Por que evitar --single-directory neste cenário

--single-directory "<pasta>" sincroniza uma única pasta por execução. Isso significa repetir o comando para cada pasta desejada e lembrar de novas pastas que surgirem. Os filtros de configuração (skipdir ou synclist) resolvem o problema de forma permanente e sem microgestão.

Tabela de decisão: qual filtro usar?

OpçãoO que fazQuando usarExemplo
skip_dirIgnora pastas específicas na nuvem.Exclusão pontual de um diretório grande (Documents/Videos).skip_dir = "Documents/Videos"
skipdirstrict_matchExige correspondência exata do caminho.Evitar que Videos em outras árvores seja ignorado por engano.skipdirstrict_match = true
skip_fileIgnora ficheiros por padrão (glob).Excluir temporários, caches, *.iso, etc.skip_file = ".tmp|.iso"
sync_listLista de inclusão: sincroniza somente o que estiver listado.Quando o conjunto desejado é pequeno e controlado.~/.config/onedrive/sync_list com entradas linha a linha

Sincronização automática (sem comandos manuais)

Opção A — --monitor no terminal

Para manter o OneDrive atualizado em tempo real, rode:

onedrive --monitor

Esse modo observa alterações locais (via inotify) e sincroniza periodicamente com a nuvem. Deixe a janela aberta (ou use um multiplexador como tmux/screen).

Opção B — Serviço systemd de utilizador

A maioria dos pacotes já instala uma user unit. Tente:

systemctl --user enable onedrive
systemctl --user start onedrive
systemctl --user status onedrive

Se a unidade não existir no seu pacote, crie uma unit de utilizador simples para iniciar o monitor ao fazer login:

# ~/.config/systemd/user/onedrive.service
[Unit]
Description=OneDrive Sync (user) - monitor
After=network-online.target

\[Service]
ExecStart=/usr/bin/onedrive --monitor
Restart=on-failure
RestartSec=10

\[Install]
WantedBy=default.target 

Ative e inicie:

systemctl --user daemon-reload
systemctl --user enable --now onedrive

Dica: se quiser que a sincronização continue mesmo sem sessão gráfica aberta (em servidores, por exemplo), habilite o linger para o seu utilizador:

sudo loginctl enable-linger "$USER"

Dicas práticas para uso diário

  • Ver a configuração ativa: onedrive --display-config
  • Testar antes: onedrive --dry-run --resync --sync
  • Comando moderno: prefira --sync no lugar de --synchronize.
  • Mais verbosidade: onedrive --sync --verbose ajuda a entender o que será baixado/enviado.
  • Local de trabalho: verifique/ajuste sync_dir no ficheiro config para definir a pasta local do OneDrive.

Avançado: múltiplos perfis, diretório local e modos de operação

Múltiplas contas ou perfis independentes

Você pode manter configurações isoladas (por exemplo, pessoal e trabalho) usando diretórios de configuração separados com --confdir:

# Perfil pessoal (padrão)
onedrive --sync

Perfil da empresa

mkdir -p ~/.config/onedrive-company
onedrive --confdir ~/.config/onedrive-company --sync 

Para automatizar um segundo perfil via systemd (utilizador), crie outra unit:

# ~/.config/systemd/user/onedrive-company.service
[Unit]
Description=OneDrive Company (user) - monitor
After=network-online.target

\[Service]
ExecStart=/usr/bin/onedrive --monitor --confdir=%h/.config/onedrive-company
Restart=on-failure
RestartSec=10

\[Install]
WantedBy=default.target 

Escolher onde ficam os ficheiros locais

Defina sync_dir no ~/.config/onedrive/config para alterar a pasta local do OneDrive (útil para discos secundários/externos):

sync_dir = "/mnt/dados/OneDrive"</code></pre>
<p>Se mudar o <code>sync_dir</code> depois de já ter sincronizado, faça <code>--resync</code>.</p>

<h3>Modos úteis</h3>
<ul>
  <li><code>--download-only</code>: baixa da nuvem para o Ubuntu, sem enviar alterações locais.</li>
  <li><code>--upload-only</code>: envia do Ubuntu para a nuvem, sem baixar novidades.</li>
  <li><code>--no-remote-delete</code>: impede que eliminações locais removam ficheiros na nuvem.</li>
</ul>

<h2>Boas práticas de filtragem</h2>
<ul>
  <li><strong>Caminhos são remotos</strong>: <code>skipdir</code> e <code>synclist</code> usam o caminho dentro do <em>OneDrive</em>. Não use caminhos do seu sistema local.</li>
  <li><strong>Correspondência exata</strong>: ao excluir uma pasta com nome comum (<code>Videos</code>), ative <code>skipdirstrict_match = true</code> para evitar exclusões por engano noutras árvores.</li>
  <li><strong>Evite listas infinitas</strong>: se precisar excluir dezenas de pastas, reavalie se um <code>sync_list</code> (lista de inclusão) não seria mais simples.</li>
  <li><strong>Documente-se no próprio <code>config</code></strong>: comente suas regras (começando linhas com <code>#</code>) para lembrar os motivos das exclusões.</li>
  <li><strong>Teste com <code>--dry-run</code></strong> sempre que mudar regras.</li>
</ul>

<h2>FAQ — dúvidas comuns</h2>
<details>
  <summary>Posso excluir várias pastas de uma vez?</summary>
  <div>
    <p>Sim. Você pode combinar padrões de exclusão em <code>skipdir</code> (por exemplo, usando padrões/globs) ou optar por um <code>synclist</code> para controlar exatamente o conjunto que deseja manter. Teste com <code>--dry-run</code> para validar.</p>
  </div>
</details>
<details>
  <summary>O que acontece se eu já baixei a pasta que agora quero excluir?</summary>
  <div>
    <p>Ao aplicar <code>skip_dir</code> e executar <code>--resync --sync</code>, o cliente recalcula o estado. Se a pasta passar a ser excluída, o cliente deixará de gerir esses ficheiros localmente; use <code>--dry-run</code> para verificar o impacto antes.</p>
  </div>
</details>
<details>
  <summary>Posso usar <code>skipdir</code> e <code>synclist</code> juntos?</summary>
  <div>
    <p>Para simplificar, escolha um <em>ou</em> outro. O <code>synclist</code> normalmente <em>assume o controle</em> da seleção (apenas o que está na lista é sincronizado). Para “excluir uma pasta específica e manter o resto”, use <code>skipdir</code>.</p>
  </div>
</details>
<details>
  <summary>Como ver por que um ficheiro foi ignorado?</summary>
  <div>
    <p>Rode com <code>--verbose</code> e, se necessário, <code>--dry-run</code>. O cliente mostra as decisões (sincronizar/ignorar) com o motivo.</p>
  </div>
</details>

<h2>Resolução de problemas</h2>
<ul>
  <li><strong>“Nada sincroniza” logo após mudar filtros</strong>: faltou <code>--resync</code>. Execute <code>onedrive --resync --sync</code>.</li>
  <li><strong>Mudanças remotas demoram a chegar</strong>: confirme se está rodando <code>--monitor</code> ou se o serviço systemd está ativo (<code>systemctl --user status onedrive</code>).</li>
  <li><strong>Muitos ficheiros “pulados”</strong>: verifique padrões agressivos em <code>skipfile</code> e paths em <code>skipdir</code>; use <code>--display-config</code> e revise o <code>config</code>.</li>
  <li><strong>Erros de permissão no <code>syncdir</code></strong>: corrija dono e permissões (ex.: <code>sudo chown -R "$USER":"$USER" /caminho/do/syncdir</code>).</li>
  <li><strong>Monitoramento não detecta mudanças</strong>: confirme limites de <code>inotify</code> se lida com muitas pastas. Ajuste temporariamente com:
    <pre><code class="language-bash"># Exemplo: aumentar observadores para 524288
echo fs.inotify.maxuserwatches=524288 | sudo tee /etc/sysctl.d/99-inotify.conf
sudo sysctl --system

Checklist final

  • Exclusão configurada: skipdir = "Documents/Videos" (+ skipdirstrictmatch = true).
  • Aplicação das regras: onedrive --resync --sync (teste antes com --dry-run).
  • Automação ativa: onedrive --monitor ou serviço systemd de utilizador.
  • Verificação: onedrive --display-config e systemctl --user status onedrive.

Conclusão

Para excluir a pasta Documents/Videos da sincronização no Ubuntu, a forma mais direta é usar skipdir no ficheiro de configuração do cliente OneDrive e aplicar uma ressincronização. Se precisar de controle total, utilize um synclist. Para não depender de comandos manuais, rode em modo --monitor ou habilite o serviço systemd de utilizador. Com essas práticas, você mantém o OneDrive enxuto no Ubuntu, economiza espaço e garante que as mudanças do Windows cheguem automaticamente ao seu sistema Linux.

Índice