Przeniesienie folderu danych Nextcloud na większy zewnętrzny dysk twardy brzmi jak proste kopiowanie i edycja. W rzeczywistości tak nie jest. Ważne jest, że Nextcloud identyfikuje pamięć lokalną na podstawie ścieżki bezwzględnej na dysku. Jeśli ścieżka ta ulegnie nieostrożnej zmianie, serwer może potraktować pliki jako inną lokalizację, co może prowadzić do duplikacji lub osieroconych rekordów plików, uszkodzonych metadanych lub utraty relacji współdzielenia.
Najbezpieczniejszym praktycznym podejściem w przypadku istniejącej instalacji jest zatem pozostawienie Nextcloud w widoku tej samej ścieżki do katalogu danych podczas przenoszenia samych bajtów na dysk zewnętrzny. Aktualny podręcznik administratora Nextcloud wyraźnie zaleca przeniesienie katalogu, a następnie utworzenie dowiązania symbolicznego z oryginalnej ścieżki do nowej lokalizacji. W podręczniku ostrzega się również, że bezpośrednia zmiana datadirectorywymaga zmian w bazie danych i nie jest obsługiwaną metodą migracji. Zapoznaj się z poradnikiem rozwiązywania problemów z katalogiem danych Nextcloud .
Zanim zaczniesz: co jest weryfikowane, co zależy od Twojej konfiguracji?
| Pytanie | Praktyczna odpowiedź |
Czy mogę po prostu datadirectoryedytować config.php? | Samo w sobie nie jest bezpieczne. NextCloud dokumentuje, że zmiana bezwzględnej ścieżki do pamięci lokalnej może zerwać relacje z bazami danych. Preferowane jest zachowanie oryginalnej ścieżki za pomocą dowiązania symbolicznego. |
| Czy potrzebuję pełnej kopii zapasowej? | Tak. Dokumentacja kopii zapasowej Nextcloud obejmuje konfigurację, katalog danych, bazę danych oraz odpowiednie dane niestandardowej aplikacji/motywu. Nie traktuj starego dysku jako jedynej kopii zapasowej. |
| Czy dysk zewnętrzny musi być ext4? | Ta procedura nie wymaga konkretnego systemu plików. Poniższe przykłady wykorzystują ext4, ponieważ standardowe zasady dotyczące własności i uprawnień w systemie Linux są proste. Inne systemy plików mogą wymagać innych opcji montowania. |
Czy powinienem files:scan --allpotem pobiec? | Zwykle nie służy do przenoszenia danych z zachowaniem ścieżki. Należy go używać, gdy pliki faktycznie znikają z pamięci podręcznej plików lub gdy pliki zostały skopiowane do drzewa danych poza NextCloud i wymagają natychmiastowego ponownego skanowania. |
| Czy dysk twardy USB jest tak samo niezawodny jak dysk wewnętrzny? | Zależy to od obudowy, kabla, zasilania, systemu plików i hosta. Niedostępność dysku wymiennego stanowi zagrożenie dla dostępności, dlatego należy ustawić stałe montowanie i zweryfikować je przed uruchomieniem NextCloud. |
1. Zamontuj dysk zewnętrzny w stabilnej ścieżce
Najpierw zidentyfikuj urządzenie i system plików. W systemie Linux polecenia takie jak lsblk -fi blkidpokazują identyfikator UUID systemu plików. Unikaj budowania trwałej konfiguracji wokół nazwy urządzenia, takiej jak /dev/sdb1; Nazwy urządzeń w systemie Linux mogą ulec zmianie po dodaniu sprzętu lub zmianie kolejności wykrywania. Podręcznik fstab dla systemu Linux zaleca stosowanie identyfikatorów UUID lub LABEL dla trwałych montowań.
lsblk -f
sudo blkid /dev/sdb1
sudo mkdir -p /mnt/nextcloud-data-storage
Dodaj odpowiedni wpis do /etc/fstab. Zastąp przykładowy UUID i typ systemu plików wartościami z własnego dysku:
UUID=YOUR-FILESYSTEM-UUID /mnt/nextcloud-data-storage ext4 defaults 0 2
Następnie przetestuj mocowanie przed dotknięciem Nextcloud:
sudo mount -a
findmnt /mnt/nextcloud-data-storage
df -h /mnt/nextcloud-data-storage
Przed przeniesieniem jakichkolwiek plików Nextcloud sprawdź dysk zewnętrzny według identyfikatora UUID i potwierdź jego punkt montowania.
Powszechne nieporozumienie: nazwa katalogu /mnt/nextcloud-data-storagenie dowodzi, że dysk jest tam zamontowany. Jeśli dysk jest nieobecny, katalog punktu montowania może nadal istnieć na dysku systemowym. Działanie: użyj findmntlub mountpointza każdym razem, gdy testujesz migrację i po ponownym uruchomieniu.
2. Utwórz kopię zapasową NextCloud i zatrzymaj zapis
Aktualny poradnik tworzenia kopii zapasowych Nextcloud mówi, że odzyskiwalna kopia zapasowa obejmuje katalog danych, konfigurację, bazę danych i inne treści specyficzne dla danego wdrożenia, takie jak aplikacje niestandardowe i motywy. Zapoznaj się z oficjalną dokumentacją tworzenia kopii zapasowych Nextcloud i upewnij się, że kopia zapasowa jest przechowywana w innym miejscu niż dysk, który zamierzasz ponownie partycjonować lub wykorzystać.
Następnie włącz tryb konserwacji w katalogu instalacyjnym Nextcloud. W systemach Debian i Ubuntu konto serwera WWW to zazwyczaj www-data:
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --on
Wskazówki dotyczące migracji mówią również, że podczas przenoszenia danych nie powinno być uruchamiane żadne zadanie cron i zalecają zatrzymanie serwerów webowych/aplikacyjnych na czas przenoszenia danych. Sposób wykonania tej czynności zależy od wdrożenia: Apache, Nginx, PHP-FPM, Docker Compose, Snap, AIO i Kubernetes mają różne granice usług.
Działanie: wyłącz wpis cron w Nextcloud lub zatrzymaj odpowiednią usługę cron, a następnie zatrzymaj usługę internetową/aplikacyjną przed wykonaniem ostatecznej kopii. Jeśli zestaw danych jest bardzo duży, możesz wstępnie załadować dane na dysk zewnętrzny, gdy witryna jest online, a następnie przejść do trybu konserwacji, zatrzymać procesy zapisywania i uruchomić ostateczny rsyncprzebieg w celu przechwycenia zmian.
3. Skopiuj cały katalog danych, łącznie z plikami ukrytymi
Nie kopiuj tylko folderów użytkownika. Katalog danych zawiera również pliki ukryte, takie jak .ncdatadane aplikacji, które należą do magazynu. Nextcloud jawnie wywołuje pliki ukryte/dot w swojej procedurze przenoszenia.
Załóżmy, że bieżący katalog to /var/www/nextcloud/data, a dysk zewnętrzny jest zamontowany w /mnt/nextcloud-data-storage. Utwórz katalog docelowy i skopiuj go:
sudo mkdir -p /mnt/nextcloud-data-storage/data
sudo rsync -Aax --info=progress2 /var/www/nextcloud/data/ /mnt/nextcloud-data-storage/data/
Dokumentacja przywracania danych w Nextcloud służy rsync -Aaxjako przykład zachowania drzewa katalogów i metadanych. W przypadku bardzo dużych instalacji należy uruchomić drugi przebieg po zatrzymaniu wszystkich modułów zapisujących i sprawdzić dane wyjściowe. Dokładne opcje mogą się różnić, jeśli źródło korzysta z list kontroli dostępu (ACL), rozszerzonych atrybutów, nietypowych systemów plików lub pamięci masowej montowanej w kontenerze.
Zatrzymaj zapis w tle i skopiuj całe drzewo danych, łącznie z ukrytymi plikami metadanych Nextcloud.
Powszechne błędne przekonanie: ukończona kopia oznacza zakończenie migracji. Tak nie jest. Nextcloud nadal potrzebuje oczekiwanej ścieżki, a użytkownik HTTP musi mieć możliwość przejścia i zapisania nowej lokalizacji. Działanie: sprawdź liczbę plików lub przykładowe sumy kontrolne przed zmianą ścieżek i zachowaj katalog źródłowy w stanie nienaruszonym do czasu, aż nowy magazyn danych przejdzie testy.
4. Zachowaj oryginalną ścieżkę danych za pomocą łącza symbolicznego
To kluczowy środek bezpieczeństwa. Załóżmy, że NextCloud obecnie korzysta z:
'datadirectory' => '/var/www/nextcloud/data',
Nie zmieniaj tej wartości w przypadku zalecanej migracji z zachowaniem ścieżki. Zamiast tego zachowaj stary katalog jako kopię zapasową i zastąp go dowiązaniem symbolicznym wskazującym na dysk zewnętrzny:
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 dokumentuje tę metodę dowiązania symbolicznego, ponieważ pamięć lokalna jest identyfikowana przez ścieżkę bezwzględną. Po utworzeniu dowiązania Nextcloud nadal widzi dane, /var/www/nextcloud/datamimo że bajty znajdują się na dysku zewnętrznym.
Sprawdź własność przed wprowadzeniem ogólnych zmian uprawnień:
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
Użytkownik HTTP musi mieć możliwość poruszania się po katalogach nadrzędnych oraz odczytu/zapisu w katalogu danych. Prawidłowy właściciel różni się w zależności od dystrybucji i metody instalacji. Dokumentacja occ Nextcloud informuje, że konto HTTP jest zazwyczaj używane www-dataw systemach Debian/Ubuntu, apacheFedora/CentOS i różni się w zależności od innych systemów.
Zachowaj oryginalną ścieżkę dostępu do katalogu danych i wskaż dysk zewnętrzny za pomocą łącza symbolicznego.
Powszechne nieporozumienie: rekurencyjne uruchamianie generycznych chmod 777uprawnień naprawia problem. Może to ukryć prawdziwy problem, jednocześnie osłabiając bezpieczeństwo. Działanie: porównaj nowy katalog z pierwotnym właścicielem i uprawnieniami, zachowaj listy kontroli dostępu (ACL) tam, gdzie były używane, i wprowadź jedynie minimalną korektę wymaganą dla użytkownika HTTP.
A co jeśli naprawdę chcesz coś zmienić datadirectory?
Nextcloud opisuje procedurę bez dowiązań symbolicznych, ale ta sama dokumentacja określa ją jako nieobsługiwaną i ostrzega, że może ona uszkodzić bazę danych. Wymaga ona zarówno zmiany, config.phpjak i aktualizacji odpowiedniego local::/old-data-dir/wpisu w oc_storagestabeli.
To nie jest po prostu alternatywna składnia dla tej samej operacji; zmienia ona identyfikator magazynu, który Nextcloud rejestruje wewnętrznie. Działanie: użyj metody symlink, chyba że masz przetestowaną kopię zapasową, przetestowany proces przywracania i konkretny powód operacyjny, aby usunąć starą ścieżkę. W przypadku nowej instalacji Nextcloud, wybierz ostateczną lokalizację danych podczas instalacji. Nextcloud wyraźnie zaznacza, że jest to łatwiejsze niż późniejsze przenoszenie.
5. Uruchom ponownie, sprawdź mocowanie i ponownie uruchom NextCloud
Przed uruchomieniem Nextcloud sprawdź, czy zewnętrzny system plików jest rzeczywiście zamontowany i czy dowiązanie symboliczne prowadzi do niego:
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
Uruchom ponownie usługę internetową/aplikacyjną i ponownie włącz zadanie cron Nextcloud, używając metody odpowiedniej dla wdrożenia. Następnie wyłącz tryb konserwacji i sprawdź stan serwera:
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --off
sudo -E -u www-data php occ status
Zaloguj się i przetestuj kilka operacji: otwórz istniejący plik, prześlij nowy, zmień jego nazwę, usuń go, przywróć z Kosza i sprawdź, czy inny klient może go zsynchronizować. Zrestartuj hosta raz i powtórz findmnt; to wychwyci nieprawidłowy /etc/fstabwpis, zanim stanie się niespodzianką podczas awarii.
Po przełączeniu sprawdź zarówno montowanie systemu operacyjnego, jak i normalne operacje plików w Nextcloud.
Czy potrzebujesz occ files:scan --all?
Nie automatycznie. Dokumentacja poleceń plików w Nextcloud informuje, że files:scanaktualizuje pamięć podręczną plików dla nowych lub zmienionych plików i może być przydatna po ręcznym kopiowaniu lub podczas badania niespójności w pamięci podręcznej. Poprawnie wykonany ruch z zachowaniem ścieżki ma na celu zachowanie tych samych plików i tej samej logicznej ścieżki pamięci lokalnej, więc pełne skanowanie nie powinno być domyślnym krokiem „na wszelki wypadek”.
Działanie: najpierw przetestuj interfejs użytkownika i porównaj oczekiwane pliki. Jeśli plików brakuje w NextCloud, mimo że są obecne na dysku, należy użyć skanowania ukierunkowanego lub, w uzasadnionych przypadkach, files:scan --all. Należy pamiętać, że pełne skanowanie dużej instalacji może zająć dużo czasu.
Ostateczna lista kontrolna migracji
- Aktualna baza danych, konfiguracja i kopia zapasowa danych znajdują się poza dyskiem poddawanym migracji.
- Zewnętrzny system plików ma stabilne mocowanie skonfigurowane za pomocą UUID lub LABEL.
findmntpotwierdza, że dysk zewnętrzny jest rzeczywiście zamontowany.
- Podczas końcowej synchronizacji zapisy i zadania cron w Nextcloud są zatrzymywane.
- Został skopiowany cały katalog danych, łącznie z
.ncdata.
- Oryginalna
datadirectorynazwa ścieżki jest zachowywana za pomocą dowiązania symbolicznego.
- Użytkownik HTTP może przejść przez ścieżkę montowania i odczytać/zapisać dane.
- Nextcloud uruchamia się bez błędów pamięci masowej i
occ statusdziała prawidłowo.
- Testy przesyłania, zmiany nazwy, usuwania, przywracania, pobierania i synchronizowania zakończyły się powodzeniem.
- Serwer został uruchomiony ponownie jeden raz w celu sprawdzenia, czy dysk zewnętrzny montuje się niezawodnie podczas uruchamiania.
- Stary katalog danych nie zostanie usunięty, dopóki nowa konfiguracja nie zostanie przetestowana i nie zostanie wykonana oddzielna kopia zapasowa.
Najważniejsza idea jest prosta: migracja danych z Nextcloud to nie tylko kopia systemu plików. Ścieżka jest częścią tożsamości lokalnej pamięci masowej Nextcloud. Zachowaj tę ścieżkę, gdy tylko jest to możliwe, zapewnij niezawodne montowanie dysku zewnętrznego, zatrzymaj zapisy podczas tworzenia kopii końcowej i zachowaj kopię zapasową do momentu, aż nowa pamięć masowa przetrwa zarówno testy aplikacji, jak i ponowne uruchomienie.