March 10, 20242 yr 一直都想把群晖服务器的数据同步到unRaid上来,使用群晖的官方备份工具只能做到把群晖数据备份到unRaid上,而不能使用,只有群晖遇到灾难性问题时,作为备份资料还原到群晖中,而备份本身在unRaid中是不能用的。这个群晖备份方案不合适我的使用习惯。 近日发现一个同步工具是安装在全系列的操作系统上的同步工具Syncthing,在测试使用时发现可以双向同步,很合适我的使用习惯,把群晖的数据备份了,还能在unRaid中使用。非常不错。但在使用中发现几个有瑕疵的地方。直到现在也没有在网上找到一个合适的解决方案。经过两天的研究,终于找到问题,并做成教程,供大家学习使用。 问题一,unRaid社区应用中的两个版本应用有什么区别。很多人都认为这两个版本都是有区别的,有的说用这个好,有的说用那个好。经过半天时间研究发现,两个版本没有区别。都是一样的一个是以用户名做为配置目录,一个以默认做为配置。区别在于,一个为你配置好了以media做为默认目录,添加文件夹后主目录在/mnt/user/。一个以data为名,数据保存在appdata/Syncthing目录下的默认配置。当然数据保存在appdata/Syncthing目录下。 问题二,如何把数据保存在根目录下。而又不把配置文件转移到根目录。 经过研究发现这两个问题我一一解决。下面我们来安装Syncthing,并图文并解。 第一部份: 在unRaid中点击“应用”——在“搜索”中输入“Syncthing”显示两个版本的Syncthing。 安装linuxserver的版本,为什么选择他。因为他配置接近官方配置表 把原容器配置中的两个“data”修改了。其它保持原容器配置不变。 因为这两个目录是必填配置,如果你一开始不想修改配置,可以把这两个目录删除或者打开高级视图把这两个"data"必填改成"否"直接先安装好后再处理也行。 1、修改第一个“data” 把data1的名称、容器路径、主机路径、默认值(可不填)全改为:/mnt/user/ 注意:/mnt/user/在这user后的反斜杠一定要。否则会在Syncthing中添加文件夹时会提示你的目录无权限。 更为重要的是,如果有两个以上或更多的用户名,如果你要把同步目录创建在N个用户时把1改在你要存储的硬盘编号上:如user1、user2、user3、或更多userN。 2、修改第2个“data” 把data2的名称、容器路径、主机路径、默认值(可不填)全改为:/mnt/disk1/ 注意:/mnt/disk1/在这disk1后的反斜杠一定要。否则会在Syncthing中添加文件夹时会提示你的目录无权限。 更为重要的是,如果有两个以上或更多的硬盘,如果你要把同步目录创建在N个硬盘时把1改在你要存储的硬盘编号上:如disk2、disk3、或更多diskN。 修改好后,点击下方应用,开始安装。 等待安装完成。 完成Syncthing安装。 第二部份: 1.首次来到Syncthing WEB页面。 这儿选择"否"不允许匿名使用报告。 2. 点击危险下面的设置 3. 选择常规,更改设备名。 4. 选择"图形用户界面"。添加用户名和密码,保存重启登录。 5.点击"操作"——选择"高级" 6.选择“默认值”——打开“默认文件夹” 7.找到“path”这个参数修改 删除“波浪号”改成 “/mnt/user/”或“/mnt/disk1/” 注意:这儿的“path”对应你在配置表中的“data1”或“data2”中的名称。一般来说。你用“data1”映射那么“data2”是不会用的。用“data2”映射那么“data1”是不会用的。这儿不影响根目录的使用。 8.改好后,保存。 9. 添加文件夹 10.目录选择你现有的或创建一个目录。文件夹ID不用管它 注意新创建的目录会自动生成文件夹在根目录。 11.在版本控制中,先选择"简易版本控制" 12.在高级中,可以选择忽略文权限,以降低同步时造成的文件没有权限问题。 13.设置完成后,保存。 第三部份: 添加一个远程设备 1.点击右下角的"添加远程设备" 2.如果你有其它设备。那么会显示在红色条的位置。 3.双击红条设备会自动添加到设备ID中。 4.选择共享:把你要共享出来的文件夹选中。后面可以加密。 5.高级中我们保持默认。如有需要修改。在运行后。有什么其它问题,再修改。 保存完成。 这样我们一台同步服务器就设置好了。本文是针对unRaid中的Synching来设置的。其它系统的自行研究,理论大概一样。 第四部份: 连接服务器开始同步 1. 在浏览器打开其它Synching设备IP,会看到这样一个请求 2. 点击“添加设备” 3. 在这儿我们不做任何选择,直接保存。 注意:两个共享设置的意思 一:作为中价:是将有共同名称的文件夹都添加到本地服务器中(这儿的服务器是群晖nas或是其它unRaid) 二:自动接授:自动创建本地服务器没有的文件夹。 所以以上两种我们不选择。因为我们要对接两个文件夹。 4. 刷新nas会弹出“新文件夹”点击“添加” 5. 弹出添加文件夹的设置窗口后。我们看到如下: 6. 把文件夹的标签中的名称改成你Nas中想要同步的文件夹名称。 我想同步的是Documents这个文件夹,所以修改后是如下图: 注意。如果你同步的不是相同名称的文件夹,那么,你可以在文件夹标签中输入你要同步的文件夹名称。如:music、photo或者是video都行。同步后。在unRaid的documents目录下自动会是音乐、照片或是视频了。 7. 版本控制我们依然选择"简易版本控制" 8. 高级保持默认就可以了。 好了,设置都没有问题了。保存退出 现在。可以看到开始同步了。 安装Syncthing后,在没有设置的情况下,会产生很多的忽略垃圾文件造成原本清洁的目录结构很混乱。有效设置能保持原本目录清洁,又能提高互传速度和稳定性。 1. 打开高级 默认忽略模式 填加下面内容: // 下面所有类型全部忽略,每行一个有效防止同步各类临时文件。 .* .** ~* ~** ~$* ~$** 2. 默认文件夹 Path设置为:/mnt/user/ (默认为:~) 3. 选项 一、默认设置是通过外网连接,无法通过局域网连接传入同步连接侦听地址,因此,设置如下,就能在本地用局域网快速同步。外网同步保留默认。 Listen Addresses设置为:tcp://192.168.xx.xx:22000, tcp://0.0.0.0:22000, tcp://:22000, default (默认:default) 二、增加内存数据量,有助于大文件吞吐量默认:0.在低资源情况下同步设置为16或32,高性能设置为1024或更多)。 Max Concurrent Incoming Request KiB设置为:0 三、区分大小写有助提高系统所需安全检查(因一次把文件夹小写改大写就同时生成两个大小写文件夹,而把所以数据毁了而后悔,所以还是勾选为佳) Case Sensitive FS勾选 配置优化 Syncthing 附带了一组默认值,旨在为大多数人提供良好的效果 用户在常见情况下。但是,有许多 可以调整的配置选项以提高性能或 减少资源消耗。本文提出建议,但您 需要进行试验以找到适合您的特定设置的最佳设置。 针对高性能进行调优 您有闲置的资源,并希望优化性能。开始 同时,请确保您运行的是 64 位生成,并且索引数据库 位于 SSD 上。首先是一些常规选项: progressUpdateIntervalS 设置为 -1 可禁用进度更新。花在进度上的时间 更新是未花在同步上的时间。 setLowPriority 设置为 false 以正常优先级运行 Syncthing。这可能允许 同步以使用更多的 CPU 时间,这可以提高性能。 maxFolderConcurrency 为要同步的文件夹数找到适当的设置 同时,考虑到 底层存储系统。如果两个文件夹位于同一基础上 旋转磁盘,同时同步它们将严格丢失 性能。如果底层存储是大型磁盘阵列, 那么同时同步多个文件夹可能是有益的。 databaseTuning 设置为 。无论实际数据库的大小如何,这 增加缓冲区和设置的数量,以优化更高的 吞吐量。large maxConcurrentIncomingRequestKiB 这将设置正在处理的最大数据量(从 磁盘并通过网络传输)在任何给定的 时间。这是一个全局限制器,而不是每个文件夹。如果你有很多 文件夹和/或大量设备和内存,您可能需要 增加此值。默认值为 256 MiB,考虑值为 1024 MiB 或更多。 这些选项特定于文件夹,应在每个文件夹上设置: fsWatcherEnabled 如果可能,使用文件系统通知可以避免不必要的 I/O 大型定期扫描。使用通知可以更快地检测到更改 比扫描。 Copiers 用于文件同步的复制阶段的例程数。类似 到其他并发选项,如果有很多文件要同步,并且如果 I/O 系统可以处理它,您可能会看到性能的提高 增加此值。默认值与系统相关,位于某处 介于 1 和可用的 CPU 内核数之间。 Hashers 对本地更改的文件进行哈希处理时,哈希例程的数量要 用。值越高意味着 I/O 和 CPU 负载越大,并且可能会增加 当有大量文件需要哈希时的性能,假设 I/O 带宽和 CPU 可用。默认值与系统相关, 介于 1 和可用 CPU 内核数之间。 pullerMaxPendingKiB 在任何给定条件下有未完成请求的最大数据量 时间。较高的值可能会提高性能,尤其是在网络 或 I/O 延迟较高。默认值为 32 MiB。 scanProgressIntervalS 为 GUI 提供扫描进度更新并不是很昂贵,但是 是可以花在更有成效的事情上的努力。如果你不这样做 需要查看扫描进度,将其设置为 -1 以禁用它。 weakHashThresholdPct 默认情况下,Syncthing 将查找滚动(弱)哈希匹配项以进行检测 如果文件中的大量数据已更改,则文件中的数据已移动。如果你的 用例不会导致文件中的数据发生偏移,如果文件发生 大型(电影、VM 映像等),无需花时间检查 弱哈希。将阈值设置为 101% 以禁用弱哈希。 maxConcurrentWrites 同步限制任何未完成的写入系统调用的数量 给定时间以避免 I/O 系统过载。如果您增加 复印机、未完成的网络请求或其他增加的设置 并发写入次数,您可能需要增加此值。 默认值为 2。 disableFsync 同步文件和目录后对文件和目录进行同步调用 以确保它们在稳定存储时安全无虞。这是一个很好的 东西,但它可能很昂贵。如果您有很多文件要同步 和/或大量可用的 I/O 带宽,您可能会看到性能 通过禁用 增加 。对于大多数人来说,不建议这样做 设置,因为您正在增加在电源的情况下数据丢失的风险 中断或系统崩溃。fsync()fsync() blockPullOrder 默认情况下,Syncthing 在拉入时使用伪随机块顺序 以便更好地在多个设备上分配负载。如果你是 通常只从一台设备下载文件,如果您有 旋转磁盘作为底层存储,您可能会看到性能 通过将其设置为 来增加。inOrder copyRangeMethod 如果您的底层文件系统支持它,您可能会看到性能 通过启用写入时复制方法增加,因为它减少了 同步文件时实际复制到磁盘上的数据。 caseSensitiveFS 如果底层文件系统区分大小写,您可能会看到 通过启用此选项提高性能。这将禁用许多 不区分大小写的文件系统所需的安全检查,以及 如果您的底层文件系统实际上不是大小写,则可能会导致数据丢失 灵敏。 /, / 如果您的用例需要它们,请使用它们,但请记住它们 具有相当高的性能成本。 对于设备,请考虑以下事项: numConnections 设置为或高于可用的 CPU 内核数。这允许最大 TLS 连接的并发性,并可能提高性能。 其他事项: GOMEMLIMIT and : 这些环境变量可用于 控制垃圾回收器。对于大型设置,请设置为 Syncthing 应使用的最大内存量可以提高 性能。原因是这会降低垃圾收集器的频率 在较低的内存使用率期间。在 Go 中阅读更多内容 GC 指南。GOGCGOMEMLIMIT 针对低资源进行调整 您的资源有限,并希望 Syncthing 使用尽可能少的资源。你 不太关心性能。 常规选项: progressUpdateIntervalS 设置为 -1 可禁用进度更新。进度更新不是 绝对必要,并消耗一定量的 CPU 和内存。 maxFolderConcurrency 设置为 1 可按顺序同步文件夹,从而减少峰值内存使用量。 databaseTuning 设置为:auto 。无论实际数据库大小如何,这都会减少缓冲区数量的大小,以优化减少内存使用量。 maxConcurrentIncomingRequestKiB 设置为 32 MiB 以减少用于缓冲的内存量 对传入请求的响应。 文件夹选项: fsWatcherEnabled 如果可能,使用文件系统通知比 进行完整的定期扫描。 copiers, hashers 设置为 1 可减少同步和散列 文件夹,减少峰值内存使用量。 pullerMaxPendingKiB 设置为 16 MiB 以减少用于缓冲的内存量 同步时。 scanProgressIntervalS 设置为 -1 可禁用扫描进度更新。跟踪扫描进度 使用内存和 CPU。 weakHashThresholdPct 设置为 101% 以禁用弱哈希。使用弱哈希有一个 内存成本。 copyRangeMethod 如果您的底层文件系统支持它,则使用 copyrange 会更多 比让 Syncthing 进行数据复制更有效。 caseSensitiveFS 如果您的基础文件系统区分大小写,请将其设置为跳过 由于缓存而产生内存成本的检查数。这些检查 对于不区分大小写的文件系统是必需的,禁用它们可以 如果您的底层文件系统不是实际情况,则会导致数据丢失 灵敏。 设备选项: numConnections 设置为 1 可减少每个设备的开销量,因为每个连接 具有内存和 CPU 成本。 其他事项: GOMEMLIMIT and GOGC 这些环境变量可用于控制垃圾 收藏家。对于小型设置,设置为所需的最大值 Syncthing 应该使用的内存量可以使垃圾回收器 更紧密地遵守所需的限制。在 Go GC 指南中阅读更多内容。GOMEMLIMIT GOMAXPROCS 此环境变量可用于控制最大数量 Syncthing 使用的并发运行线程数。将其设置为 1(或 任何低于实际核心数的数字)将减少 Syncthing 在任何给定时刻使用的 CPU 量。 Edited February 6, 20251 yr by wuyongjun
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.