资讯动态

copyparty 如何配置文件去重上传,在符号链接与硬链接两种方案间做选择

发布时间:2026/9/11 23:15:02 来源:尧图企业网站定制
copyparty 如何配置文件去重上传在符号链接与硬链接两种方案间做选择【免费下载链接】copypartyPortable file server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails all in one file项目地址: https://gitcode.com/GitHub_Trending/co/copypartycopyparty 是一个单文件的可移植文件服务器见 README.md默认情况下当有人上传一个服务器上已存在的文件时上传会被礼貌地拒绝服务器会把已有文件完整复制一份到目标位置。如果你希望重复上传不占用双倍磁盘空间就需要开启上传去重dedup。这篇文章说明如何开启去重以及 copyparty 提供的两种去重实现——符号链接symlink与硬链接hardlink——各自的适用条件帮助你根据自己的存储环境做出选择。默认行为不开去重时会发生什么按 README.md file deduplication 一节的说明未开启去重时重复上传会被拒绝服务器把已有文件完整拷贝到上传目标位置用--dedup开启去重后第二次上传同样的文件时服务器创建的是一个指向最近一份完整副本的符号链接而不是完整拷贝从而节省磁盘空间如果你的存储读取成本很高例如 s3-glacier 这类归档存储且有其他软件在改动你的文件、无法使用--safe-dedup1也可以反过来用--no-clone或 volflagnoclone彻底禁用重复数据检测。也就是说--dedup改变的不是能否发现重复而是发现重复后落盘的方式从完整拷贝变为链接。符号链接与硬链接怎么选README 明确说明默认去重基于符号链接这些是极小的文件指向该文件最近的一份完整副本。你也可以改用硬链接全局--hardlink-only或 volflaghardlinkonly或者改用 reflink--reflink/ volflagreflink。文档给出的选择依据如下。硬链接的优势文档原文归纳与其他软件兼容性更好硬链接的行为与普通文件完全一致你可以用其他文件管理器安全地移动、重命名文件——而符号链接需要由 copyparty 来管理才能保证其指向仍然正确。符号链接默认方案的优势每个符号链接可以有自己独立的最后修改时间戳而所有硬链接共享同一个时间戳符号链接能让其他软件更明显地意识到这不是普通文件因此风险更低——硬链接看起来就是普通文件其他软件可能假设编辑它不会影响别的副本。文档中的关键警告如果你编辑了一个被去重的文件的内容那么该文件的所有其他副本也会被一起改掉。这一点在硬链接上尤其容易令人意外因为它们看起来就是普通文件但同一个文件实际存在于多个位置。reflinkCoW写时复制作为第三个选项README 称其在你的文件系统正确支持时完全安全任一文件都可以被编辑或删除而不影响其他副本但也给出了明确的适用条件——仅支持 Linux 5.3 及以上、仅支持 Python 3.14 及以上且仅部分文件系统可用btrfs 大概可以xfs 也许可以zfs 曾有过 bug。如果你的系统不满足这些条件--reflink会在无法 reflink 时回退为完整拷贝见--reflink的 help 说明。简化的决策路径对应文档描述你希望用其他工具自由移动/重命名文件 → 硬链接更合适--hardlink-only你的系统/文件系统满足 reflink 条件 → reflink 是文档描述中最安全的方案都没有特殊要求 → 用默认的符号链接即可但要接受符号链接由 copyparty 管理这一前提。跨卷去重--xlink/ volflagxlink文档自述probably buggy and not recommended不建议作为方案纳入考虑。配置步骤README 在开启去重时给出的强烈建议是同时开启文件索引-e2dsa或 volflage2dsa。原文警告如果只开--dedup而不开启索引也不使用--hardlink-only或--reflink那么重命名/删除文件将是不安全的开启索引后则不强制要求硬链接但你仍可能想要硬链接。命令行方式在启动参数中加入--dedup和-e2dsa。硬链接方案则再加--hardlink-only。例如卷路径以文档示例/mnt/nas为参照替换为你自己的挂载点# 符号链接去重默认方案 python3 -m copyparty --dedup -e2dsa -v /mnt/nas::rwmda # 硬链接去重 python3 -m copyparty --dedup --hardlink-only -e2dsa -v /mnt/nas::rwmda其中-e2dsa表示启动时扫描并索引所有已挂载卷包括只读卷。如果你不需要 reflink 的回退行为--reflink也可按同样方式加入。配置文件方式README 给出的去重配置文件示例如下其中[/media]段演示了全局符号链接去重 单个卷使用硬链接的混用写法示例中的/mnt/nas/media为文档示例路径实际使用时替换为你的卷路径[global] e2dsa # scan and index filesystem on startup dedup # symlink-based deduplication for all volumes [/media] /mnt/nas/media flags: hardlinkonly # this vol does hardlinks instead of symlinksREADME 说明配置文件的用法是把它保存为如foobar.conf然后以python copyparty-sfx.py -c foobar.conf的方式启动。[global]段中可以使用所有--help列出的全局选项而hardlinkonly、reflink等 volflags 写在对应卷的flags:下。更多配置写法可参考 docs/example.conf。可选加快去重过程--safe-dedup控制去重时的校验严格程度默认为50即校验文件内容未被改动。README 的 performance 一节指出--safe-dedup 1通过跳过文件内容校验使上传期间的去重快得多其前提是没有其他软件在编辑或移动这些卷中的文件。验证去重是否生效文档提供的核对方式有两种观察落盘结果。重复上传同一文件后检查目标位置开启--dedup时新位置应是一个指向最近完整副本的极小符号链接文件硬链接方案下则表现为看似普通文件的副本。同时对照默认行为——未开去重时你会看到一份完整拷贝——可以判断去重是否真的启用了。Prometheus 指标。README 的 prometheus 一节说明指标端点/.cpr/metrics需要用--stats开启且只有 admin 账户账户权限串rwmda中的a可以访问格式为 openmetrics 1.0.0。其中有两项与去重直接相关cpp_dupe_bytes去重所节省的磁盘空间presumably saved by deduplicationcpp_dupe_files重复文件数量。若你希望减少 Prometheus 查询带来的服务器负载可用--nos-dup关闭cpp_dupe_*指标。限制与边界情况编辑会波及所有副本对任何被去重的文件做内容编辑都会同时改掉其他所有副本这是硬链接与 reflink 之外的通性警告README 将其列为去重使用的必读警告之一。索引排除项会阻断去重--no-idx与--no-hash命中的文件不会被去重——如果用户上传了相同内容也不会被识别为重复、不会被替换为链接。PRTY_NO_SQLITE环境变量会禁用所有数据库相关功能包括大部分文件去重逻辑因此去重依赖数据库这也是建议开启索引的原因。--xlink跨卷去重不被推荐文档自述可能存在 bug。reflink 的平台约束Linux 5.3、Python 3.14且仅部分文件系统可靠btrfs 可能可以xfs 未定zfs 曾有 bug不满足条件时回退为完整拷贝。配置完成后重复上传只应产生一个指向已有完整副本的链接或不满足条件时的完整拷贝/.cpr/metrics中的cpp_dupe_files随之增长即为文档所描述的去重生效状态。【免费下载链接】copypartyPortable file server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails all in one file项目地址: https://gitcode.com/GitHub_Trending/co/copyparty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价