Nextcloud用戶數(shù)據(jù)備份、遷移及恢復(搶救適用)
這篇文章涉及到兩個問題:
問題1、最近Truenas里面舊版的Nextcloud 23.0崩了,啟動不了了,無奈只能重裝Nextcloud 25.0,重裝之后如何把舊版Nextcloud里面的數(shù)據(jù)遷移到新版是個問題,否則又重新上傳文件就太逆天了。
問題2、Nextcloud軟件原來存儲數(shù)據(jù)的路徑需要更改,或者原來存儲路徑的磁盤滿了想換到一個容量更大的磁盤路徑去。

這里先要知道Nextcloud數(shù)據(jù)文件在哪:
Nextcloud的數(shù)據(jù)文件分為系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù),可以看我另外的文章。
用戶數(shù)據(jù)(就是自己和其他用戶上傳的文件)是存在Nextcloud主目錄下data文件夾里面的,這里面有若干個以用戶名命名的文件夾,這些文件夾是可以直接復制、移動的,我們進行數(shù)據(jù)備份、數(shù)據(jù)遷移或者數(shù)據(jù)搶救就從這里入手了。
系統(tǒng)數(shù)據(jù)就是Nextcloud主目錄下除了data文件夾以外的其他文件和文件夾,這些文件在進行數(shù)據(jù)位置遷移的時候也是可以直接復制和移動的,復制和移動后直接啟動Nextcloud應用是可以被正常識別的。但如果是重裝Nextcloud,暫時沒找到可以搶救這部分數(shù)據(jù)的方法。(如果像同版本重裝那樣把這部分數(shù)據(jù)直接拷貝,重裝后的Nextcloud是無法正常運行的)


先討論問題1,軟件重裝之后如何搶救原來Nextcloud里面的用戶數(shù)據(jù),用戶數(shù)據(jù)是數(shù)量最多容量最大而且每個用戶都不一樣的數(shù)據(jù),這部分數(shù)據(jù)最好是能完整留存并遷移是最好的,這個目前是能夠做到的。
首先,重裝的Nextcloud,在重裝配置參數(shù)的時候,管理員的賬號密碼建議和舊版Nextcloud保持一致。重裝完畢后使用管理員賬號密碼進入Nextcloud確保是正確安裝的,此時新的Nextcloud里面是沒有任何數(shù)據(jù)的,管理員賬戶中也是沒有任何文件的。
然后給新、舊Nextcloud的路徑都暫時的開啟SMB共享。
如果你的舊版Nextcloud只有一個管理員賬戶需要遷移,可以往下翻一下跳過這一段,多個賬戶的遷移需要多一個步驟。
如果你的舊版Nextcloud除了管理員賬戶,還有其他的賬戶也需要一起遷移,那就接著往下看。
當你有多個賬戶需要遷移的時候,需要在重裝后的Nextcloud的用戶管理頁面,將舊版的Nextcloud賬戶在新裝的Nextcloud里面一個個手動新建出來,這時候新建的賬戶名要和舊版的賬戶名一樣,至于密碼的話就沒法跟舊版Nextcloud一樣了,只能你自己重新給其他賬戶設置一個默認的密碼了。

新建完成后在新版Nextcloud的data文件夾下面你應該可以看一系列跟舊版Nextcloud的data文件夾下面一樣的子文件夾,這些子文件夾的名稱就是各個賬戶的賬戶名。

這個時候在Truenas APPS里面把重裝的Nextcloud停止運行。

下面開始用戶數(shù)據(jù)的遷移,所有人的步驟都一樣了。
結(jié)合前面的內(nèi)容,只需要把舊版Nextcloud目錄下的data文件夾拷貝進新版Nextcloud目錄下就算完成大部分工作了。
關于拷貝用戶數(shù)據(jù),最簡單的辦法就是把舊版Nextcloud的data文件夾通過smb直接把目錄下的所有文件全部拷貝到新版Nextcloud的data文件夾目錄下就行了,但是不推薦,因為兩個目錄往往是不同盤符用這種方式受限于smb的運作機制,這種拷貝方式速度太慢了,除非你的用戶數(shù)據(jù)很少又是大文件,那可以這樣。
根據(jù)官方文檔,推薦的拷貝方式是使用rsync命令。
具體來說,就是分別找到Truenas里面分別存儲新舊數(shù)據(jù)的文件夾路徑,假設分別為:
?/nextcloud-old/ 和 /nextcloud-new/
然后進入Truenas的SSH,執(zhí)行以下命令:
前后兩個路徑分別是原始路徑和目標路徑
這里有個需要注意的地方就是:
路徑參數(shù)的第一個參數(shù),如果以/結(jié)尾,那是把這個文件夾里面的數(shù)據(jù)復制到新路徑中(不包括文件夾本身),如果沒有/,這是把這個文件夾整個都復制到新路徑中去(包括文件夾本身),用的時候按需設置。而第二個路徑參數(shù),帶不帶/結(jié)尾好像都沒區(qū)別。使用的時候根據(jù)自己的需求進行區(qū)分。
如果需要拷貝的文件太多,則可以使用? nohup 命令把拷貝任務掛起到后臺執(zhí)行,這樣就可以把SSH關了等它自己復制就好了。
后臺執(zhí)行的文件復制記錄會生成一個文件存放到運行這條命令的目錄下。
復制完成后在Truenas APPS里面啟動Nextcloud。此時再登陸進Nextcloud之后發(fā)現(xiàn)還是任何變化都沒有,管理員賬號下還是空空如也,用戶管理里面也看不到其他賬號的文件內(nèi)容變化,不要慌。
接著就按照下圖的步驟,進入Nextcloud的命令行,注意查看圖片里面的具體選項。


進入命令行之后輸入 ls 這個時候會顯示出Nextcloud程序根目錄中所包含的文件和文件夾名稱,這些名稱就對應著文章前面所講的Nextcloud主目錄下的那些文件和文件夾名稱,看到這些說明命令行進入對了。

然后輸入命令:
等待Nextcloud自動掃描路徑下的用戶數(shù)據(jù),這個時候Nextcloud就能自動識別你拷貝到對應賬戶名下的各個原始用戶數(shù)據(jù)了。

此時再用管理員賬戶登陸進Nextcloud應用中,發(fā)現(xiàn)管理員賬戶原來上傳的文件都回來了,再查看用戶管理頁面,發(fā)現(xiàn)其他用戶賬戶的“使用量”這一項也不是0了,說明識別到他們各自賬戶的原始數(shù)據(jù)了。
到此,舊版軟件數(shù)據(jù)也算是搶救完了,這個方法我在Truenas論壇問過和也跟其他人討論過。這個方法需要給其他原始用戶手動新建賬戶,還會重置掉他們原始的賬戶密碼,而且還得一個個手動操作以及重命名data文件夾名稱。雖然不完美,但是這應該是目前唯一可行的方案了,至少保住了用戶上傳的數(shù)據(jù)。

再說問題2,有了前面的基礎,問題2就很好解決了。
應對問題1我們只能用rsync遷移data文件夾,但是到了問題2,我們直接用rsync把整個Nextcloud主目錄進行遷移就好了。遷移后進入Nextcloud的配置頁面,把Nextcloud的數(shù)據(jù)路徑從舊的路徑改為新的路徑,再重新啟動Nextcloud就完事了,全部都能自動識別,不用任何命令行的操作了。