存储位置

选择文件内容的存储位置。不同空间可以使用不同的位置。

本页内容
  1. 类型
  2. 文件存放在哪里
  3. 添加位置
  4. 将空间迁移到其他位置
  5. 将全部内容复制到其他位置
  6. 镜像:在多个位置保有相同文件
  7. 文件夹空间:将服务器文件夹作为空间
  8. 检查位置中的内容
  9. 存储用量与性能
  10. 位置离线时

类型

类型适用情况
本地文件夹存储文件夹,或挂载到容器内的其他文件夹,例如 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,网页上的变更也会直接应用到文件夹。

添加位置

  1. 打开控制面板 › 存储位置,点击添加存储位置。
  2. 选择类型,填入地址与登录信息。
  3. 点击测试连接。系统会写入、读回并删除一个小文件;测试成功后才能存储位置。只能写入但无法删除文件的密钥或账号不会通过测试,因为 ThirtyFile 将无法清除已删除的文件。本地文件夹若尚不存在,保存时会创建它(参阅未挂载的磁盘与分享)。S3、SFTP 与 FTP 在保存时会放入一个小型 .thirtyfile-location 文件(参阅一个地方只能有一个位置)。
  4. 若新空间应创建在这里,将它设为默认。

之后编辑位置时,只要服务器、账号、存储桶、SFTP 主机密钥与证书检查设置都未变,已保存的密码或密钥就会保留。变更其中任何一项或重设主机密钥后,必须重新输入密码或密钥。

默认位置只决定新空间创建在哪里:用户的“我的文件”、团队空间,以及新服务器上的“全部文件”。创建团队空间时可以选择其他位置,新用户的“我的文件”也可以有个别位置(参阅个人空间)。每个空间会留在创建时的位置,因此变更默认位置不会迁移现有空间,新文件也会继续存到旧文件所在的位置。只有迁移空间才会改变位置。

列表显示的信息

当位置上还有空间、空间正在移入或移出,或内容存储区仍有文件时,不能删除该位置。管理员从自选文件夹创建的文件夹空间(见下方)不属于任何存储位置。

供应商注意事项

未加密的连接(普通 FTP,或通过 http 的 S3)只接受你自己网络内的地址。

将空间迁移到其他位置

在控制面板 › 空间选择空间,选择迁移到其他位置…。任何空间都能搬到任何其他位置:内容存储区之间、文件夹到内容存储区,或搬到文件夹。对话框显示当前位置与大小,并列出其他位置;位于这台服务器磁盘上的位置也会显示可用空间。目标位置空间不足时,对话框会提示,且无法开始迁移。继续迁移只需容纳尚未复制的部分;同一磁盘内直接迁移文件夹则不需额外空间。

迁移会在后台分三步执行(此处以内容存储区中的空间为例;文件夹空间与迁移到文件夹的流程相似,差异见下方):

  1. 复制。空间的每个文件、历史版本与回收站中的项目都会复制到新位置,并以文件的 SHA-256 指纹验证每份副本。期间空间仍可使用;迁移期间上传或修改的文件也会复制。
  2. 切换。全部内容就绪后,空间会一次切换到新位置,之后的新文件都会存到那里。
  3. 清理。旧副本会在一分钟后删除,让仍在读取旧副本的下载有时间完成。

切换之前,空间仍在原本位置:停止或取消迁移不会改变用户看到的内容。内容相同的文件在整个系统只保存一次,因此空间与其他位置的空间共享的内容也会一起迁移,那些空间之后也从新位置读取该内容。

将文件夹空间迁移到 S3、SFTP 或 FTP

文件夹空间(位于存储文件夹、本地文件夹位置或自选文件夹的空间)可搬到 S3、SFTP 或 FTP 位置的内容存储区。文件会改以内容存储区形式保存,名称、文件夹、分享链接、权限、回收站与历史版本都保留。

将空间迁移到文件夹

搬到存储文件夹或本地文件夹位置(例如 NAS)的空间,会成为文件夹空间,取得独立文件夹,命名方式与新空间相同(company、teams/<name> 或 users/<user name>,名称已占用时加编号),且复制期间保持只读。

取消迁移到文件夹时,会移除这次创建的文件夹及已复制的内容。

多个空间,或位置上的所有内容

若目标位于这台服务器的磁盘上,会一次检查所有选择空间合计需要的可用空间。

追踪迁移进度

