儲存位置
選擇檔案內容的儲存位置。不同空間可以使用不同的位置。
本頁內容
類型
| 類型 | 適用情況 |
|---|---|
| 本機資料夾 | 儲存資料夾,或掛載到容器內的其他資料夾,例如 NAS |
| S3 相容服務 | AWS S3、Cloudflare R2、Backblaze B2、Wasabi、RustFS 等服務 |
| SFTP | 使用密碼或私密金鑰連線的伺服器(建議使用 Ed25519 金鑰,而非 RSA) |
| FTP / FTPS | 較舊的檔案伺服器 |
檔案存放在哪裡
在儲存資料夾與每個本機資料夾位置中,每個空間都是一般資料夾,裡面的檔案也都是保留原本名稱的一般檔案。開啟 /storage(compose.yaml 旁的 storage 資料夾),就能找到所有內容:
/storage/company/… the company space "All files"
/storage/teams/<space name>/… team spaces
/storage/users/<user name>/… each user's "My files"
建立空間時,系統會在所選儲存位置的資料夾內建立它的資料夾,通常是預設位置(若選擇已新增為本機資料夾位置的 NAS,則可能是 /nas/teams/…)。這些是資料夾空間:其他程式、SMB 或掃描器複製進去的檔案會出現在 ThirtyFile,網頁上的變更也會直接套用到資料夾。
- 名稱。資料夾以空間或使用者命名。檔案名稱不允許的字元會改成
_;ThirtyFile 會隱藏的名稱(例如desktop.ini)前面會加上_。若同名空間、手動建立的資料夾或已刪除空間留下的資料夾已占用該名稱,新資料夾會加上編號,例如teams/Sales (2)。 - 重新命名。重新命名空間不會改變資料夾名稱,因此依賴其路徑的程式、SMB 分享與備份仍可使用。控制台 › 空間管理會顯示每個空間的資料夾。
- 刪除。刪除空間,或刪除使用者及其檔案,只會從 ThirtyFile 移除它們:資料夾與檔案仍留在磁碟上,由你決定保留或刪除。同名的新空間或使用者會取得新的資料夾,不會取得舊檔案。將已刪除使用者的檔案移到另一個空間時,磁碟上的檔案也會移動。
- S3、SFTP 與 FTP則使用內容儲存區:以檔案內容產生名稱(
ab/cd/…),原本的名稱與資料夾結構只保存在 ThirtyFile 的資料庫。若以原本的資料夾結構儲存,在那裡重新命名資料夾就必須複製裡面的每個檔案。當這類位置是預設位置時,新空間會使用內容儲存區,之後仍可移到其他位置。
新增位置
- 開啟控制台 › 儲存位置,按一下新增儲存位置。
- 選擇類型,填入位址與登入資訊。
- 按一下測試連線。系統會寫入、讀回並刪除一個小檔案;測試成功後才能儲存位置。只能寫入但無法刪除檔案的金鑰或帳號不會通過測試,因為 ThirtyFile 將無法清除已刪除的檔案。本機資料夾若尚不存在,儲存時會建立它(參閱未掛載的磁碟與分享)。S3、SFTP 與 FTP 在儲存時會放入一個小型
.thirtyfile-location檔案(參閱一個地方只能有一個位置)。 - 若新空間應建立在這裡,將它設為預設。
之後編輯位置時,只要伺服器、帳號、儲存桶、SFTP 主機金鑰與憑證檢查設定都未變,已儲存的密碼或金鑰就會保留。變更其中任何一項或重設主機金鑰後,必須重新輸入密碼或金鑰。
預設位置只決定新空間建立在哪裡:使用者的「我的檔案」、團隊空間,以及新伺服器上的「全部檔案」。建立團隊空間時可以選擇其他位置,新使用者的「我的檔案」也可以有個別位置(參閱個人空間)。每個空間會留在建立時的位置,因此變更預設位置不會搬移現有空間,新檔案也會繼續存到舊檔案所在的位置。只有搬移空間才會改變位置。
清單顯示的資訊
- 已使用空間:該位置上各空間的檔案。資料夾空間使用最近一次檢查時的資料夾檔案大小;內容儲存區則計算所存內容。多個檔案內容相同時只計算一次。儲存用量提供歷史紀錄。
- 可用空間:儲存資料夾與本機資料夾位置會顯示所在磁碟的剩餘空間與容量。
- 檔案與空間:該位置的資料夾空間在最近一次檢查時的檔案數量,加上內容儲存區中的內容數量(將游標移到數字上可分別查看),以及該位置上的空間數量。按一下空間數量可列出空間的類型、擁有者與大小,不會顯示裡面的內容。
當位置上還有空間、空間正在移入或移出,或內容儲存區仍有檔案時,不能刪除該位置。管理員從自選資料夾建立的資料夾空間(見下方)不屬於任何儲存位置。
供應商注意事項
- AWS S3:端點留空。
- Cloudflare R2:端點為
https://<account ID>.r2.cloudflarestorage.com,區域為auto。 - 自行架設:RustFS 可使用。選擇「自行架設」,並勾選「路徑式 URL」。
將空間搬移到其他位置
在控制台 › 空間管理選取空間,選擇搬移到其他位置…。任何空間都能搬到任何其他位置:內容儲存區之間、資料夾到內容儲存區,或搬到資料夾。對話方塊顯示目前位置與大小,並列出其他位置;位於這台伺服器磁碟上的位置也會顯示可用空間。目標位置空間不足時,對話方塊會提示,且無法開始搬移。繼續搬移只需容納尚未複製的部分;同一磁碟內直接搬移資料夾則不需額外空間。
搬移會在背景分三步執行(此處以內容儲存區中的空間為例;資料夾空間與搬移到資料夾的流程相似,差異見下方):
- 複製。空間的每個檔案、先前版本與資源回收筒中的項目都會複製到新位置,並以檔案的 SHA-256 指紋驗證每份副本。期間空間仍可使用;搬移期間上傳或修改的檔案也會複製。
- 切換。全部內容就緒後,空間會一次切換到新位置,之後的新檔案都會存到那裡。
- 清理。舊副本會在一分鐘後刪除,讓仍在讀取舊副本的下載有時間完成。
切換之前,空間仍在原本位置:停止或取消搬移不會改變使用者看到的內容。內容相同的檔案在整個系統只儲存一次,因此空間與其他位置的空間共用的內容也會一起搬移,那些空間之後也從新位置讀取該內容。
將資料夾空間搬移到 S3、SFTP 或 FTP
資料夾空間(位於儲存資料夾、本機資料夾位置或自選資料夾的空間)可搬到 S3、SFTP 或 FTP 位置的內容儲存區。檔案會改以內容儲存區形式儲存,名稱、資料夾、分享連結、權限、資源回收筒與先前版本都保留。
- 期間唯讀。從開始搬移到完成或取消,使用者可以開啟、下載與分享檔案,但不能修改;空間會顯示提示。暫停或停止的搬移仍保持唯讀,因為已複製的內容必須維持一致:請繼續搬移,或取消以恢復寫入。尚在等待第一次執行的搬移不會立刻讓空間唯讀。
- 資料夾的外部變更。搬移期間,ThirtyFile 以外的程式(例如 SMB 或掃描器)修改、新增或刪除的檔案,會在切換前檢查資料夾時找到並一併複製。更好的做法是讓其他程式在搬移完成前停止寫入。
- 名稱。內容儲存區不區分只有大小寫不同的名稱,而資料夾可能同時容納「Report.docx」與「report.docx」。其中一個會加上編號,例如「report (1).docx」;搬移詳細資訊會顯示重新命名的數量。
- 舊資料夾。空間切換到新位置後,系統會移除舊資料夾:只有與已複製內容完全一致的檔案才會刪除,接著移除清空的資料夾。最後一刻被修改的檔案,以及 ThirtyFile 不顯示的檔案(例如
Thumbs.db)會留下,並列在搬移詳細資訊中(個人空間只顯示數量,保護檔案名稱隱私)。 - 空間。每個檔案都會經過 ThirtyFile 資料目錄中的暫存檔,因此該目錄必須有足以容納空間內最大檔案的餘裕。開始前會檢查容量與資料夾是否存在;未掛載的磁碟不會被當成空的空間。
將空間搬移到資料夾
搬到儲存資料夾或本機資料夾位置(例如 NAS)的空間,會成為資料夾空間,取得獨立資料夾,命名方式與新空間相同(company、teams/<name> 或 users/<user name>,名稱已占用時加編號),且複製期間保持唯讀。
- 從 S3、SFTP 或 FTP 搬入。每個檔案會連同日期寫入新資料夾,檢查 SHA-256 後重新命名到正式位置;資源回收筒存到
.thirtyfile-trash,先前版本存到.thirtyfile-versions,與其他資料夾空間相同。資料夾無法原樣容納的名稱(含不允許的字元、掃描略過的名稱如Thumbs.db,或超過磁碟限制的長度)會改名,詳細資訊會顯示數量。空間切換後,內容儲存區會釋放檔案;若其他空間未使用相同內容,一分鐘後便會刪除。 - 從其他資料夾搬入。在同一磁碟上,資料夾會立即直接搬到新位置。在不同磁碟上,會複製資料夾中的全部內容,包括資源回收筒、版本與 ThirtyFile 不顯示的檔案,每個檔案都保留日期並檢查大小。期間從外部修改的檔案會在切換前檢查時找到並複製,之後按上述方式移除舊資料夾。若目標磁碟不區分大小寫(例如 CIFS 分享或 exFAT 磁碟),而空間含有只有大小寫不同的名稱(「Report.docx」與「report.docx」),這些項目不會複製,搬移會停止並列出衝突。請先將每組中的其中一個重新命名,再繼續搬移。
- 自選資料夾。顯示自選資料夾且不屬於任何位置的資料夾空間,也可用同樣方式搬到任何儲存位置。之後原本的資料夾會移除。
取消搬移到資料夾時,會移除這次建立的資料夾及已複製的內容。
多個空間,或位置上的所有內容
- 多個空間。在控制台 › 空間管理勾選空間(使用各列前的核取方塊,或表頭的全選),選擇將 … 個空間搬移到其他位置…。每個空間都有自己的搬移工作,依序執行。已位於目標位置或正在搬移的空間會略過,對話方塊會顯示數量。
- 位置上的所有內容。在控制台 › 儲存位置對位置選擇全部搬移到…,將全部空間(包含個人空間)移到另一個位置。位置會顯示進度。全部移走後,若原本是預設位置,系統會提供將目標位置設為預設的選項,並提供刪除舊位置的選項。
若目標位於這台伺服器的磁碟上,會一次檢查所有選取空間合計需要的可用空間。
追蹤搬移進度
控制台 › 搬移作業先列出未完成的搬移,再列出歷史紀錄。每筆包含空間(使用者的「我的檔案」以使用者命名)、來源與目標位置、已複製檔案與位元組數、速度、剩餘時間與狀態。工作執行時頁面會自動更新。
- 一次一個。搬移依啟動順序逐一執行,其餘等待。處理器較多且網路快速的伺服器可使用同時執行,最多八個搬移一起執行。
- 暫停與繼續。暫停會在目前檔案複製完後停止,並保留已複製內容。繼續時先等待排程,輪到後從停止處接續。ThirtyFile 在搬移期間停止或重新啟動,之後也以相同方式接續。
- 取消。空間留在原位置,已複製到新位置的內容會移除。
- 錯誤。無法複製的檔案會嘗試三次。若仍有失敗,其他檔案仍會複製,但搬移會以因錯誤停止結束,且不切換位置。詳細資訊列出失敗檔案與原因(使用者的「我的檔案」不顯示檔案名稱,因管理員無權查看)。修正原因後繼續搬移以重試,或取消工作。無法連線到新位置也會以相同方式停止。
- 歷史紀錄。完成與取消的搬移會保留 90 天(每個空間最新 20 筆不受天數限制),包含啟動者與時間。活動紀錄也會記錄搬移的開始、完成、失敗與取消。
搬移完成或取消前,不能刪除該空間,也不能刪除以它為「我的檔案」的使用者。
將全部內容複製到其他位置
在控制台 › 儲存位置的位置 … 選單中選擇全部複製到…,會把該位置的全部空間複製到另一個位置,來源保持不變:不會移除檔案,空間仍在原處,預設位置也不變。可用於在 NAS、異地儲存桶或可攜磁碟保存額外副本。若需要反覆建立並保留一段時間的快照,請參閱將檔案備份到其他位置;儲存與還原方式相同。
複製哪些內容
- 位置上的每個空間,包含個人空間:資料夾(含空資料夾)、檔案、資源回收筒與先前版本。對話方塊會列出空間,顯示檔案數量、資源回收筒占用量,以及將寫入目標位置的大小。
- 每份內容只存一次。相同內容的檔案只儲存一次,跨空間也一樣。空間的內容無論目前存放在哪裡都會複製(整個系統只儲存一份相同內容,因此空間的檔案內容可能存放在其他位置)。
- 副本會記錄每個資料夾的存取權限供參考。分享連結、我的最愛與進行中的上傳不會複製。
- 該位置上僅供其他位置空間使用的內容不會包含在內,因為它屬於那些空間。
副本存放在哪裡
每次複製會在目標位置取得獨立資料夾 .thirtyfile-backups/<id>,ThirtyFile 的其他功能不會寫入其中。既有內容不會被取代,副本彼此不混合。裡面包含:
objects/ab/cd/<sha256>:每份內容,以 SHA-256 命名;snapshots/<id>/manifest.jsonl:每個空間、資料夾、檔案與先前版本各占一行,包含路徑與內容的 SHA-256;snapshots/<id>/complete.json:最後寫入,包含清單的 SHA-256。沒有此檔案的副本不算完整,也不會提供還原;set.json:副本名稱、來來源位置,以及建立它的 ThirtyFile 資訊。
因此即使沒有 ThirtyFile,也能找到檔案:清單每一行都記錄檔案路徑與存放內容的物件。
目標可能與來源在同一磁碟或儲存服務;對話方塊會提示這樣的副本無法承受該磁碟或服務故障。相同路徑或互相包含的位置會被拒絕。未加密 FTP 會提示檔案以未加密方式傳輸。若目標位於本伺服器磁碟且可用空間不足,會拒絕複製;S3、SFTP 與 FTP 則無法得知剩餘容量。
複製期間變更的檔案
複製期間空間仍可使用。副本反映建立檔案清單時的狀態(截至):之後修改或刪除的檔案會以當時版本複製,因為內容在複製完成前不會刪除。資料夾空間的檔案會逐一讀取,並檢查讀取期間是否變更;變更過的會重讀。開始前會先檢查其他程式造成的資料夾變更。每個資料夾空間檔案都完整且符合索引紀錄,但其他程式在不同時間修改的全部檔案不代表同一瞬間的整體狀態。
追蹤、暫停與錯誤
控制台 › 備份列出副本、目前工作與進度。複製在背景執行,一次一項工作;關閉頁面後仍會繼續。
- 暫停與繼續。暫停會在目前項目完成後停止並保留已複製內容;繼續或 ThirtyFile 重新啟動後,從停止處接續。
- 錯誤。無法讀取的檔案會嘗試三次。若仍無法複製,工作會以因錯誤停止結束,且副本不完整。詳細資訊列出項目與原因(個人空間不顯示檔案名稱)。修正原因後按繼續重試。無法連線到位置也會以相同方式停止。
- 取消。從未完成的副本會從目標位置移除,來源不受影響。
- 檢查備份會從目標位置讀回全部內容,檢查每份內容的 SHA-256,以及每份清單與其
complete.json是否一致,並列出遺失或損壞的項目。 - 刪除備份會在確認後從目標位置移除資料夾。可以暫停,但不能取消:刪除到一半的副本無法還原。
副本刪除前,不能刪除持有它的位置或變更該位置的資料夾。移除未使用內容與永久刪除檔案都不會查看 .thirtyfile-backups,因此不會移除副本;瀏覽也不會開啟它(其中清單包含個人空間的檔案名稱)。活動紀錄會記錄副本的建立、還原、檢查與刪除。
從副本還原
選取副本並選擇還原…,再選擇要還原的空間。內容會放入空間本身或你選擇的其他公司/團隊空間頂層的新資料夾,名稱為已還原 <空間> <日期>;不會取代任何既有內容。該空間位置仍保有的內容不會重複複製。
- 個人空間只能完整還原到其擁有者的個人空間,管理員始終看不到裡面的檔案。
- 資源回收筒內容預設略過,除非勾選也還原資源回收筒中的項目。
- 新資料夾繼承目標空間的權限。先前版本與副本中記錄的存取權限仍留在副本;還原不會給任何人超過目標空間允許的權限。
- 資料夾無法容納的名稱會拒絕並列出;同一資料夾的名稱衝突(例如從資料夾空間的 A.txt 與 a.txt 還原到內容儲存區)會加上編號,工作會顯示提示。
- 停止的還原會從停止處接續,不會重複建立項目。
鏡像:在多個位置保有相同檔案
鏡像規則會把某位置上各空間的檔案保存到其他位置,檢查副本,並在原位置故障時從副本讀取。原位置永久遺失時,可將其他位置之一提升為主要位置,空間之後就在那裡讀寫。只有管理員能在控制台 › 鏡像查看與管理鏡像。
建立鏡像
選擇新增鏡像…(或儲存位置 … 選單中的製作鏡像…),然後設定:
- 製作鏡像的位置:要複製其空間的來來源位置,即主要位置。
- 保留副本的位置:依優先順序排列的一個或多個位置。每個位置可選擇變更後盡快同步(彙整數秒內的變更,再於背景複製),或排程同步(每幾分鐘、每幾小時,或在指定時區每日指定時間)。相同路徑或互相包含的位置會被拒絕。
- 副本數:除原始檔案外保留幾份副本,預設 1 份。副本會使用清單中最前面可用的位置,其餘作為備用。若位置數少於副本數,原則會提示並標示為需要處理。
- 空間:位置上的全部空間(含之後新增的),或只選擇勾選的空間。
- 從副本讀取、每幾天檢查一次(預設 1 天)、變更等待多久後通知管理員(預設 24 小時),以及速度限制。
每份內容在每個位置只複製一次,即使多個檔案或空間共用它。檔案、先前版本與資源回收筒都會複製。在目標位置,副本存放在內容儲存區(ab/cd/<sha256>),無論來源是何種空間。
資料夾空間
資料夾空間(儲存資料夾與本機資料夾位置上的全部空間)也能製作鏡像。檔案從資料夾讀取,並在讀取期間檢查;若有變更就重讀。其他程式持續寫入的檔案(例如紀錄或信箱)不會讓同步整體失敗:系統會複製最後一次完整讀到的內容,詳細資訊會標示複製期間有變更(從未完整讀到的檔案尚無副本,也以相同方式列出;個人空間不顯示檔案名稱)。下次同步會再讀取。網頁變更會在數秒後複製;其他程式透過 SMB 或掃描器造成的變更,則要等 ThirtyFile 偵測到:伺服器本機磁碟約 12 秒,NFS 或 SMB 掛載則在下次定期檢查時(預設每 15 分鐘,可調整)。每次同步前會先檢查資料夾變更。
副本如何維護
- 寫入時檢查。每份副本都會先讀回並比對 SHA-256,通過後才計入。既有副本若損壞或長度錯誤,會被取代。
- 每隔幾天會再次檢查,也可使用檢查副本逐一讀回。損壞或遺失的副本會標記,下次同步會從原始內容或其他正常副本補回。
- 短暫落後。副本在檔案變更後稍晚建立,不是同時寫入。位置故障前一刻修改的檔案可能尚未複製。控制台 › 鏡像顯示每個位置是否為最新、變更等待時間,以及最近同步計算時已持有與應持有的內容數量(原則變更後數秒更新)。同步與檢查歷史保留已完成工作 90 天,每個位置最多最新 1,000 筆,且最新 20 筆不受天數限制。
- 無法連線的位置會等待,每 5 分鐘重試,恢復後補齊。失敗的同步會一小時後再試,或按立即同步立刻重試。同步可以暫停、繼續與取消;繼續時從停止處接續,ThirtyFile 重新啟動後也是如此。
- 避免誤刪。清空資源回收筒、永久刪除檔案、移除未使用內容與待重試的刪除都不會刪除鏡像。只有內容已無人使用,且由建立它的原則執行,才會釋放副本。
- 通知管理員:原則需要處理時(空間原位置或副本位置無法連線、同步失敗、副本損壞、位置不足或變更等待逾時),會在應用程式與電子郵件以鏡像類型通知一次;恢復正常時再通知一次。
主要位置故障時
主要位置無法讀取檔案內容時(位置離線、內容遺失或資料夾空間的資料夾不存在),若原則允許從副本讀取,會改從其他位置上已驗證的副本讀取。副本是以 SHA-256 命名的相同內容,因此不會比 ThirtyFile 已知的版本更舊。資料夾空間以索引最後記錄的檔案為準:磁碟故障前數秒由其他程式修改、但 ThirtyFile 尚未偵測到的內容不會出現在副本。每次回退都會記錄於伺服器紀錄;活動紀錄則每個位置最多每 10 分鐘記錄一次(從鏡像讀取)。
只有讀取會回退。主要位置離線時,上傳與空間變更會等待,詳見位置離線時;變更絕不會只寫入鏡像。
提升位置為主要位置
主要位置永久遺失或準備停用時,選擇提升…並指定位置。提升不會自動發生。執行前,對話方塊會顯示兩個位置是否可連線、目標落後多少、會轉移多少內容與哪些空間,以及缺少多少內容。
- 已是最新的位置會立即提升。
- 主要位置仍可連線時,不允許提升落後的位置:請先同步。主要位置無法連線時,可勾選確認「缺少內容的檔案在舊主要位置恢復前無法讀取」後提升。若檢查提升條件期間缺少內容數量改變,系統不會變更任何內容;請重新檢視狀態後再試。
- 提升不會改變檔案。空間之後在提升的位置讀寫,它成為主要位置。執行中的同步會停止;當時正在儲存到舊主要位置的變更會被拒絕,可以再次嘗試。
- 資料夾空間的全部檔案與先前版本若在新主要位置都有已驗證副本,就會轉成該位置的內容儲存區空間,與搬移到 S3、SFTP 或 FTP相同:檔案不再位於其他程式可直接修改的資料夾。舊主要位置的資料夾保持原狀,不受修改;不再需要後可手動刪除。若想恢復資料夾形式,之後可將空間搬移到資料夾。未完整複製到新主要位置的資料夾空間仍留在原處,對話方塊會列出名稱。
- 舊主要位置保留所有原有內容,之後不再以主要位置身分寫入。它成為副本位置,標示舊主要位置,檢查中:恢復後會讀取並檢查副本,取代損壞內容,更新完整後才計為有效副本。內容不會自行搬回。若要恢復原位置,請等它更新完整後再次提升。
提升後請檢查原則的位置清單:提升的位置已不在副本清單中;若要保有原本的副本數,請新增其他位置。
移除位置或原則
從清單移除位置、減少副本數或刪除原則,都會停止建立新副本,但已建立的副本仍保留且受刪除保護。控制台 › 鏡像會顯示各位置不再有原則需要的副本數量,並提供移除…。刪除前會再次逐一檢查:原則仍需要的副本、該位置上的原始內容,以及目前來來源位置無法連線的資料夾空間副本都會保留。在此之前,不能刪除持有鏡像或用作原則來源/目標的位置。
資料夾空間:將伺服器資料夾作為空間
儲存資料夾或本機資料夾位置上的每個空間都是資料夾空間(參閱檔案存放在哪裡)。也能把伺服器上的現有資料夾(例如 NAS 分享)顯示為空間。檔案仍以一般檔案留在原位置,也可以透過 SMB 或掃描器直接修改。
- 將資料夾掛載到容器,例如
-v /srv/shared:/mnt/shared。 - 在控制台 › 空間管理按新增資料夾空間,輸入容器內路徑
/mnt/shared。 - 像一般團隊空間一樣新增成員。
使用者開啟資料夾時,ThirtyFile 會尋找外部變更(數秒內不重複檢查;空間正在變更時,例如複製大型資料夾,不檢查;被監看的空間也不檢查,詳見下方。此時清單顯示 ThirtyFile 已知的內容)。系統也每 15 分鐘檢查所有資料夾空間(可在控制台 › 一般調整),或按檢查變更立即執行(大型資料夾會在清單與底部訊息顯示進度,離開頁面仍會繼續)。在資料夾內搬移或重新命名的檔案與資料夾會保留分享連結及權限。檢查找到的項目沒有上傳者(上傳者欄與詳細資料的建立者顯示 —),也不會出現在任何人的最近使用,除非有人開啟或編輯它;舊版 ThirtyFile 找到的項目仍保留空間擁有者為上傳者。系統依磁碟記錄的建立時間區分搬移與新項目。若磁碟未記錄此資訊(部分網路分享),仍可依大小與日期辨識搬移檔案,但搬移資料夾會視為刪除後重新新增,失去分享連結與權限。
在支援的 Linux 本機檔案系統上,變更約 12 秒後會自動出現,因為 ThirtyFile 會監看資料夾。這類空間的定期檢查頻率降為四分之一(一般 15 分鐘設定下為每小時),補足監看可能漏掉的變更。NFS、SMB、9P 與 FUSE/virtiofs 掛載(含 Docker Desktop 分享的主機資料夾)可能不會回報外部變更。無法辨識的檔案系統也採用較保守的後備方式:開啟資料夾時重新檢查(最多每五秒一次),排程檢查維持正常間隔。不會寫入探測檔案來推斷主機事件是否可用。資料夾很多時可能達到 Linux 監看上限(fs.inotify.max_user_watches,常見為 8,192 或更多);紀錄會提示,其餘變更透過開啟時更新與定期檢查發現。在主機上使用 sysctl fs.inotify.max_user_watches=524288 提高上限。所有空間的每個資料夾都會計入(每個使用者都有自己的空間)。
Windows 與 macOS 的 Docker Desktop。主機分享資料夾的變更,會在 ThirtyFile 開啟或重新整理該資料夾時,以及定期檢查時發現,不一定立即出現。仍在寫入的檔案要等穩定後才顯示。重新命名或刪除可能啟動背景檢查,以區分移到空間其他位置與真正刪除。控制台 › 空間管理顯示變更是數秒內出現,或於開啟時檢查,以及實際排程間隔。將間隔設為零會停用排程,但監看不可用時,開啟資料夾仍會檢查。隨時可使用檢查變更做完整檢查。
大型資料夾空間檢查期間,控制台 › 空間管理顯示進度;讀取資料夾與更新索引耗時超過 10 秒時,紀錄會分別記下耗時。參考數值:SSD 上首次檢查 200,000 個檔案,讀取約半秒、建立索引約 25 秒;沒有變更時重新檢查約一至兩秒。網路掛載較慢,因為每個檔案的大小與日期都需透過網路查詢;大型 NFS 或 SMB 資料夾建議保留 15 分鐘或更長的定期檢查間隔。
網頁上的所有操作都會修改資料夾本身:上傳、建立資料夾、重新命名、搬移、複製、編輯與刪除。搬到不同磁碟的空間,或非資料夾空間時,先複製並驗證檔案,再移除來源;期間在資料夾中被修改的檔案會留下,下次檢查變更時出現。頁面底部訊息顯示長時間搬移或複製的進度;即使關閉頁面,伺服器仍會繼續。
- 資源回收筒。刪除項目會移到空間資料夾內隱藏的
.thirtyfile-trash,以便還原。清空資源回收筒或從其中刪除項目,才會移除檔案。 - 先前版本。在網頁儲存覆寫、上傳取代或還原舊版本時,原本的檔案會保存在空間資料夾內隱藏的
.thirtyfile-versions(磁碟支援時使用硬連結,否則直接搬入,因此大型檔案也能立即保留),ThirtyFile 不會把它們列為一般檔案。直接在資料夾內修改(例如透過 SMB)不會保留版本。永久刪除檔案時也會刪除其版本。該資料夾中沒有版本參照的檔案,存在滿一天後會由變更檢查移除。 - 同時編輯。有人在網頁編輯期間,檔案若在資料夾內被修改,不會覆寫外部變更:網頁版本會另存為
name (conflict copy),使用系統預設語言(若跟隨瀏覽器則為英文),與儲存者的語言無關。 - 大小寫。在不區分大小寫的磁碟(exFAT、NTFS、多數 SMB 分享)上,只有大小寫不同的資料夾名稱視為既有資料夾。將
Photos上傳到已有photos的位置,檔案會進入photos;新增資料夾Photos則會提示已存在。 - 下載。續傳會偵測期間已被取代的檔案並重新開始。下載期間被取代的檔案可能收到混合內容,請重新下載。
- 唯讀。建立空間時勾選唯讀,或之後使用設為唯讀,只允許瀏覽、下載與分享。
- 檔案擁有者。ThirtyFile 以
THIRTYFILE_RUN_AS指定的使用者寫入檔案(未設定時為 1000:1000),該使用者必須有資料夾寫入權限。若其他程式(例如 Samba 分享)以不同使用者寫入,請讓兩者加入相同群組並讓資料夾可由群組寫入,或把THIRTYFILE_RUN_AS設成其他程式使用的使用者。 - 刪除資料夾空間只會從 ThirtyFile 移除空間,資料夾與檔案仍留在伺服器。
- 一個資料夾只能屬於一個空間或位置:若它包含或位於其他空間資料夾、本機資料夾位置或 ThirtyFile 資料目錄內,會被拒絕,避免相同檔案重複顯示。系統資料夾(如
/etc、/run、/usr與磁碟根目錄)也會拒絕。 - Office 與系統暫存檔(
~$…、Thumbs.db、.DS_Store)不會顯示;以.thirtyfile-開頭的 ThirtyFile 內部檔案也不會顯示。網頁與 WebDAV 不允許使用這些名稱。解壓縮 ZIP 會略過這類項目;從其他空間搬移或複製到資料夾空間時,若來源含有這類名稱,會拒絕操作。符號連結、不是有效文字的名稱與資料夾內掛載的其他磁碟會略過,檢查變更會列出它們(其他人的個人空間只顯示數量,不顯示空間資料夾)。 - 仍在複製到資料夾的檔案,要等數秒內不再變更後才會出現。
- 未掛載的磁碟與分享。空間建立時,資料夾內會放入包含空間 ID 的小型隱藏檔
.thirtyfile-space。缺少此檔案且突然變空的資料夾,會視為未掛載磁碟或分享:空間保留項目、分享與歷史,檢查變更會提示。請重新掛載後檢查。網頁變更只會寫入含有該空間標記的資料夾;資料夾遺失或同名路徑掛載了不同磁碟時,上傳與變更會以資料夾不存在,或這裡掛載了不同的磁碟拒絕,且不會重建資料夾。含有其他空間標記的資料夾也不會檢查。只有含有該空間標記的資料夾可讀取檔案。唯讀空間可能沒有標記,因為不一定能寫入。標記遺失時,檢查變更只會在資料夾仍含有該空間項目時補回,否則只回報資料夾而不變更任何內容。空間內無法讀取的子資料夾也以同樣方式保留索引項目。若要清空空間,請在 ThirtyFile 刪除項目。 - 同時刪除、搬移或還原多個項目遇到錯誤時,資料夾中已變更的項目會復原,避免只完成一半。若 ThirtyFile 在同一磁碟搬移項目到空間期間停止,一天後的下次檢查會以原名將項目放回原資料夾。若在複製到其他磁碟期間停止,來源仍在原處,未完成副本會在該次檢查移除。重新命名、移到同一空間其他資料夾、移入或移出資源回收筒,以及保留先前版本時,會先寫入隱藏的
.thirtyfile-journal:若執行到一半停止,下次變更檢查會把項目放回原處,保留分享、存取權與歷史;無法依識別資訊區分項目的磁碟(Windows、exFAT)也適用。若原名稱期間被其他項目占用,項目會留在搬移後的位置並在那裡保留相關資訊。若儲存已將新內容放入正式位置,新內容會保留,原內容則保存為先前版本。 - 項目原本所在的資料夾在伺服器上被刪除或改名時,資源回收筒裡的項目仍會保留;還原後會放在空間的最上層資料夾。
檢查位置中的內容
控制台 › 儲存位置各位置的 … 選單還有三個操作,只有管理員可用。
逐步測試
執行檔案處理的每個步驟,並列出各步驟耗時:
- 連線到位置。
- 寫入小檔案,再讀回並比對。
- 以一般上傳的儲存方式上傳較大檔案(24 MB;S3 使用分段上傳),再下載並比對。兩者都會顯示 MB/s 速度。
- 刪除測試檔案,並確認已移除。
測試檔案存入 .thirtyfile-check 資料夾,完成後會刪除,步驟失敗也一樣。測試最多兩分鐘;連線慢時會略過大檔案,而非留下未完成內容。失敗步驟會說明原因,例如金鑰無法刪除檔案。
瀏覽
逐層顯示位置中的內容,每頁 200 個項目,附大小與日期。此處不能修改內容。可依儲存原樣下載單一檔案,但待刪除內容與尚在寫入的副本除外。
- 內容儲存區(
ab/cd/…,S3、SFTP 與 FTP 位於blobs下):每個項目標示是否有檔案、先前版本或資源回收筒項目使用,是否為其他位置內容的鏡像、等待刪除或完全未使用。有檔案使用時會顯示空間與檔案路徑。 - 儲存資料夾與本機資料夾位置上的資料夾空間會標示所屬空間。
- 個人空間保持隱私。其他人的個人空間會顯示名稱(例如「anna 的個人空間」),但不列出檔案、無法在此開啟資料夾,也不能下載內容。無論資料夾名稱大小寫如何(例如
users/anna寫為USERS/Anna),搬移期間(目標資料夾、已複製內容與清理完之前的舊資料夾),以及其他位置上標示所屬空間的鏡像,都適用此規則。 - 符號連結會列出但絕不跟隨,SFTP、FTP 與路徑中間的連結也一樣。
- 存放副本的
.thirtyfile-backups不能在此開啟,因其中清單含有個人空間的檔案名稱。副本請在控制台 › 備份管理。
尋找未使用內容
搜尋該位置內容儲存區中沒有檔案、先前版本或資源回收筒項目使用的內容,例如上傳途中伺服器停止所留下的內容。工作在背景執行,列出結果與總大小。最近 24 小時寫入的內容不會處理,因為上傳先儲存內容再登記;已等待刪除的內容也略過。
確認後,移除 N 個項目會只刪除清單列出的內容。刪除前逐一再次檢查;期間又被使用或寫入的內容會保留。活動紀錄會記下移除操作。
在 S3、SFTP 與 FTP,若 .thirtyfile-location 指向其他位置或其他 ThirtyFile 安裝,會拒絕搜尋與移除:那些內容不是未使用,而是屬於它們。
一個地方只能有一個位置
若兩個位置指向同一地方,彼此會將對方的檔案視為未使用內容。因此不能新增或改為其他位置已使用的地方:同一服務上的相同儲存桶與前綴,或同一 SFTP/FTP 伺服器上的相同資料夾(相對資料夾依帳號分別判定)。
S3、SFTP 與 FTP 的位置也會保存小型 .thirtyfile-location:第一行是位置 ID,第二行是 ThirtyFile 安裝 ID,新增位置時寫入。早於此功能建立的位置,會在下次連線檢查成功時補上。標記指向其他位置或其他 ThirtyFile 安裝的地方不能新增,也不會搜尋或移除其內容。刪除位置時會移除標記。
儲存用量與效能
控制台 › 儲存用量顯示儲存量、時間趨勢與儲存操作表現,只有管理員可見。頂部依空間類型、資源回收筒與先前版本顯示總量,下方每個位置與資料目錄各有一張卡片。
數字的意義
| 數字 | 計算內容 |
|---|---|
| 檔案 | 使用者看到的該位置空間檔案,不含資源回收筒,也是容量配額計算的內容。相同內容的兩個檔案會算兩次。資源回收筒與先前版本列在下方。 |
| ThirtyFile 儲存量 | ThirtyFile 真正保存的內容:相同內容只存一份的內容儲存區,加上資料夾空間檔案(含資源回收筒)與其中的先前版本。因共用內容可能小於檔案數值,也可能因資源回收筒與版本而更大。 |
| 磁碟 | 系統回報的整個磁碟用量,不論其中還有哪些其他內容。只適用於儲存資料夾與本機資料夾位置。同一磁碟上的兩個位置會提示,磁碟只計一次。 |
| 容量未知 | S3、SFTP 與 FTP 不回報剩餘容量;磁碟三秒內未回應也不會測量。此時不顯示百分比或預計用滿時間:未知不等於零。 |
| 備份 | 位置上保存的副本與備份;每份內容在每次副本或備份中只計一次。有備份的位置才會顯示。 |
| 鏡像 | 位置上保存、原始內容位於其他位置的鏡像。有鏡像的位置才會顯示。 |
| 等待刪除 | 刪除失敗的內容(例如位置離線)或搬移後的舊副本,在背景重試。其大小已無法得知。 |
| 資料目錄 | 資料庫、縮圖與進行中的上傳,以及所在磁碟。也列出搬移、執行中的工作與待刪除項目。 |
其他程式對資料夾空間檔案的變更,要在下次變更檢查後才計入。
操作
位置上的每次讀取、寫入、刪除、列目錄與連線檢查都會計時並計數,資料夾空間的檔案讀取與上傳也一樣。資料夾空間內的重新命名、刪除與掃描則不測量。計數在記憶體中進行,每五分鐘寫入一次,不會拖慢檔案操作。伺服器停止時最多會遺失五分鐘的統計。
- 工作類型。使用者檔案操作包含下載、預覽、上傳與儲存。背景工作包含搬移空間、壓縮與解壓縮、長時間複製與搬移,以及移除未使用內容。檢查與測試包含每 20 至 30 秒執行的連線檢查與逐步測試。分開統計可避免搬移讓上傳時間難以判讀,也不會把測試視為實際流量。
- 每次操作時間。以中位數(p50)與第 95 百分位(p95)顯示:一半操作比 p50 快,100 次中 95 次比 p95 快。百分位數誤差約 10%。讀取只計到可開始讀取的時間,不含之後傳輸;寫入則計到內容完成儲存。同一磁碟可能只需重新命名,因此很快。
- 傳輸量。每秒讀寫位元組數,取各期間平均。
- 失敗或逾時。包含失敗、耗時過長或被放棄的操作,例如使用者在上傳途中離開。中途斷線的下載也算失敗。使用者遇到的錯誤位於控制台 › 活動紀錄的錯誤分頁,搬移則在控制台 › 搬移作業;頁面提供這兩處的連結。
- 閒置。沒有操作的期間不繪製資料點,圖表顯示空白,不會顯示 0 ms。
歷史紀錄
選擇一個位置(或全部)、時間範圍與工作類型。每張圖表標示單位與每個資料點代表的期間。將游標移到圖表,或用方向鍵移動,可查看單一期間數值。顯示為表格列出全部數值;下載 CSV儲存目前顯示的內容。
| 範圍 | 每個資料點代表 | 保留時間 |
|---|---|---|
| 最近 6 小時、最近 2 天 | 5 分鐘(操作)、15 分鐘(容量) | 2 天 |
| 最近 30 天 | 1 小時 | 45 天 |
| 最近一年 | 1 天,依 UTC 計算 | 400 天 |
容量每 15 分鐘與啟動後不久測量。每小時或每日以最後一次測量代表該期間;操作則按小時與日加總,讓歷史資料維持精簡。時間以瀏覽器時區顯示。最近測量已超過 30 分鐘的卡片會標示已過期。
預計用滿時間以過去 30 天的磁碟用量擬合直線。只有容量已知、至少三天測量資料且使用量穩定增加的磁碟才會顯示;否則頁面會說明未顯示原因。
警示
在警示門檻設定何時提示:磁碟使用率超過指定百分比(預設 90%),或位置最近一小時的操作失敗/逾時比例超過門檻(預設 5%)。失敗警示需要該小時至少 20 次操作。輸入 0 可停用個別門檻。位置離線與測量過期也會警示。警示顯示於頁面頂部,不會寄送電子郵件。
位置離線時
瀏覽、搜尋與整理資料夾仍可使用。開啟、下載與上傳會暫停,位置恢復後自動繼續。有已驗證鏡像的檔案仍可開啟與下載,期間空間會標示離線。資料夾空間的資料夾在磁碟上,因此整理資料夾也會暫停。
未掛載的磁碟與分享
本機資料夾位置常是掛載於伺服器的磁碟或網路分享,例如 /mnt/nas/thirtyfile。未掛載時,資料夾可能遺失,或只是伺服器自身磁碟上的空資料夾。ThirtyFile 不會寫入那裡,否則檔案會落在錯誤磁碟上,重新掛載分享後反而被隱藏。
- 標記檔案。新增本機資料夾位置或變更資料夾時,若資料夾不存在會建立,並放入記錄位置 ID 的
.thirtyfile-location。儲存前的測試連線不會建立任何內容,其他流程也不會建立資料夾。 - 無法使用。之後只有資料夾持有該標記時才會使用位置,否則清單標示離線並顯示資料夾不存在,或這裡掛載了不同的磁碟,空間的上傳與變更也以相同訊息拒絕。不會建立或寫入任何內容,包括空間資料夾。
- 恢復。重新掛載磁碟或分享:離線位置每 20 秒檢查一次,標記恢復後立即重新使用,不需重新啟動。
- 磁碟停止回應。網路分享的伺服器消失時,可能仍保持掛載卻不回應。ThirtyFile 最多等待一分鐘(讓磁碟有時間啟動);變更開始後則最多等待 20 秒,之後以伺服器上資料夾的磁碟沒有回應拒絕操作。在磁碟恢復回應前,該空間的變更會立即拒絕,其他功能仍正常。位置檢查與健康檢查也不會等待它。本機資料夾的內容儲存區也同樣處理:磁碟步驟超過一分鐘會以儲存服務暫時無法使用放棄,磁碟恢復前立即拒絕其檔案操作,其餘 ThirtyFile 功能照常。
- 標記遺失。資料夾有內容卻沒有
.thirtyfile-location(例如複製時略過隱藏檔),位置會離線,訊息會指出檔案應包含的那一行:位置 ID。確認是正確資料夾後,建立只含該行的標記;下次檢查就會恢復使用。 - 其他位置的資料夾。
.thirtyfile-location指向其他位置時會拒絕使用。刪除位置會移除標記,讓資料夾能再次使用。變更回原資料夾時,若仍有該位置自己的標記,會直接接受。 - 變更資料夾。位置上還有空間或檔案時,只能改到它的完整副本:先複製舊資料夾所有內容(含
.thirtyfile-location)到新資料夾,再變更路徑,空間的資料夾會跟著更新。新的空資料夾會拒絕,因為空間檔案仍留在舊處。空位置可改成任意資料夾。
新伺服器首次啟動且儲存資料夾為新建或空白時,儲存資料夾(Docker 內的 /storage,由 THIRTYFILE_STORAGE 設定)也會取得相同標記,內容為 local。磁碟或 NAS 自行建立的項目(lost+found、#recycle、@eaDir、.DS_Store、System Volume Information、$RECYCLE.BIN)不計入非空判定。一旦位置上有檔案或空間,就不再接受遺失或空的儲存資料夾:ThirtyFile 不會啟動,並提示磁碟區可能未掛載。資料夾有檔案卻缺少 .thirtyfile-location,或標記屬於其他位置時也不會啟動,因為可能與先前使用的磁碟不同。請檢查磁碟區與掛載;確定是正確資料夾後,建立內容為 local 的標記。