Spostare una cartella di dati di Nextcloud su un disco rigido esterno più capiente potrebbe sembrare una semplice operazione di copia e modifica. Non lo è. Il dettaglio fondamentale è che Nextcloud identifica la memoria locale tramite il suo percorso assoluto sul disco. Se tale percorso viene modificato per errore, il server può trattare i file come se si trovassero in una posizione di archiviazione diversa, il che può portare a record di file duplicati o orfani, metadati danneggiati o perdita delle relazioni di condivisione.
L'approccio pratico più sicuro per un'installazione esistente è quindi quello di mantenere Nextcloud con lo stesso percorso della directory dei dati , spostando i byte effettivi sul disco esterno. Il manuale di amministrazione di Nextcloud raccomanda esplicitamente di spostare la directory e quindi di creare un collegamento simbolico dal percorso originale alla nuova posizione. Il manuale avverte inoltre che la modifica diretta datadirectoryrichiede modifiche al database e non è un metodo di migrazione supportato. Consultare la guida alla risoluzione dei problemi della directory dei dati di Nextcloud .
Prima di iniziare: cosa è verificato e cosa dipende dalla configurazione?
| Domanda | Risposta pratica |
Posso semplicemente datadirectorymodificarlo config.php? | Non è sicuro da solo. Nextcloud documenta che la modifica del percorso assoluto di local storage può interrompere le relazioni del database. È preferibile preservare il percorso originale con un collegamento simbolico. |
| Ho bisogno di un backup completo? | Sì. La documentazione di backup di Nextcloud include la configurazione, la directory dei dati, il database e i dati relativi ad applicazioni/temi personalizzati. Non considerare il vecchio disco come unica copia di ripristino. |
| L'unità esterna deve necessariamente essere formattata in ext4? | Questa procedura non impone l'utilizzo di un filesystem specifico. Gli esempi seguenti utilizzano ext4 perché la gestione standard di proprietà e permessi in Linux è piuttosto semplice. Altri filesystem potrebbero richiedere opzioni di montaggio diverse. |
Dovrei correre files:scan --alldopo? | Solitamente non è consigliabile utilizzarlo per uno spostamento che preservi il percorso dei file. Usalo quando i file sono effettivamente mancanti dalla cache o quando i file sono stati copiati nella struttura dati al di fuori di Nextcloud e necessitano di una nuova scansione immediata. |
| Un disco rigido USB è affidabile quanto un disco interno? | Dipende dal contenitore, dal cavo, dall'alimentazione, dal file system e dall'host. Un'unità rimovibile che diventa non disponibile rappresenta un rischio per la disponibilità, quindi rendi il mount permanente e verificalo prima di avviare Nextcloud. |
1. Montare l'unità esterna su un percorso stabile
Innanzitutto, identifica il dispositivo e il filesystem. Su Linux, comandi come lsblk -fe blkidmostrano l'UUID del filesystem. Evita di creare una configurazione permanente basata su un nome di dispositivo come /dev/sdb1; i nomi dei dispositivi Linux possono cambiare quando viene aggiunto hardware o quando cambia l'ordine di rilevamento. Il manuale di fstab per Linux raccomanda di utilizzare identificatori UUID o LABEL per i mount persistenti.
lsblk -f
sudo blkid /dev/sdb1
sudo mkdir -p /mnt/nextcloud-data-storage
Aggiungi una voce appropriata a /etc/fstab. Sostituisci l'UUID e il tipo di filesystem di esempio con i valori del tuo disco:
UUID=YOUR-FILESYSTEM-UUID /mnt/nextcloud-data-storage ext4 defaults 0 2
Quindi, prima di toccare Nextcloud, testa il montaggio:
sudo mount -a
findmnt /mnt/nextcloud-data-storage
df -h /mnt/nextcloud-data-storage
Prima di spostare qualsiasi file di Nextcloud, verifica l'unità esterna tramite UUID e conferma il punto di montaggio.
Errore comune: una directory con quel nome /mnt/nextcloud-data-storagenon dimostra che il disco sia montato lì. Se l'unità non è presente, la directory del punto di montaggio può comunque esistere sul disco di sistema. Azione: utilizzare findmnto mountpointogni volta che si testa la migrazione e dopo un riavvio.
2. Eseguire il backup di Nextcloud e interrompere le operazioni di scrittura.
La guida di backup di Nextcloud attualmente in vigore afferma che un backup recuperabile include la directory dei dati, la configurazione, il database e altri contenuti specifici dell'implementazione, come app e temi personalizzati. Consulta la documentazione ufficiale di Nextcloud relativa al backup e assicurati che il backup sia archiviato in una posizione diversa dall'unità che stai per ripartizionare o riutilizzare.
Successivamente, abilita la modalità di manutenzione dalla directory di installazione di Nextcloud. Su Debian e Ubuntu l'account del server web è generalmente www-data:
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --on
Le linee guida per la migrazione specificano inoltre che nessun processo cron dovrebbe essere in esecuzione durante lo spostamento e raccomandano di arrestare i server web/applicativi mentre i dati vengono trasferiti. Le modalità per farlo dipendono dall'implementazione: Apache, Nginx con PHP-FPM, Docker Compose, Snap, AIO e Kubernetes hanno tutti limiti di servizio diversi.
Azione: disabilitare la voce cron di Nextcloud o arrestare il servizio cron pertinente, quindi arrestare il servizio web/app prima della copia finale. Se il set di dati è molto grande, è possibile pre-caricare il disco esterno mentre il sito è online, quindi entrare in modalità di manutenzione, arrestare i processi di scrittura ed eseguire un rsyncpassaggio finale per acquisire le modifiche.
3. Copiare l'intera directory dei dati, inclusi i file nascosti
Non copiare solo le cartelle utente. La directory dei dati contiene anche file nascosti, come .ncdatai dati delle applicazioni, che appartengono allo spazio di archiviazione. Nextcloud menziona esplicitamente i file nascosti/con il punto nella sua procedura di spostamento.
Supponiamo che la directory corrente sia /var/www/nextcloud/datae che il disco esterno sia montato in /mnt/nextcloud-data-storage. Crea la destinazione e copia la directory:
sudo mkdir -p /mnt/nextcloud-data-storage/data
sudo rsync -Aax --info=progress2 /var/www/nextcloud/data/ /mnt/nextcloud-data-storage/data/
La documentazione di ripristino di Nextcloud utilizza rsync -Aaxcome esempio la conservazione della struttura delle directory e dei metadati. Per installazioni molto grandi, eseguire una seconda passata dopo l'arresto di tutti i processi di scrittura e analizzare l'output. Le opzioni esatte necessarie possono variare a seconda che l'origine utilizzi ACL, attributi estesi, filesystem non standard o storage montato su container.
Interrompi le scritture in background e copia l'intera struttura ad albero dei dati, inclusi i file di metadati nascosti di Nextcloud.
Errore comune: una copia completata significa che la migrazione è terminata. Non è così. Nextcloud ha ancora bisogno del percorso previsto e l'utente HTTP deve essere in grado di attraversarlo e scriverci nella nuova posizione. Azione: verificare il numero di file o i checksum dei campioni prima di cambiare percorso e mantenere intatta la directory di origine finché il nuovo spazio di archiviazione non ha superato i test.
4. Preservare il percorso dati originale con un collegamento simbolico
Questa è la misura di sicurezza fondamentale. Supponiamo che Nextcloud utilizzi attualmente:
'datadirectory' => '/var/www/nextcloud/data',
Non modificare quel valore per la migrazione consigliata che preserva il percorso. Mantieni invece la vecchia directory come copia di ripristino e sostituiscila con un collegamento simbolico che punta all'unità esterna:
sudo mv /var/www/nextcloud/data /var/www/nextcloud/data.old
sudo ln -s /mnt/nextcloud-data-storage/data /var/www/nextcloud/data
ls -ld /var/www/nextcloud/data
Nextcloud documenta questo metodo di collegamento simbolico perché la memoria locale viene identificata dal percorso assoluto. Grazie al collegamento, Nextcloud continua a visualizzare i dati /var/www/nextcloud/dataanche se i byte risiedono sul disco esterno.
Prima di apportare modifiche generali alle autorizzazioni, verifica la proprietà dei diritti:
stat -c '%U:%G %a %n' /var/www/nextcloud/data.old
stat -c '%U:%G %a %n' /mnt/nextcloud-data-storage/data
namei -l /mnt/nextcloud-data-storage/data
L'utente HTTP deve essere in grado di attraversare le directory superiori e leggere/scrivere la directory dei dati. Il proprietario corretto varia a seconda della distribuzione e del metodo di installazione. La documentazione occ di Nextcloud indica che l'account HTTP è comunemente presente www-datasu Debian/Ubuntu, apachesu Fedora/CentOS e diverso su altri sistemi.
Mantieni il percorso originale della directory dei dati e puntalo al disco esterno tramite un collegamento simbolico.
Errore comune: l'esecuzione ricorsiva di un comando generico chmod 777corregge i permessi. Questo potrebbe nascondere il problema reale e indebolire la sicurezza. Soluzione: confrontare la nuova directory con la proprietà e i permessi originali, preservare gli ACL laddove utilizzati ed effettuare solo le correzioni minime necessarie per l'utente HTTP.
E se volessi davvero cambiare datadirectory?
Nextcloud descrive una procedura senza symlink, ma la stessa documentazione la etichetta come non supportata e avverte che può danneggiare il database. Richiede sia la modifica config.phpche l'aggiornamento della local::/old-data-dir/voce corrispondente nella oc_storagestabella.
Non si tratta semplicemente di una sintassi alternativa per la stessa operazione; modifica l'identificativo di archiviazione che Nextcloud registra internamente. Azione: utilizzare il metodo del collegamento simbolico a meno che non si disponga di un backup testato, di una procedura di ripristino testata e di una specifica ragione operativa per rimuovere il vecchio percorso. Per una nuova installazione di Nextcloud, scegliere invece la posizione finale dei dati durante l'installazione. Nextcloud afferma esplicitamente che è più semplice rispetto a spostarli in seguito.
5. Riavvia, verifica il montaggio e rimetti Nextcloud online.
Prima di avviare Nextcloud, verifica che il filesystem esterno sia effettivamente montato e che il collegamento simbolico punti ad esso:
findmnt /mnt/nextcloud-data-storage
readlink -f /var/www/nextcloud/data
sudo -E -u www-data test -r /var/www/nextcloud/data/.ncdata && echo readable
Riavvia il servizio web/applicativo e riattiva il cron job di Nextcloud utilizzando il metodo appropriato per la tua implementazione. Quindi disattiva la modalità di manutenzione e verifica lo stato del server:
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --off
sudo -E -u www-data php occ status
Accedi e prova diverse operazioni: apri un file esistente, carica un nuovo file, rinominalo, eliminalo, ripristinalo dal Cestino e verifica che un altro client possa sincronizzarlo. Riavvia l'host una volta e ripeti la procedura findmnt; in questo modo è possibile individuare una voce non valida /etc/fstabprima che diventi un problema durante un'interruzione del servizio.
Dopo il passaggio, verifica sia il montaggio del sistema operativo che il normale funzionamento dei file in Nextcloud.
Di cosa hai bisogno occ files:scan --all?
Non automaticamente. La documentazione del comando `files` di Nextcloud afferma che files:scanaggiorna la cache dei file per i file nuovi o modificati e può essere utile dopo una copia manuale o quando si indagano incoerenze nella cache. Uno spostamento che preserva il percorso, se eseguito correttamente, ha lo scopo di mantenere gli stessi file e lo stesso percorso logico di archiviazione locale, quindi una scansione completa non dovrebbe essere la procedura predefinita "per sicurezza".
Azione: innanzitutto testare l'interfaccia utente e confrontare i file previsti. Se i file risultano mancanti in Nextcloud pur essendo presenti sul disco, utilizzare una scansione mirata o, se giustificato, files:scan --all. Tenere presente che una scansione completa su un'installazione di grandi dimensioni può richiedere molto tempo.
Lista di controllo finale per la migrazione
- Il database, la configurazione e il backup dei dati aggiornati esistono al di fuori del disco che viene migrato.
- Il filesystem esterno ha un punto di montaggio stabile configurato tramite UUID o ETICHETTA.
findmntconferma che l'unità esterna è effettivamente montata.
- Le operazioni di scrittura di Nextcloud e i processi cron vengono interrotti durante la sincronizzazione finale.
- L'intera directory dei dati, incluso
.ncdata, è stata copiata.
- Il percorso originale
datadirectoryviene conservato tramite un collegamento simbolico.
- L'utente HTTP può attraversare il percorso di montaggio e leggere/scrivere i dati.
- Nextcloud si avvia senza errori di archiviazione e
occ statusfunziona normalmente.
- I test di caricamento, ridenominazione, eliminazione, ripristino, download e sincronizzazione sono andati a buon fine.
- Il server è stato riavviato una volta per verificare che l'unità esterna venga montata correttamente all'avvio.
- La vecchia directory dei dati non è stata eliminata finché la nuova configurazione non è stata testata e non ne è stato effettuato un backup separato.
Il concetto fondamentale è semplice: la migrazione dei dati di Nextcloud non si limita alla copia del file system. Il percorso fa parte dell'identità di archiviazione locale di Nextcloud. Quando possibile, preservate tale percorso, rendete l'unità esterna un mount di sistema affidabile, interrompete le scritture durante la copia finale e conservate una copia di ripristino finché la nuova archiviazione non abbia superato sia i test dell'applicazione che un riavvio.