控制面板 › 迁移先列出未完成的迁移,再列出历史记录。每笔包含空间(用户的“我的文件”以用户命名)、来源与目标位置、已复制文件与字节数、速度、剩余时间与状态。工作执行时页面会自动更新。

迁移完成或取消前,不能删除该空间,也不能删除以它为“我的文件”的用户。

将全部内容复制到其他位置

在控制面板 › 存储位置的位置 … 菜单中选择全部复制到…,会把该位置的全部空间复制到另一个位置,来源保持不变:不会移除文件,空间仍在原处,默认位置也不变。可用于在 NAS、异地存储桶或便携磁盘保存额外副本。若需要反复创建并保留一段时间的快照,请参阅将文件备份到其他位置;保存与还原方式相同。

复制哪些内容

副本存放在哪里

每次复制会在目标位置取得独立文件夹 .thirtyfile-backups/<id>,ThirtyFile 的其他功能不会写入其中。既有内容不会被替换,副本彼此不混合。里面包含:

因此即使没有 ThirtyFile,也能找到文件:列表每一行都记录文件路径与存放内容的对象。

目标可能与来源在同一磁盘或存储服务;对话框会提示这样的副本无法承受该磁盘或服务故障。相同路径或互相包含的位置会被拒绝。未加密 FTP 会提示文件以未加密方式传输。若目标位于本服务器磁盘且可用空间不足,会拒绝复制;S3、SFTP 与 FTP 则无法得知剩余容量。

复制期间变更的文件

复制期间空间仍可使用。副本反映创建文件列表时的状态(截至):之后修改或删除的文件会以当时版本复制,因为内容在复制完成前不会删除。文件夹空间的文件会逐一读取,并检查读取期间是否变更;变更过的会重读。开始前会先检查其他程序造成的文件夹变更。每个文件夹空间文件都完整且符合索引记录,但其他程序在不同时间修改的全部文件不代表同一瞬间的整体状态。

追踪、暂停与错误

控制面板 › 备份列出副本、当前工作与进度。复制在后台执行,一次一项工作;关闭页面后仍会继续。

副本删除前,不能删除持有它的位置或变更该位置的文件夹。移除未使用内容与永久删除文件都不会查看 .thirtyfile-backups,因此不会移除副本;浏览次数也不会打开它(其中列表包含个人空间的文件名称)。活动日志会记录副本的创建、还原、检查与删除。

从副本还原

选择副本并选择还原…,再选择要还原的空间。内容会放入空间本身或你选择的其他公司/团队空间顶层的新文件夹,名称为已还原 <空间> <日期>;不会替换任何既有内容。该空间位置仍保有的内容不会重复复制。

镜像:在多个位置保有相同文件

镜像策略会把某位置上各空间的文件保存到其他位置,检查副本,并在原位置故障时从副本读取。原位置永久丢失时,可将其他位置之一提升为主要位置,空间之后就在那里读写。只有管理员能在控制面板 › 镜像查看与管理镜像。

镜像不是备份。镜像保存当前的文件状态:删除或覆写文件后,镜像也会稍后删除或覆写。若要救回误删或误改的内容,仍需保留备份。镜像让磁盘、NAS 或存储桶故障时文件仍可读取;备份则保留历史状态。

创建镜像

选择新建镜像…(或存储位置 … 菜单中的创建镜像…),然后设置:

每份内容在每个位置只复制一次,即使多个文件或空间共享它。文件、历史版本与回收站都会复制。在目标位置,副本存放在内容存储区(ab/cd/<sha256>),无论来源是何种空间。

文件夹空间

文件夹空间(存储文件夹与本地文件夹位置上的全部空间)也能制作镜像。文件从文件夹读取,并在读取期间检查;若有变更就重读。其他程序持续写入的文件(例如记录或信箱)不会让同步整体失败:系统会复制最后一次完整读到的内容,详细信息会标示复制期间有变更(从未完整读到的文件尚无副本,也以相同方式列出;个人空间不显示文件名称)。下次同步会再读取。网页变更会在数秒后复制;其他程序通过 SMB 或扫描器造成的变更,则要等 ThirtyFile 侦测到:服务器本地磁盘约 12 秒,NFS 或 SMB 挂载则在下次定期检查时(默认每 15 分钟,可调整)。每次同步前会先检查文件夹变更。

副本如何维护

主要位置故障时

