Syncthing 是一个开源的 P2P 文件同步工具，可用于在多个设备（包括 Android 手机）之间同步文件。通常，我们有 MEGA 或 Dropbox 之类的云同步解决方案，以便在云上备份我们的文件，同时更易于共享。但是，如果要跨多个设备同步文件而不将其存储在云中怎么办？这就是 Syncthing 派上用场的地方了。Syncthing：一个跨设备同步文件的开源工具Syncthing 可让你跨多个设备同步文件（包括对 Android 智能手机的支持）。它主要通过 Linux 上的 Web UI 进行工作，但也提供了 GUI（需要单独安装）。然而，Syncthing 完全没有利用云，它是 P2P 文件同步工具。你的数据不会被发送到中央服务器。而是会在所有设备之间同步。因此，它并不能真正取代 Linux 上的典型云存储服务。要添加远程设备，你只需要设备 ID（或直接扫描二维码），而无需 IP 地址。如果你想要远程备份文件，那么你可能应该依靠云。考虑到所有因素，Syncthing 可以在很多方面派上用场。从技术上讲，你可以安全、私密地在多个系统上访问重要文件，而不必担心有人监视你的数据。例如，你可能不想在云上存储一些敏感文件，因此你可以添加其他受信任的设备来同步并保留这些文件的副本。即使我对它的描述很简单，但它并不像看到的那么简单。如果你感兴趣的话，我建议你阅读官方 FAQ 来了解它如何工作的。Syncthing 的特性你可能不希望同步工具中有很多选项。它要可靠地同步文件，应该非常简单。Syncthing 确实非常简单且易于理解。即使这样，如果你想使用它的所有功能，那么也建议你阅读它的文档。在这里，我将重点介绍 Syncthing 的一些有用特性：跨平台支持作为开源解决方案，它支持 Windows、Linux 和 macOS。除此之外，它还支持 Android 智能手机。如果你使用的是 iOS 设备，那么你会感到失望。到目前为止，它还没有支持 iOS 的计划。文件版本控制如果替换或删除了旧文件，那么 Syncthing 会利用各种文件版本控制方法来存档旧文件。默认情况下，你不会发现它启用。但是，当你创建一个要同步的文件夹时，你将找到将文件版本控制切换为首选方法的选项。易于使用作为 P2P 文件同步工具，它无需高级调整即可使用。但是，它允许你在需要时配置高级设置。安全和隐私即使你不与任何云服务提供商共享数据，仍会有一些连接可能会引起窃听者的注意。因此，Syncthing 使用 TLS 保护通信。此外，它还有可靠的身份验证方法，以确保仅授予只有你允许的设备/连接能够取得同步/读取数据的权限。对于 Android 智能手机，如果你使用 Orbot 应用，你还可以强制将流量通过 Tor。在 Android 中你还有几个不同选择。其他功能当你探索这个工具时，你会注意到可以同步的文件夹数和可同步的设备数没有限制。因此，作为一个有着丰富有用特性的自由开源解决方案，对于在寻找 P2P 同步客户端的 Linux 用户而言是一个令人印象深刻的选择。在 Linux 上安装 Syncthing你可能无法在官网上找到 .deb 或者 .AppImage 文件。但是，你可在 Snap 商店中找到 snap 包。如果你好奇，你可以阅读在 Linux 上使用 snap 应用的文章来开始使用。你可能无法在软件中心找到它（如果你找到了，那它可能不是最新版本）。注意：如果你需要一个 GUI 应用而不是浏览器来管理它，它还有一个 Syncthing-GTK。Syncthing如果你有基于 Debian 的发行版，你也可以利用终端来安装它，这些说明位于官方下载页面上。我在 Syncthing 方面的体验就个人而言，我把它安装在 Pop!\_OS 19.10 上，并在写这篇文章之前用了一会儿。我尝试同步文件夹、删除它们、添加重复文件以查看文件版本控制是否工作，等等。它工作良好。然而，当我尝试同步它到手机（安卓），同步启动有点晚，它不是很快。因此，如果我们可以选择显式强制同步，那会有所帮助。或者，我错过了什么选项吗？如果是的话，请在评论中让我知道。从技术上讲，它使用系统资源来工作，因此，如果你连接了多个设备进行同步，这可能会提高同步速度（上传/下载）。总体而言，它工作良好，但我必须说，你不应该依赖它作为唯一的数据备份方案。总结你试过 Syncthing 了吗？如果有的话，你的体验如何？欢迎在下面的评论中分享。此外，如果你知道一些不错的替代品，也请让我知道。via: https://itsfoss.com/syncthing/作者：Ankush Das 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
2020 年，在我们的 20 个使用开源提升生产力的系列文章中，首先了解如何使用 Syncthing 同步文件。去年，我在 19 天里给你介绍了 19 个新（对你而言）的生产力工具。今年，我换了一种方式：使用你在使用或者还没使用的工具，构建一个使你可以在新一年更加高效的环境。使用 Synthing 同步文件设置新机器很麻烦。我们都有在机器之间复制的“标准设置”。多年来，我使用了很多方法来使它们在计算机之间同步。在过去（这会告诉你我年纪有多大了），曾经是软盘、然后是 Zip 磁盘、U 盘、SCP、Rsync、Dropbox、ownCloud，你想到的都试过。但这些似乎对我都不够好。然后我偶然发现了 Syncthing。Syncthing 是一个轻量级的点对点文件同步系统。你不需要为服务付费，也不需要第三方服务器，而且速度很快。以我的经验，比文件同步中的许多“大牌”要快得多。Syncthing 可在 Linux、MacOS、Windows 和多种 BSD 中使用。还有一个 Android 应用（但尚无官方 iOS 版本）。以上所有终端都有方便的图形化前端（尽管我不会在这里介绍）。在 Linux 上，大多数发行版都有可用的软件包，因此安装非常简单。首次启动 Syncthing 时，它将启动 Web 浏览器以配置守护程序。第一台计算机上没有太多要做，但是这是一个很好的机会来介绍一下用户界面 （UI）。最重要的是在右上方的 “Actions” 菜单下的 “System ID”。设置第一台计算机后，请在第二台计算机上重复安装。在 UI 中，右下方将显示一个按钮，名为 “Add Remote Device”。单击该按钮，你将会看到一个要求输入 “Device ID and a Name” 的框。从第一台计算机上复制并粘贴 “Device ID”，然后单击 “Save”。你应该会在第一台上看到一个请求添加第二台的弹出窗口。接受后，新机器将显示在第一台机器的右下角。与第二台计算机共享默认目录。单击 “Default Folder”，然后单击 “Edit” 按钮。弹出窗口的顶部有四个链接。单击 “Sharing”，然后选择第二台计算机。单击 “Save”，然后查看第二台计算机。你会看到一个接受共享目录的提示。接受后，它将开始在两台计算机之间同步文件。测试从一台计算机上复制文件到默认目录（“/你的家目录/Share”）。它应该很快会在另一台上出现。你可以根据需要添加任意数量的目录，这非常方便。如你在第一张图中所看到的，我有一个用于保存配置的 myconfigs 文件夹。当我买了一台新机器时，我只需安装 Syncthing，如果我在一台机器上调整了配置，我不必更新所有，它会自动更新。via: https://opensource.com/article/20/1/sync-files-syncthing作者：Kevin Sonney 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
简介Syncthing是一个免费开源的工具，它能在你的各个网络计算机间同步文件/文件夹。它不像其它的同步工具，如BitTorrent Sync和Dropbox那样，它的同步数据是直接从一个系统中直接传输到另一个系统的，并且它是完全开源的，安全且私密的。你所有的珍贵数据都会被存储在你的系统中，这样你就能对你的文件和文件夹拥有全面的控制权，没有任何的文件或文件夹会被存储在第三方系统中。此外，你有权决定这些数据该存于何处，是否要分享到第三方，或这些数据在互联网上的传输方式。所有的信息通讯都使用TLS进行加密，这样你的数据便能十分安全地逃离窥探。Syncthing有一个强大的响应式的网页管理界面(WebGUI，下同)，它能够帮助用户简便地添加、删除和管理那些通过网络进行同步的文件夹。通过使用Syncthing，你可以在多个系统上一次同步多个文件夹。在安装和使用上，Syncthing是一个可移植的、简单而强大的工具。即然文件或文件夹是从一部计算机中直接传输到另一计算机中的，那么你就无需考虑向云服务供应商支付金钱来获取额外的云空间。你所需要的仅仅是非常稳定的LAN/WAN连接以及在你的系统中有足够的硬盘空间。它支持所有的现代操作系统，包括GNU/Linux, Windows, Mac OS X, 当然还有Android。安装基于本文的目的，我们将使用两个系统，一个是Ubuntu 14.04 LTS, 一个是Ubuntu 14.10 server。为了简单辨别这两个系统，我们将分别称其为系统1和系统2。系统1细节：操作系统: Ubuntu 14.04 LTS server;主机名: server1.unixmen.local;IP地址: 192.168.1.150.系统用户: sk (你可以使用你自己的系统用户)同步文件夹: /home/Sync/ (Syncthing会默认创建)系统2细节：操作系统: Ubuntu 14.10 server;主机名: server.unixmen.local;IP地址: 192.168.1.151.系统用户: sk (你可以使用你自己的系统用户)同步文件夹: /home/Sync/ (Syncthing会默认创建)在系统1和系统2上为Syncthing创建用户在两个系统上运行下面的命令来为Syncthing创建用户以及两系统间的同步文件夹。sudo useradd sk sudo passwd sk 为系统1和系统2安装Syncthing在系统1和系统2上遵循以下步骤进行操作。从官方下载页上下载最新版本。我使用的是64位版本，因此下载64位版的软件包。wget https://github.com/syncthing/syncthing/releases/download/v0.10.20/syncthing-linux-amd64-v0.10.20.tar.gz 解压缩下载的文件：tar xzvf syncthing-linux-amd64-v0.10.20.tar.gz 切换到解压缩出来的文件夹:cd syncthing-linux-amd64-v0.10.20/ 复制可执行文件"syncthing"到$PATH：sudo cp syncthing /usr/local/bin/ 现在，执行下列命令来首次运行Syncthing：syncthing 当你执行上述命令后，syncthing会生成一个配置以及一些配置键值，并且在你的浏览器上打开一个管理界面。输入示例:[monitor] 15:40:27 INFO: Starting syncthing 15:40:27 INFO: Generating RSA key and certificate for syncthing... [BQXVO] 15:40:34 INFO: syncthing v0.10.20 (go1.4 linux-386 default) unknown-user@syncthing-builder 2015-01-13 16:27:47 UTC [BQXVO] 15:40:34 INFO: My ID: BQXVO3D-VEBIDRE-MVMMGJI-ECD2PC3-T5LT3JB-OK4Z45E-MPIDWHI-IRW3NAZ [BQXVO] 15:40:34 INFO: No config file; starting with empty defaults [BQXVO] 15:40:34 INFO: Edit /home/sk/.config/syncthing/config.xml to taste or use the GUI [BQXVO] 15:40:34 INFO: Starting web GUI on http://127.0.0.1:8080/ [BQXVO] 15:40:34 INFO: Loading HTTPS certificate: open /home/sk/.config/syncthing/https-cert.pem: no such file or directory [BQXVO] 15:40:34 INFO: Creating new HTTPS certificate [BQXVO] 15:40:34 INFO: Generating RSA key and certificate for server1... [BQXVO] 15:41:01 INFO: Starting UPnP discovery... [BQXVO] 15:41:07 INFO: Starting local discovery announcements [BQXVO] 15:41:07 INFO: Starting global discovery announcements [BQXVO] 15:41:07 OK: Ready to synchronize default (read-write) [BQXVO] 15:41:07 INFO: Device BQXVO3D-VEBIDRE-MVMMGJI-ECD2PC3-T5LT3JB-OK4Z45E-MPIDWHI-IRW3NAZ is "server1" at [dynamic] [BQXVO] 15:41:07 INFO: Completed initial scan (rw) of folder default Syncthing已经被成功地初始化了，网页管理接口也可以通过浏览器访问URL: http://localhost:8080。如上面输入所看到的，Syncthing在你的home目录中的Sync目录下自动为你创建了一个名为default**的文件夹。默认情况下，Syncthing的网页管理界面只能在本地端口(localhost)中进行访问，要从远程进行访问，你需要在两个系统中进行以下操作：首先，按下CTRL+C键来终止Syncthing初始化进程。现在你回到了终端界面。编辑config.xml文件，sudo nano ~/.config/syncthing/config.xml 找到下面的指令：[...] 127.0.0.1:8080 -Su9v0lW80JWybGjK9vNK00YDraxXHGP [...] 在区域中，把127.0.0.1:8080改为0.0.0.0:8080。结果，你的config.xml看起来会是这样的： 0.0.0.0:8080 -Su9v0lW80JWybGjK9vNK00YDraxXHGP 保存并关闭文件。在两个系统上再次执行下述命令：syncthing 访问网页管理界面现在，在你的浏览器上打开http://ip-address:8080/。你会看到下面的界面：网页管理界面分为两个窗格，在左窗格中，你应该可以看到同步的文件夹列表。如前所述，文件夹default在你初始化Syncthing时被自动创建。如果你想同步更多文件夹，点击Add Folder按钮。在右窗格中，你可以看到已连接的设备数。现在这里只有一个，就是你现在正在操作的计算机。网页管理界面上设置Syncthing为了提高安全性，让我们启用TLS，并且设置访问网页管理界面的管理员用户和密码。要做到这点，点击右上角的齿轮按钮，然后选择Settings输入管理员的帐户名/密码。我设置的是admin/Ubuntu。你应该使用一些更复杂的密码。点击Save按钮，现在，你会被要求重启Syncthing使更改生效。点击Restart。刷新你的网页浏览器。你可以看到一个像下面一样的SSL警告。点击显示我了解风险(I understand the Risks)的按钮。接着，点击“添加例外(Add Exception)“按钮把当前页面添加进浏览器的信任列表中。输入前面几步设置的管理员用户和密码。我设置的是admin/ubuntu。现在，我们提高了网页管理界面的安全性。别忘了两个系统都要执行上面同样的步骤。连接到其它服务器要在各个系统之间同步文件，你必须各自告诉它们其它服务器的信息。这是通过交换设备IDs（device IDs)来实现的。你可以通过选择“齿轮菜单（gear menu)”（在右上角）中的”Show ID（显示ID)“来找到它。例如，下面是我系统1的ID.复制这个ID，然后到另外一个系统（系统2）的网页管理界面，在右边窗格点击Add Device按钮。接着会出现下面的界面。在Device区域粘贴系统1 ID **。输入设备名称（可选）。在地址区域，你可以输入其它系统（ LCTT 译注：即粘贴的ID所属的系统，此应为系统1）的IP地址，或者使用默认值。默认值为dynamic。最后，选择要同步的文件夹。在我们的例子中，同步文件夹为default**。一旦完成了，点击save按钮。你会被要求重启Syncthing。点击Restart按钮重启使更改生效。现在，我们到系统１的网页管理界面，你会看到来自系统２的连接和同步请求。点击Add按钮。现在，系统２会要求系统１分享和同步名为default的文件夹。接着重启系统１的Syncthing服务使更改生效。等待大概６０秒，接着你会看到两个系统之间已成功连接并同步。你可以在网页管理界面中的Add Device区域核实该情况。添加系统２后，系统１网页管理界面中的控制窗口如下：添加系统１后，系统２网页管理界面中的控制窗口如下：现在，在任一个系统中的“default”文件夹中放进任意文件或文件夹。你应该可以看到这些文件/文件夹被自动同步到其它系统。本文完！祝同步愉快！噢耶！！！Syncthing网站via: http://www.unixmen.com/syncthing-private-secure-tool-sync-filesfolders-computers/作者：SK 译者：XLCYun 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出