Seafile vs Nextcloud: qual escolher para sincronização?
Compare o desempenho de sincronização, uso de RAM e backup entre Seafile e Nextcloud. Entenda como o armazenamento em blocos do Seafile difere do sistema do Nextcloud.
Seafile vs Nextcloud: a resposta curta
Seafile vs Nextcloud resume-se a uma diferença: o que é um ficheiro depois de chegar ao servidor. O Seafile divide cada ficheiro em blocos e armazena-os num object store que só o Seafile consegue ler. Por isso, a sincronização é rápida, mas as cópias de segurança passam a ter duas partes. O Nextcloud grava o ficheiro no disco como um ficheiro e trata a sincronização como uma funcionalidade de uma plataforma que também disponibiliza calendários, contactos, documentos e links de partilha. Tome esta diferença como base da decisão, porque o resto decorre dela.
Em outubro de 2026, o Seafile está na série 13.0 e o Nextcloud na série 35. Ambos são maduros e nenhum está prestes a mudar o seu modelo de armazenamento.
Como o Seafile armazena os seus ficheiros
O Seafile modela uma biblioteca da mesma forma que o git modela um repositório. O manual de administração apresenta o modelo interno como Repo, Commit, FS e Block, e indica que um repo também é chamado uma biblioteca. Cada ficheiro é dividido em blocos de comprimento variável através de chunking definido pelo conteúdo (CDC, um algoritmo que escolhe os limites dos blocos a partir dos próprios dados), e o manual indica um tamanho médio de bloco de cerca de 8 MB. Os carregamentos através da interface web são a exceção: nesse caso, o servidor de ficheiros divide os ficheiros em blocos de tamanho fixo, com 8 MB por predefinição. Os blocos recebem nomes baseados no seu conteúdo. Por isso, duas versões do mesmo ficheiro grande partilham todos os blocos que não foram alterados, e duas bibliotecas também partilham blocos idênticos.
A base de dados relacional contém apenas uma pequena quantidade de metadados sobre as bibliotecas. Todo o resto, ou seja, os commits, os objetos de diretório e os blocos, fica no diretório de dados. No layout Docker utilizado pelas séries 12 e 13, esse diretório é /opt/seafile-data/seafile/seafile-data. Executar ls nesse local não fornece informações úteis, porque verá diretórios com nomes baseados em hashes, e não Invoices/2026/march.pdf.
A sincronização segue o mesmo modelo. O cliente pergunta ao servidor o que mudou, recebe uma lista de hashes de blocos e transfere apenas os blocos que ainda não possui. É por isso que o Seafile mantém um bom desempenho com bibliotecas grandes: os bytes transferidos são proporcionais aos blocos alterados, e não ao tamanho do ficheiro que os contém.
Como o Nextcloud armazena os seus ficheiros
O Nextcloud coloca o ficheiro no disco onde seria esperado. O caminho data/<username>/files/ corresponde ao que o utilizador vê na interface web. Uma tabela da base de dados, oc_filecache, reproduz essa mesma árvore com tamanhos, datas de modificação e etags, e o Nextcloud confia na tabela em vez de consultar o disco.
O cliente para computador comunica através de WebDAV (web distributed authoring and versioning) sobre HTTPS. Cada ficheiro exige pelo menos um pedido, razão pela qual o Nextcloud adicionou uma API de carregamento em massa: o manual do programador explica que o carregamento de muitos ficheiros pequenos é mais lento do que poderia ser porque a largura de banda da rede não é totalmente utilizada, por isso os ficheiros pequenos são agrupados. Os ficheiros grandes utilizam a API de divisão em blocos. O cliente para computador começa com blocos de 100 MiB (chunkSize assume por predefinição 104857600 bytes) e pode ajustar dinamicamente o tamanho entre um mínimo de 5 MiB e um máximo de 100 MiB.
A vantagem de ter os ficheiros no disco é que qualquer ferramenta que já possua pode ler os seus dados. O custo é que o Nextcloud não deteta alterações feitas sem o seu conhecimento. Copie ficheiros diretamente para o diretório de dados e eles permanecerão invisíveis na interface web até executar uma verificação:
sudo -E -u www-data php occ files:scan --all -vvO manual de administração identifica exatamente estes casos para uma nova verificação: depois de copiar ficheiros diretamente para o diretório de dados, depois de uma migração e quando estiver a investigar inconsistências na cache de ficheiros.
Qual sincroniza uma biblioteca grande mais depressa?
Seafile, nos dois casos mais exigentes: dezenas de milhares de ficheiros pequenos e edições repetidas em ficheiros grandes. O mecanismo é a desduplicação ao nível dos blocos. Assim, se o conteúdo central de uma imagem de disco de 4 GB for alterado, apenas alguns blocos são carregados. O Nextcloud reduz a diferença com ficheiros pequenos através do carregamento em massa, mas não consegue eliminar a diferença com ficheiros grandes, porque a unidade de transferência é o ficheiro completo.
Não aceite a minha palavra quanto à dimensão da diferença. Também não aceite um benchmark do fornecedor. Crie uma biblioteca semelhante à sua e meça o tempo:
mkdir -p ~/synctest && cd ~/synctest
for i in $(seq 1 20000); do head -c 4096 /dev/urandom > "file_$i.bin"; done
du -sh ~/synctestColoque esse diretório numa pasta sincronizada em cada servidor e monitorize até o cliente concluir. A fiabilidade é tão importante como a velocidade. Um cliente Seafile carrega primeiro os blocos e grava por último o commit que os referencia. Assim, se o carregamento for interrompido, a biblioteca permanece no commit anterior, em vez de ficar com uma árvore parcialmente gravada.
O que cada opção requer num VPS pequeno
A documentação do Seafile pede "pelo menos 2G de RAM e uma CPU de 2 núcleos (> 2GHz)". O Nextcloud documenta a memória por processo PHP: no mínimo 128 MB e 512 MB recomendados por processo. Multiplique esse valor pelo número de workers antes de acrescentar a base de dados, a cache e a geração de pré-visualizações. Abaixo estão os pontos de partida que eu usaria para uma equipa pequena. São pontos de partida, não medições.
Os dados por trás deste gráfico
[
{
"label": "Seafile CE 13",
"start_ram_gb": 4,
"start_cpu_cores": 2,
"sql_databases": 3
},
{
"label": "Nextcloud 35",
"start_ram_gb": 4,
"start_cpu_cores": 2,
"sql_databases": 1
},
{
"label": "Syncthing 2",
"start_ram_gb": 1,
"start_cpu_cores": 1,
"sql_databases": 0
}
]Ambos ficam na mesma classe, com 4 GB de RAM e 2 núcleos. Por isso, a utilização de recursos não decide entre eles. O Syncthing funciona com 1 GB e 1 núcleo. Essa é a razão objetiva para o considerar. Os componentes envolvidos diferem mais do que o consumo de memória. O Seafile mantém 3 bases de dados SQL, enquanto o Nextcloud mantém 1. Além disso, a implementação Docker predefinida do Seafile inicia o servidor, o MariaDB, o Redis, o SeaDoc e o Caddy a partir de ficheiros que deve transferir primeiro:
mkdir /opt/seafile
cd /opt/seafile
wget -O .env https://manual.seafile.com/13.0/repo/docker/ce/env
wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
wget https://manual.seafile.com/13.0/repo/docker/caddy.yml
nano .envEm .env, defina SEAFILE_SERVER_HOSTNAME, as palavras-passe do root do MySQL e da base de dados, a conta de administrador inicial e JWT_PRIVATE_KEY. O manual exige uma cadeia aleatória com pelo menos 32 caracteres para essa chave. A chave é lida no primeiro arranque. Por isso, gere-a antes de iniciar a stack:
openssl rand -base64 40
docker compose up -dO primeiro arranque cria as três bases de dados e o utilizador administrador. No Nextcloud, as decisões equivalentes, incluindo TLS e reverse proxy, são explicadas em o guia do Nextcloud num VPS com Docker, TLS e cópias de segurança.
Como diferem os backups?
Este é o aspeto que as pessoas subestimam e é onde os dois produtos mais diferem.
No Seafile, a ordem é obrigatória. A regra do manual é fazer primeiro o backup do SQL e só depois do diretório de dados. Assim, cada registo da base de dados tem um objeto válido para referenciar e as bibliotecas não ficam corrompidas. Se inverter a ordem, uma linha da base de dados pode apontar para um bloco que o seu snapshot nunca capturou.
docker exec -i seafile-mysql mariadb-dump -uroot -p"$MYSQL_ROOT_PASSWORD" --opt ccnet_db > ccnet_db.sql
docker exec -i seafile-mysql mariadb-dump -uroot -p"$MYSQL_ROOT_PASSWORD" --opt seafile_db > seafile_db.sql
docker exec -i seafile-mysql mariadb-dump -uroot -p"$MYSQL_ROOT_PASSWORD" --opt seahub_db > seahub_db.sql
rsync -az /opt/seafile-data/seafile /backup/data/Há dois detalhes nessas linhas. Use mariadb-dump, porque o manual do Seafile recomenda a série de comandos mariadb. Os nomes mysql estão a ser descontinuados nas versões mais recentes do MariaDB e, a partir do MariaDB 11.0, a imagem oficial do Docker já não inclui o nome mysqldump. O ficheiro Compose do Seafile 13 ainda usa o MariaDB 10.11 por predefinição, portanto isto é especialmente importante quando muda para uma imagem de base de dados mais recente. Remova a flag -t de docker exec quando redirecionar a saída para um ficheiro, porque um TTY reescreve as terminações de linha e danifica o dump.
As duas partes são capturadas separadamente, portanto podem ficar dessincronizadas. Depois de qualquer restauro, verifique o armazenamento antes de confiar nele:
docker exec -it seafile bash
cd /opt/seafile/seafile-server-latest
./seaf-fsck.shQuando falta alguma coisa, a ferramenta identifica o objeto:
Block 650fb22495b0b199cff0f1e1ebf036e548fcb95a is missing.
Repo ca1a860d HEAD commit is corrupted, need to restore to an old version.Planeie também a recolha de lixo. A deduplicação faz com que os ficheiros e as bibliotecas eliminados mantenham os respetivos blocos até executar ./seaf-gc.sh a partir desse mesmo diretório. A execução indica o que encontrou, como GC finished. 507 blocks total, about 507 reachable blocks, 0 blocks can be removed.. Se o ignorar durante um ano, os seus backups continuam a ocupar espaço com dados que os utilizadores eliminaram.
O Nextcloud tem o mesmo problema de duas partes, mas com uma forma diferente, porque o diretório de dados e a base de dados têm de descrever a mesma árvore:
sudo -E -u www-data php occ maintenance:mode --on
rsync -Aavx /srv/nextcloud/ /backup/nextcloud-dirbkp/
mariadb-dump --single-transaction --default-character-set=utf8mb4 -u nextcloud -p"$DB_PASS" nextcloud > /backup/nextcloud-sqlbkp.bak
sudo -E -u www-data php occ maintenance:mode --offMantenha a pasta de configuração, a pasta de dados, quaisquer aplicações personalizadas e o seu tema, além desse dump. Restaure as duas partes a partir do mesmo momento. Se o diretório de dados for mais recente do que a base de dados, os utilizadores veem ficheiros que a cache de ficheiros desconhece, e occ files:scan --all corrige a situação. Se a base de dados for mais recente, as linhas da cache apontam para ficheiros que já não existem, e occ files:cleanup remove as entradas da cache sem uma entrada correspondente na tabela de armazenamento.
Em qualquer dos casos, precisa de um programa de backup que suporte muitos ficheiros pequenos e mantenha histórico. É isso que restic e BorgBackup fazem de forma diferente.
Clientes em computadores e dispositivos móveis
O Seafile disponibiliza dois programas para desktop. O cliente de sincronização mantém uma cópia local das bibliotecas selecionadas. O cliente Drive (SeaDrive) monta as bibliotecas como uma unidade virtual e descarrega os ficheiros quando são acedidos: no Windows, usa a API de ficheiros na nuvem da Microsoft; no macOS, a versão 3.0 é uma extensão do Finder; e no Linux, está disponível como AppImage desde a versão 3.0.12 e monta as bibliotecas em ~/SeaDrive. No Windows e no macOS, as bibliotecas encriptadas permanecem ocultas no cliente Drive até serem selecionadas no menu da área de notificação e ser introduzida a palavra-passe. As aplicações móveis existem para aceder aos ficheiros. É apenas isso que fazem.
O cliente de desktop do Nextcloud também disponibiliza ficheiros virtuais. As aplicações móveis incluem o restante da plataforma, pelo que o calendário, os contactos, o Talk e as notas ficam disponíveis juntamente com o acesso aos ficheiros. Se os utilizadores trabalham principalmente em telemóveis e precisam de mais do que ficheiros, esta é uma diferença real no uso diário.
Há um detalhe do Seafile que deve ser considerado no planeamento: a biblioteca é a unidade de partilha, sincronização, permissões e encriptação. Defina a organização das bibliotecas antes de carregar 500 GB para uma única biblioteca, porque mover ficheiros entre bibliotecas implica copiar e eliminar, e não apenas mudar o nome. Por isso, o histórico do ficheiro não é transferido.
Criptografia: o que cada opção realmente protege
As bibliotecas encriptadas do Seafile usam encriptação no cliente. A palavra-passe nunca é armazenada no servidor. Um token mágico derivado da palavra-passe e do ID da biblioteca é armazenado com a biblioteca, para que um cliente possa validar a palavra-passe antes de sincronizar. A chave do ficheiro é encriptada com uma chave e um IV (vetor de inicialização) derivados da sua palavra-passe através de AES 256/CBC, e os dados do ficheiro são encriptados com essa chave do ficheiro.
Leia as limitações documentadas, porque são frequentemente ignoradas. Uma biblioteca encriptada encripta apenas o conteúdo dos ficheiros. Os nomes das pastas e dos ficheiros não são encriptados, nem os tamanhos dos ficheiros ou o histórico de edições. Consultar uma biblioteca encriptada num navegador web não é uma operação de ponta a ponta: introduz a palavra-passe, o servidor usa-a para desencriptar a chave do ficheiro e mantém a palavra-passe em cache na memória durante uma hora. O manual também indica claramente que uma biblioteca encriptada não garante a integridade, porque um administrador do servidor pode alterar parte do conteúdo de um ficheiro e o cliente não consegue detetar essa alteração.
O Nextcloud tem duas funcionalidades com nomes muito semelhantes. A encriptação no lado do servidor encripta os ficheiros em repouso, mas mantém as chaves no mesmo servidor. Por isso, protege muito melhor os dados armazenados em armazenamento externo do que protege contra alguém com acesso root ao servidor. A aplicação de encriptação de ponta a ponta encripta pastas selecionadas no cliente. Por definição, o servidor não consegue lê-las. Por isso, a interface web, a pesquisa no lado do servidor e as pré-visualizações também não conseguem ver o conteúdo dessas pastas.
A encriptação de nenhum dos produtos substitui uma cópia de segurança encriptada. Encripte a cópia de segurança separadamente.
Calendários, contactos, escritório e a plataforma de aplicações
Este eixo nem sequer é próximo. O Nextcloud inclui CalDAV (calendário através de WebDAV) e CardDAV (contactos através de WebDAV) no núcleo, integra o Collabora ou o OnlyOffice para documentos e tem uma loja de aplicações para tudo o resto. O Seafile 13 inclui o SeaDoc para documentos colaborativos e páginas wiki, pode abrir e editar ficheiros do Office através de um servidor OnlyOffice que terá de implementar separadamente e fica por aí. Não tem calendário nem livro de endereços.
A plataforma tem um custo, e esse custo são as atualizações. Cada aplicação instalada é mais um componente que pode bloquear uma atualização do Nextcloud ou apresentar problemas depois dela. Por isso, quanto mais funcionalidades forem essenciais para os seus utilizadores, mais cuidadosamente terá de planear a janela de atualização. O Seafile tem menos componentes que possam falhar porque oferece menos funcionalidades. Tenha também em conta que é o Seafile Professional, e não a Community Edition, que adiciona a pesquisa de texto completo dentro dos documentos e as permissões ao nível das pastas. O Professional funciona sem uma licença paga para até três utilizadores e precisa de uma licença a partir daí. Confirme, portanto, se a funcionalidade em que está a basear a decisão está incluída na edição que planeia utilizar.
A falha típica de cada um
O Seafile falha quando a base de dados e o armazenamento de objetos ficam dessincronizados. É apresentada uma biblioteca que não abre ou ficheiros que desaparecem, e seaf-fsck.sh mostra o bloco em falta. Não existe uma árvore de ficheiros para reparar manualmente. A recuperação exige o dump da base de dados e o armazenamento de objetos, restaurados pela ordem correta. Teste essa restauração uma vez numa VPS sobressalente, porque uma cópia de segurança que nunca foi restaurada é apenas uma suposição.
O Nextcloud falha quando a cache de ficheiros e o disco divergem, normalmente porque algo escreveu no diretório de dados sem informar o Nextcloud. É apresentado um ficheiro no disco que a interface Web não lista ou uma pasta com um tamanho incorreto, e occ files:scan é a correção. Os outros dois pontos problemáticos são a velocidade do protocolo com muitos ficheiros pequenos, que nenhuma quantidade de CPU resolve, e a memória do PHP. As pré-visualizações de imagens e vídeos grandes costumam causar o pico de utilização. Por isso, reserve 512 MB por processo e gere as pré-visualizações numa tarefa agendada, em vez de as gerar durante os pedidos.
Nenhum dos dois: Syncthing, se só pretende sincronizar ficheiros
Se o requisito real for ter uma pasta replicada entre máquinas, ambos os produtos oferecem mais funcionalidades do que precisa. O Syncthing não tem servidor nem contas. Cada dispositivo é um peer, e um VPS torna-se o peer que permanece ligado quando o portátil entra em suspensão. Syncthing 2 é a versão atualmente mantida, e os pacotes vêm do repositório do próprio projeto:
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get update
sudo apt-get install syncthingExecute-o com um utilizador normal, nunca como root, para que os ficheiros que cria tenham uma propriedade adequada:
sudo systemctl enable --now syncthing@youruser
systemctl status syncthing@youruserA interface web fica associada a 127.0.0.1:8384 por predefinição. Por isso, não fica acessível a partir da internet, que é a predefinição correta. Aceda-lhe através de um túnel SSH a partir do portátil:
ssh -L 8384:127.0.0.1:8384 youruser@your-serverDepois, abra http://127.0.0.1:8384 no portátil. A sincronização utiliza a porta 22000 sobre TCP e QUIC, e a descoberta local utiliza UDP 21027, que não funciona através da internet. Num VPS, abra 22000 e mantenha a interface fechada:
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udpO que perde são todas as funcionalidades de servidor: não há links de partilha para pessoas que não executem Syncthing, navegador de ficheiros web, contas de utilizador nem lixo do lado do servidor, exceto se ativar o versionamento de ficheiros por pasta. A surpresa clássica é o ficheiro de conflito. Edite o mesmo ficheiro em dois dispositivos enquanto estes não conseguem comunicar entre si e obterá um ficheiro irmão com um nome semelhante a notes.sync-conflict-20260806-142233-ABCD1EF.md. Nada o avisa, por isso procure periodicamente por sync-conflict.
Se o que pretende não é uma pasta sincronizada, mas sim um bucket onde as aplicações escrevem, precisa de outra ferramenta: consulte armazenamento de objetos self-hosted compatível com S3. Para uma visão mais ampla, o resumo das alternativas self-hosted ao Dropbox aborda as opções que não foram incluídas nesta comparação.
A regra de decisão
- Escolha Seafile se a necessidade for sincronizar em escala: muitos ficheiros, ficheiros grandes, vários dispositivos e aceitação de um armazenamento de dados que apenas o Seafile consegue ler.
- Escolha Nextcloud se a necessidade for uma plataforma: calendários, contactos, documentos e ligações de partilha, com ficheiros simples no disco que qualquer ferramenta de backup consegue ler.
- Escolha Syncthing se a necessidade for apenas uma pasta espelhada.
Escolha com cuidado agora, porque a migração entre Seafile e Nextcloud é o verdadeiro fator de dependência. Não existe conversor. Terá de sincronizar tudo para um cliente e carregá-lo para o outro servidor, consumindo largura de banda e tempo, enquanto o histórico de versões e as ligações de partilha ficam para trás. Dimensionar a escolha atual para os próximos três anos fica mais barato do que mudar no segundo ano.
FAQ
O Seafile é mais rápido que o Nextcloud para sincronizar bibliotecas grandes?
Sim nos dois casos que normalmente causam problemas, e por uma razão que pode verificar. O Seafile divide os ficheiros em blocos com uma média de cerca de 8 MB e transfere apenas os blocos alterados. Assim, uma edição dentro de um ficheiro grande transfere apenas alguns blocos. A unidade de transferência do Nextcloud é o ficheiro inteiro. A mesma edição volta a carregar todo o ficheiro. Além disso, cada ficheiro pequeno custa pelo menos um pedido WebDAV. Por isso, a API de carregamento em massa agrupa os ficheiros pequenos. Meça o tempo nos seus próprios VPS antes de decidir, porque o CPU, o disco e a ligação de rede têm tanta importância como o protocolo.
Posso fazer backup do Seafile executando rsync no diretório de dados?
Apenas em conjunto com as bases de dados e pela ordem documentada. O manual do Seafile recomenda fazer primeiro o backup do SQL e depois do diretório de dados. Assim, cada registo da base de dados refere-se a um objeto existente no backup. O comando rsync -az /opt/seafile-data/seafile /backup/data/ copia conf, seafile-data e seahub-data, mas não pode ser restaurado sozinho. O armazenamento de objetos não contém uma árvore de ficheiros legível, e a base de dados funciona como o seu índice. Depois de restaurar as duas partes, execute seaf-fsck.sh e leia a respetiva saída antes de confiar no resultado.
Preciso do Nextcloud se quiser apenas sincronização de ficheiros?
Não. O Nextcloud é uma plataforma. O calendário, os contactos e a loja de aplicações consomem memória e exigem manutenção nas atualizações, quer os utilize quer não. Para sincronização simples de ficheiros, o Seafile é o produto mais leve e tem o protocolo mais rápido. O Syncthing é ainda mais leve, porque não exige um componente de servidor. Escolha o Nextcloud quando precisar das aplicações adicionais, e não como opção predefinida.
Uma biblioteca Seafile encriptada oculta os nomes dos meus ficheiros?
Não. Uma biblioteca encriptada encripta o conteúdo dos ficheiros no cliente, e a palavra-passe nunca chega ao servidor. No entanto, os nomes das pastas, os nomes dos ficheiros, os tamanhos dos ficheiros e o histórico de edições permanecem visíveis no servidor. Abrir uma biblioteca encriptada na interface web também envia a palavra-passe para o servidor. O servidor desencripta a chave do ficheiro e mantém a palavra-passe na memória durante uma hora. Se os próprios nomes forem sensíveis, não utilize essa biblioteca na interface web e aplique encriptação noutra camada.
Quanta RAM devo atribuir ao Seafile ou ao Nextcloud num VPS?
Comece com 4 GB e 2 cores para qualquer um dos dois, com poucos utilizadores. Depois, monitorize a memória durante a geração de pré-visualizações e as pesquisas. A documentação do Seafile define como mínimo 2 GB de RAM e um CPU com 2 cores acima de 2 GHz. A documentação do Nextcloud recomenda 512 MB por processo PHP. Multiplique esse valor pelo número de workers antes de adicionar a base de dados e a cache. O Syncthing funciona confortavelmente com 1 GB.