主要位置无法读取文件内容时(位置离线、内容丢失或文件夹空间的文件夹不存在),若策略允许从副本读取,会改从其他位置上已验证的副本读取。副本是以 SHA-256 命名的相同内容,因此不会比 ThirtyFile 已知的版本更旧。文件夹空间以索引最后记录的文件为准:磁盘故障前数秒由其他程序修改、但 ThirtyFile 尚未侦测到的内容不会出现在副本。每次回退都会记录于服务器记录;活动日志则每个位置最多每 10 分钟记录一次(从镜像读取)。

只有读取会回退。主要位置离线时,上传与空间变更会等待,详见位置离线时;变更绝不会只写入镜像。

提升位置为主要位置

主要位置永久丢失或准备禁用时,选择提升…并指定位置。提升不会自动发生。执行前,对话框会显示两个位置是否可连接、目标落后多少、会转移多少内容与哪些空间,以及缺少多少内容。

提升后请检查策略的位置列表:提升的位置已不在副本列表中;若要保有原本的副本数,请添加其他位置。

移除位置或策略

从列表移除位置、减少副本数或删除策略,都会停止创建新副本,但已创建的副本仍保留且受删除保护。控制面板 › 镜像会显示各位置不再有策略需要的副本数量,并提供移除…。删除前会再次逐一检查:策略仍需要的副本、该位置上的原始内容,以及当前来源位置无法连接的文件夹空间副本都会保留。在此之前,不能删除持有镜像或用作策略来源/目标的位置。

文件夹空间:将服务器文件夹作为空间

存储文件夹或本地文件夹位置上的每个空间都是文件夹空间(参阅文件存放在哪里)。也能把服务器上的现有文件夹(例如 NAS 共享)显示为空间。文件仍以普通文件留在原位置,也可以通过 SMB 或扫描器直接修改。

  1. 将文件夹挂载到容器,例如 -v /srv/shared:/mnt/shared。
  2. 在控制面板 › 空间按新建文件夹空间,输入容器内路径 /mnt/shared。
  3. 像普通团队空间一样添加成员。

用户打开文件夹时,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 分钟或更长的定期检查间隔。

网页上的所有操作都会修改文件夹本身:上传、创建文件夹、重命名、迁移、复制、编辑与删除。搬到不同磁盘的空间,或非文件夹空间时,先复制并验证文件,再移除来源;期间在文件夹中被修改的文件会留下,下次检查变更时出现。页面底部消息显示长时间迁移或复制的进度;即使关闭页面,服务器仍会继续。

检查位置中的内容

控制面板 › 存储位置各位置的 … 菜单还有三个操作,只有管理员可用。

逐步测试

执行文件处理的每个步骤,并列出各步骤耗时:

  1. 连接到位置。
  2. 写入小文件,再读回并比对。
  3. 以普通上传的保存方式上传较大文件(24 MB;S3 使用分段上传),再下载并比对。两者都会显示 MB/s 速度。
  4. 删除测试文件,并确认已移除。

测试文件存入 .thirtyfile-check 文件夹,完成后会删除,步骤失败也一样。测试最多两分钟;连接慢时会略过大文件,而非留下未完成内容。失败步骤会说明原因,例如密钥无法删除文件。

浏览

逐层显示位置中的内容,每页 200 个项目,附大小与日期。此处不能修改内容。可依保存原样下载单一文件,但待删除内容与尚在写入的副本除外。

寻找未使用内容

搜索该位置内容存储区中没有文件、历史版本或回收站项目使用的内容,例如上传途中服务器停止所留下的内容。任务在后台执行,列出结果与总大小。最近 24 小时写入的内容不会处理,因为上传先保存内容再登记;已等待删除的内容也略过。

确认后,移除 N 个项目会只删除列表列出的内容。删除前逐一再次检查;期间又被使用或写入的内容会保留。活动日志会记下移除操作。

在 S3、SFTP 与 FTP,若 .thirtyfile-location 指向其他位置或其他 ThirtyFile 安装,会拒绝搜索与移除:那些内容不是未使用,而是属于它们。

一个地方只能有一个位置

若两个位置指向同一地方,彼此会将对方的文件视为未使用内容。因此不能添加或改为其他位置已使用的地方:同一服务上的相同存储桶与前缀,或同一 SFTP/FTP 服务器上的相同文件夹(相对文件夹依账号分别判定)。

S3、SFTP 与 FTP 的位置也会保存小型 .thirtyfile-location:第一行是位置 ID,第二行是 ThirtyFile 安装 ID,添加位置时写入。早于此功能创建的位置,会在下次连接检查成功时补上。标记指向其他位置或其他 ThirtyFile 安装的地方不能添加,也不会搜索或移除其内容。删除位置时会移除标记。

