Seafile o Nextcloud per sincronizzare i file?
Confronta Seafile 13 e Nextcloud 34: velocità di sync, RAM, backup ed encryption. Scopri quale modello di archiviazione si adatta al tuo server.
Seafile vs Nextcloud: la risposta breve
Il confronto tra Seafile e Nextcloud si riduce a una differenza: che cosa diventa un file quando raggiunge il server. Seafile suddivide ogni file in blocchi e li archivia in un object store leggibile solo da Seafile. La sincronizzazione è quindi veloce, ma il backup diventa un'attività in due parti. Nextcloud scrive il file su disco come file e tratta la sincronizzazione come una funzione di una piattaforma che gestisce anche calendari, contatti, documenti e link di condivisione. La decisione dipende da questa differenza, perché tutto il resto ne consegue.
A ottobre 2026, Seafile è alla serie 13.0 e Nextcloud alla serie 35. Entrambi sono prodotti maturi e nessuno dei due cambierà a breve il proprio modello di archiviazione.
Come Seafile archivia i file
Seafile modella una libreria nello stesso modo in cui Git modella un repository. Il manuale dell'amministratore descrive il modello interno come Repo, Commit, FS e Block e specifica che un repo è chiamato anche libreria. Ogni file viene suddiviso in blocchi di lunghezza variabile tramite il chunking definito dal contenuto (CDC, un algoritmo che ricava i confini dei blocchi dai dati stessi); il manuale indica una dimensione media di circa 8 MB per blocco. I caricamenti tramite l'interfaccia web fanno eccezione: in questo caso il file server suddivide i file in blocchi di dimensione fissa, 8 MB per impostazione predefinita. I blocchi prendono il nome dal proprio contenuto. Di conseguenza, due versioni dello stesso file di grandi dimensioni condividono tutti i blocchi rimasti invariati e due librerie condividono a loro volta i blocchi identici.
Il database relazionale contiene solo una piccola quantità di metadati sulle librerie. Tutto il resto, cioè i commit, gli oggetti directory e i blocchi, si trova nella directory dei dati. Nel layout Docker usato dalle serie 12 e 13, questa directory è /opt/seafile-data/seafile/seafile-data. Eseguire ls in quel percorso non fornisce informazioni utili, perché mostra directory con nomi hash, non Invoices/2026/march.pdf.
La sincronizzazione segue lo stesso modello. Il client chiede al server quali elementi sono cambiati, riceve un elenco di hash dei blocchi e scarica soltanto i blocchi che non possiede già. Per questo Seafile gestisce bene le librerie di grandi dimensioni: i byte trasferiti sono proporzionali ai blocchi modificati, non alle dimensioni del file che li contiene.
Come Nextcloud archivia i file
Nextcloud salva i file sul disco nel percorso previsto. Il percorso data/<username>/files/ rispecchia ciò che l'utente vede nell'interfaccia web. Una tabella del database, oc_filecache, rispecchia lo stesso albero con dimensioni, date di modifica ed etag; Nextcloud considera attendibile la tabella, non il disco.
Il client desktop usa WebDAV (web distributed authoring and versioning) su HTTPS. Ogni file richiede almeno una richiesta. Per questo Nextcloud ha aggiunto un'API per il caricamento in blocco: il manuale per sviluppatori spiega che il caricamento di molti file piccoli è più lento del necessario perché la larghezza di banda della rete non viene sfruttata completamente, quindi i file piccoli vengono raggruppati. I file grandi usano invece l'API di suddivisione in blocchi. Il client desktop inizia con blocchi da 100 MiB (chunkSize ha come valore predefinito 104857600 byte) e può adattarne dinamicamente la dimensione tra un minimo di 5 MiB e un massimo di 100 MiB.
Il vantaggio di avere i file sul disco è che qualsiasi strumento già disponibile può leggere i dati. Lo svantaggio è che Nextcloud non rileva le modifiche effettuate direttamente sul filesystem. Se si copiano i file direttamente nella directory dei dati, restano invisibili nell'interfaccia web finché non si esegue una scansione:
sudo -E -u www-data php occ files:scan --all -vvIl manuale per amministratori indica esattamente questi casi per una nuova scansione: dopo aver copiato i file direttamente nella directory dei dati, dopo una migrazione e durante l'analisi di incoerenze nella cache dei file.
Quale soluzione sincronizza più rapidamente una libreria di grandi dimensioni?
Seafile, nei due casi più penalizzanti: decine di migliaia di file piccoli e modifiche ripetute a file di grandi dimensioni. Il meccanismo è la deduplicazione a livello di blocco. Di conseguenza, se cambia la parte centrale di un'immagine disco da 4 GB, vengono caricati solo pochi blocchi. Nextcloud riduce il divario sui file piccoli con il caricamento in blocco, ma non può colmare quello sui file grandi, perché la sua unità di trasferimento è il file completo.
Non basarti sulle mie stime della differenza e nemmeno su un benchmark del fornitore. Crea una libreria simile alla tua e misura i tempi:
mkdir -p ~/synctest && cd ~/synctest
for i in $(seq 1 20000); do head -c 4096 /dev/urandom > "file_$i.bin"; done
du -sh ~/synctestCopia quella directory in una cartella sincronizzata su ciascun server e controlla quando il client completa l'operazione. L'affidabilità è importante quanto la velocità. Un client Seafile carica prima i blocchi e scrive per ultimo il commit che li referenzia. Se il caricamento viene interrotto, la libreria rimane quindi sul commit precedente, invece di lasciare un albero scritto solo parzialmente.
Cosa richiede ciascuna soluzione su un VPS di piccole dimensioni
La documentazione di Seafile richiede “almeno 2G di RAM e una CPU a 2 core (> 2GHz)”. Nextcloud indica invece la memoria per processo PHP: un minimo di 128 MB e 512 MB consigliati per processo. Prima di aggiungere database, cache e generazione delle anteprime, moltiplicate questo valore per il numero di worker. Di seguito sono riportati i valori iniziali che userei per un piccolo team. Sono valori di partenza, non misurazioni.
I dati alla base di questo grafico
[
{
"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
}
]Entrambe rientrano nella stessa classe, 4 GB di RAM con 2 core. L'impatto sulle risorse non determina quindi la scelta. Syncthing funziona con 1 GB su 1 core, ed è questo il motivo concreto per prenderlo in considerazione. Le differenze riguardano più i componenti coinvolti che la memoria. Seafile usa 3 database SQL, mentre Nextcloud ne usa 1. La distribuzione Docker predefinita di Seafile avvia il server, MariaDB, Redis, SeaDoc e Caddy a partire dai file scaricati in precedenza:
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 .envIn .env impostate SEAFILE_SERVER_HOSTNAME, le password root di MySQL e del database, l'account amministratore iniziale e JWT_PRIVATE_KEY. Il manuale richiede per questa chiave una stringa casuale di almeno 32 caratteri. La chiave viene letta al primo avvio, quindi generatela prima di avviare lo stack:
openssl rand -base64 40
docker compose up -dIl primo avvio crea i tre database e l'utente amministratore. Le decisioni equivalenti per Nextcloud, inclusi TLS e il reverse proxy, sono descritte nella guida a Nextcloud su un VPS con Docker, TLS e backup.
In cosa differiscono i backup?
Questo è l'aspetto che viene più spesso sottovalutato ed è quello in cui i due prodotti differiscono maggiormente.
Per Seafile l'ordine non è facoltativo. Il manuale indica di eseguire prima il backup di SQL e poi quello della directory dei dati, perché in questo modo ogni record nel database ha un oggetto valido a cui fare riferimento e le librerie non vengono danneggiate. Se si inverte l'ordine, una riga del database può puntare a un blocco che lo snapshot non ha mai acquisito.
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/In quelle righe ci sono due dettagli importanti. Usare mariadb-dump, perché il manuale di Seafile consiglia la serie di comandi mariadb: i nomi mysql stanno per essere ritirati nelle versioni più recenti di MariaDB e, a partire da MariaDB 11.0, l'immagine Docker ufficiale non contiene più il nome mysqldump. Il file Compose di Seafile 13 usa ancora MariaDB 10.11 per impostazione predefinita, quindi questo aspetto è particolarmente importante quando si passa a un'immagine del database più recente. Rimuovere il flag -t da docker exec quando si reindirizza l'output a un file, perché un TTY riscrive i caratteri di fine riga e danneggia il dump.
Le due parti vengono acquisite separatamente, quindi possono non essere sincronizzate. Dopo ogni ripristino, verificare lo store prima di considerarlo affidabile:
docker exec -it seafile bash
cd /opt/seafile/seafile-server-latest
./seaf-fsck.shQuando manca qualcosa, lo strumento indica l'oggetto:
Block 650fb22495b0b199cff0f1e1ebf036e548fcb95a is missing.
Repo ca1a860d HEAD commit is corrupted, need to restore to an old version.Pianificare anche la garbage collection. La deduplicazione fa sì che i file e le librerie eliminati mantengano i relativi blocchi finché non si esegue ./seaf-gc.sh dalla stessa directory; l'esecuzione segnala ciò che ha trovato, ad esempio GC finished. 507 blocks total, about 507 reachable blocks, 0 blocks can be removed.. Se si salta questa operazione per un anno, i backup continuano a occupare spazio per dati che gli utenti hanno eliminato.
Nextcloud presenta lo stesso problema delle due parti, ma in una forma diversa, perché la directory dei dati e il database devono descrivere lo stesso albero:
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 --offConservare la cartella di configurazione, la cartella dei dati, tutte le app personalizzate e il tema, oltre a quel dump. Ripristinare entrambe le parti riferite allo stesso momento. Se la directory dei dati è più recente del database, gli utenti vedono file che la cache dei file non conosce e occ files:scan --all la ripara. Se il database è più recente, le righe della cache puntano a file che non esistono più e occ files:cleanup rimuove le voci della cache senza una voce corrispondente nella tabella di storage.
In entrambi i casi serve un programma di backup che gestisca molti file di piccole dimensioni e conservi la cronologia. È proprio questo il punto in cui restic e BorgBackup si comportano diversamente.
Client desktop e mobile
Seafile distribuisce due programmi desktop. Il client di sincronizzazione mantiene una copia locale delle librerie selezionate. Il client Drive (SeaDrive) monta le librerie come unità virtuale e scarica i file al momento dell'accesso: su Windows usa l'API cloud files di Microsoft, su macOS dalla versione 3.0 è un'estensione di Finder e su Linux viene distribuito come AppImage dalla versione 3.0.12 e monta le librerie in ~/SeaDrive. Su Windows e macOS, le librerie cifrate restano nascoste nel client Drive finché non le selezioni dal menu nell'area di notifica e non inserisci la password. Le applicazioni mobili servono per accedere ai file e non offrono altre funzioni.
Anche il client desktop di Nextcloud offre i file virtuali e le applicazioni mobili includono il resto della piattaforma: oltre all'accesso ai file sono disponibili calendario, contatti, Talk e note. Se gli utenti lavorano principalmente dagli smartphone e hanno bisogno di più dei soli file, questa differenza incide concretamente nell'uso quotidiano.
Un aspetto di Seafile richiede una pianificazione specifica: la libreria è l'unità di condivisione, sincronizzazione, autorizzazioni e cifratura. Definisci la struttura delle librerie prima di caricare 500 GB in una singola libreria, perché spostare file tra librerie significa copiarli ed eliminarli, non rinominarli. Di conseguenza, la cronologia dei file non viene trasferita.
Crittografia: cosa protegge realmente ciascuna soluzione
Le librerie cifrate di Seafile usano la cifratura lato client. La password non viene mai memorizzata sul server. Insieme alla libreria viene memorizzato un token derivato dalla password e dall'ID della libreria, in modo che il client possa verificare la password prima della sincronizzazione. La chiave del file viene cifrata con una chiave e un IV (vettore di inizializzazione) derivati dalla password tramite AES 256/CBC. I dati del file vengono quindi cifrati con quella chiave.
Leggete i limiti documentati, perché spesso vengono trascurati. Una libreria cifrata protegge soltanto il contenuto dei file. I nomi di cartelle e file non sono cifrati, così come non lo sono le dimensioni dei file e la cronologia delle modifiche. La consultazione di una libreria cifrata tramite browser web non offre cifratura end-to-end: inserite la password, il server la usa per decifrare la chiave del file e conserva la password in cache per un'ora. La documentazione specifica inoltre che una libreria cifrata non garantisce l'integrità, perché un amministratore del server può modificare parte del contenuto di un file senza che il client possa rilevarlo.
Nextcloud dispone di due funzionalità con nomi molto simili, ma con caratteristiche diverse. La cifratura lato server protegge i file a riposo, ma conserva le chiavi sullo stesso server. Protegge quindi i dati archiviati su storage esterno molto più di quanto protegga da un utente che dispone dell'accesso root al server. L'app di cifratura end-to-end protegge sul client le cartelle selezionate. Per progettazione, il server non può leggerle. Di conseguenza, neppure l'interfaccia web, la ricerca lato server e le anteprime possono accedere al contenuto di tali cartelle.
La cifratura di nessuno dei due prodotti sostituisce un backup cifrato. Cifrate il backup separatamente.
Calendari, contatti, suite per ufficio e piattaforma applicativa
Questo asse di confronto è netto. Nextcloud include CalDAV (calendari tramite WebDAV) e CardDAV (contatti tramite WebDAV) nel core, integra Collabora o OnlyOffice per i documenti e dispone di un app store per tutto il resto. Seafile 13 include SeaDoc per i documenti collaborativi e le pagine wiki, può aprire e modificare i file Office tramite un server OnlyOffice distribuito separatamente e si ferma qui. Non offre né un calendario né una rubrica.
La piattaforma ha un costo, e questo costo riguarda gli aggiornamenti. Ogni app installata è un ulteriore componente che può impedire un aggiornamento di Nextcloud o presentare problemi dopo l’aggiornamento. Di conseguenza, più componenti diventano essenziali per gli utenti, più la finestra di aggiornamento deve essere gestita con attenzione. Seafile offre meno possibilità di errore perché fa meno. Va inoltre ricordato che è Seafile Professional, non la Community Edition, ad aggiungere la ricerca full-text nei documenti e i permessi a livello di cartella. Professional può essere eseguito senza una licenza a pagamento fino a tre utenti; oltre tale limite ne serve una. Verifica quindi che la funzionalità su cui fai affidamento sia inclusa nell’edizione che prevedi di utilizzare.
Il problema specifico per cui ciascuno è noto
Seafile non funziona quando il database e l'object store non sono più sincronizzati. Una libreria non si apre oppure alcuni file scompaiono, e seaf-fsck.sh mostra il blocco mancante. Non esiste un albero dei file da riparare manualmente: il ripristino richiede il dump del database e l'object store, ripristinati nell'ordine corretto. Testate una volta questo ripristino su una VPS separata, perché un backup che non è mai stato ripristinato è solo un'ipotesi.
Nextcloud non funziona quando la cache dei file e il disco non coincidono, di solito perché qualcosa ha scritto nella directory dei dati senza informare Nextcloud. Sul disco è presente un file che l'interfaccia web non elenca oppure una cartella ha una dimensione errata; occ files:scan risolve il problema. Gli altri due punti critici sono la velocità del protocollo con molti file di piccole dimensioni, che nessuna quantità di CPU può risolvere, e la memoria PHP: le anteprime di immagini e video di grandi dimensioni causano di solito il picco. Riservate quindi 512 MB per processo e generate le anteprime tramite un job pianificato invece che durante le richieste.
Nessuno dei due: Syncthing, se vuoi soltanto sincronizzare file
Se il requisito effettivo è avere una cartella replicata tra più macchine, entrambi i prodotti offrono più funzionalità di quelle necessarie. Syncthing non usa un server né account. Ogni dispositivo è un peer e un VPS diventa il peer che resta acceso quando il laptop entra in sospensione. Syncthing 2 è la versione attuale e i pacchetti provengono dal repository del progetto:
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 syncthingEseguilo come utente normale, mai come root, in modo che i file creati abbiano permessi e proprietario corretti:
sudo systemctl enable --now syncthing@youruser
systemctl status syncthing@youruserL'interfaccia web è in ascolto su 127.0.0.1:8384 per impostazione predefinita. Non è quindi raggiungibile da Internet, che è l'impostazione corretta. Raggiungila tramite un tunnel SSH dal laptop:
ssh -L 8384:127.0.0.1:8384 youruser@your-serverQuindi apri http://127.0.0.1:8384 sul laptop. La sincronizzazione usa la porta 22000 tramite TCP e QUIC, mentre il rilevamento locale usa UDP 21027 e non funziona su Internet. Su un VPS, apri la porta 22000 e lascia chiusa l'interfaccia:
sudo ufw allow 22000/tcp
sudo ufw allow 22000/udpRinunci a tutte le funzionalità server: niente link di condivisione per chi non esegue Syncthing, nessun browser web per i file, nessun account utente e nessun cestino lato server, a meno che tu non abiliti il versioning dei file per ogni cartella. Il problema più comune è il file di conflitto. Se modifichi lo stesso file su due dispositivi mentre non possono comunicare, viene creato un file associato con un nome simile a notes.sync-conflict-20260806-142233-ABCD1EF.md. Non viene visualizzato alcun avviso, quindi cerca periodicamente sync-conflict.
Se non vuoi una cartella sincronizzata, ma un bucket in cui le applicazioni possano scrivere, ti serve un altro strumento: consulta l'object storage compatibile con S3 self-hosted. Per una panoramica più ampia, il confronto tra le alternative self-hosted a Dropbox include anche le soluzioni che non sono state inserite in questo confronto.
La regola decisionale
- Scegli Seafile se l'obiettivo è sincronizzare molti dati: numerosi file, file di grandi dimensioni, più dispositivi e la disponibilità ad accettare un archivio dati leggibile soltanto da Seafile.
- Scegli Nextcloud se l'obiettivo è una piattaforma: calendari, contatti, documenti e link di condivisione, con file normali su disco che qualsiasi strumento di backup può leggere.
- Scegli Syncthing se l'obiettivo è una cartella replicata e nient'altro.
Scegli con attenzione, perché la migrazione tra Seafile e Nextcloud è il vero vincolo. Non esiste un convertitore. Devi sincronizzare tutti i dati su un client, caricarli sull'altro server e sostenere il costo in termini di banda e tempo, mentre la cronologia delle versioni e i link di condivisione restano sul server precedente. Dimensionare la soluzione scelta oggi per i prossimi tre anni costa meno che cambiare nel secondo anno.
FAQ
Seafile è più veloce di Nextcloud per sincronizzare librerie di grandi dimensioni?
Sì, nei due casi che generalmente causano più problemi, e per un motivo verificabile. Seafile suddivide i file in blocchi con una dimensione media di circa 8 MB e trasferisce soltanto i blocchi modificati. Una modifica all'interno di un file di grandi dimensioni trasferisce quindi pochi blocchi. L'unità di trasferimento di Nextcloud è il file intero. La stessa modifica richiede quindi il nuovo upload dell'intero file. Inoltre, molti file di piccole dimensioni richiedono almeno una richiesta WebDAV ciascuno. Per questo la relativa API di bulk upload raggruppa i file piccoli. Misura i tempi sul tuo VPS prima di decidere, perché CPU, disco e collegamento di rete incidono quanto il protocollo.
Posso eseguire il backup di Seafile eseguendo rsync sulla directory dei dati?
Solo insieme ai database e nell'ordine documentato. Il manuale di Seafile indica di eseguire prima il backup del database SQL e poi quello della directory dei dati. In questo modo ogni record del database fa riferimento a un oggetto presente nel backup. Il comando rsync -az /opt/seafile-data/seafile /backup/data/ copia conf, seafile-data e seahub-data, ma da solo non è ripristinabile. L'object store non contiene infatti un albero di file leggibile e il database ne costituisce l'indice. Dopo aver ripristinato entrambe le parti, esegui seaf-fsck.sh e verifica l'output prima di considerare il risultato valido.
Ho bisogno di Nextcloud se voglio soltanto sincronizzare file?
No. Nextcloud è una piattaforma. Calendario, contatti e app store consumano memoria e richiedono attività di aggiornamento anche se non li utilizzi. Per la semplice sincronizzazione dei file, Seafile è il prodotto più leggero e offre il protocollo più veloce. Syncthing è ancora più leggero, perché non richiede un componente server da eseguire. Scegli Nextcloud quando ti servono le applicazioni aggiuntive, non come scelta predefinita.
Una libreria Seafile cifrata nasconde i nomi dei file?
No. Una libreria cifrata cifra il contenuto dei file sul client e la password non raggiunge mai il server. Tuttavia, nomi delle cartelle, nomi dei file, dimensioni dei file e cronologia delle modifiche restano visibili sul server. Se apri una libreria cifrata nell'interfaccia web, la password viene inoltre inviata al server. Il server decifra la chiave del file e conserva la password in memoria per un'ora. Se anche i nomi sono sensibili, non utilizzare quella libreria nell'interfaccia web e cifra i dati a un altro livello.
Quanta RAM devo assegnare a Seafile o Nextcloud su un VPS?
Inizia con 4 GB e 2 core per una delle due soluzioni, se prevedi un numero ridotto di utenti. Monitora poi l'utilizzo della memoria durante la generazione delle anteprime e le ricerche. La documentazione di Seafile indica come requisito minimo 2 GB di RAM e una CPU con 2 core sopra 2 GHz. La documentazione di Nextcloud raccomanda 512 MB per processo PHP. Devi moltiplicare questo valore per il numero di worker prima di aggiungere il database e la cache. Syncthing funziona senza problemi con 1 GB.