存储用量与性能

控制面板 › 存储用量显示存储量、时间趋势与保存操作表现,只有管理员可见。顶部依空间类型、回收站与历史版本显示总量,下方每个位置与数据目录各有一张卡片。

数字的意义

数字计算内容
文件用户看到的该位置空间文件,不含回收站,也是容量配额计算的内容。相同内容的两个文件会算两次。回收站与历史版本列在下方。
ThirtyFile 存储量ThirtyFile 真正保存的内容:相同内容只存一份的内容存储区,加上文件夹空间文件(含回收站)与其中的历史版本。因共享内容可能小于文件数值,也可能因回收站与版本而更大。
磁盘系统报告的整个磁盘用量,不论其中还有哪些其他内容。只适用于存储文件夹与本地文件夹位置。同一磁盘上的两个位置会提示,磁盘只计一次。
容量未知S3、SFTP 与 FTP 不报告剩余容量;磁盘三秒内未响应也不会测量。此时不显示百分比或预计用满时间:未知不等于零。
备份位置上保存的副本与备份;每份内容在每次副本或备份中只计一次。有备份的位置才会显示。
镜像位置上保存、原始内容位于其他位置的镜像。有镜像的位置才会显示。
等待删除删除失败的内容(例如位置离线)或迁移后的旧副本,在后台重试。其大小已无法得知。
数据目录数据库、缩略图与进行中的上传,以及所在磁盘。也列出迁移、运行中的任务与待删除项目。

其他程序对文件夹空间文件的变更,要在下次变更检查后才计入。

操作

位置上的每次读取、写入、删除、列目录与连接检查都会计时并计数,文件夹空间的文件读取与上传也一样。文件夹空间内的重命名、删除与扫描则不测量。计数在内存中进行,每五分钟写入一次,不会拖慢文件操作。服务器停止时最多会丢失五分钟的统计。

历史记录

选择一个位置(或全部)、时间范围与任务类型。每张图表标示单位与每个数据点代表的期间。将光标移到图表,或用方向键移动,可查看单一期间数值。显示为表格列出全部数值;下载 CSV保存当前显示的内容。

范围每个数据点代表保留时间
最近 6 小时、最近 2 天5 分钟(操作)、15 分钟(容量)2 天
最近 30 天1 小时45 天
最近一年1 天,依 UTC 计算400 天

容量每 15 分钟与启动后不久测量。每小时或每日以最后一次测量代表该期间;操作则按小时与日加总,让历史数据维持精简。时间以浏览器时区显示。最近测量已超过 30 分钟的卡片会标示已过期。

预计用满时间以过去 30 天的磁盘用量拟合直线。只有容量已知、至少三天测量数据且使用量稳定增加的磁盘才会显示;否则页面会说明未显示原因。

警示

在警报阈值设置何时提示:磁盘使用率超过指定百分比(默认 90%),或位置最近一小时的操作失败/超时比例超过门槛(默认 5%)。失败警示需要该小时至少 20 次操作。输入 0 可禁用个别门槛。位置离线与测量过期也会警示。警示显示于页面顶部,不会发送电子邮件。

位置离线时

浏览、搜索与整理文件夹仍可使用。打开、下载与上传会暂停,位置恢复后自动继续。有已验证镜像的文件仍可打开与下载,期间空间会标示离线。文件夹空间的文件夹在磁盘上,因此整理文件夹也会暂停。

未挂载的磁盘与分享

本地文件夹位置常是挂载于服务器的磁盘或网络共享,例如 /mnt/nas/thirtyfile。未挂载时,文件夹可能丢失,或只是服务器自身磁盘上的空文件夹。ThirtyFile 不会写入那里,否则文件会落在错误磁盘上,重新挂载分享后反而被隐藏。

新服务器首次启动且存储文件夹为新建或空时,存储文件夹(Docker 内的 /storage,由 THIRTYFILE_STORAGE 设置)也会取得相同标记,内容为 local。磁盘或 NAS 自行创建的项目(lost+found、#recycle、@eaDir、.DS_Store、System Volume Information、$RECYCLE.BIN)不计入非空判定。一旦位置上有文件或空间,就不再接受丢失或空的存储文件夹:ThirtyFile 不会启动,并提示卷可能未挂载。文件夹有文件却缺少 .thirtyfile-location,或标记属于其他位置时也不会启动,因为可能与先前使用的磁盘不同。请检查卷与挂载;确定是正确文件夹后,创建内容为 local 的标记。