在本教程中,我将向您展示如何在Raspberry Pi上使用Syncthing软件同步文件。
Syncthing是一款旨在实时同步树莓派等多个设备之间文件的软件。
数据在节点之间使用TLS进行同步。这种加密将提供安全性和隐私性,使得数据在传输过程中很难被人窃取。
每个节点都需要通过使用强大的加密证书来识别自己。如果节点不能提供证书,将无法连接,确保不会有刁民轻易接入。
使用Syncthing,可以将文件从Windows、Mac OS或基于Linux的设备同步到Raspberry Pi。
Syncthing的客户端可用于这些操作系统,使其易于使用。
设备清单
在树莓派上使用Syncthing用到了如下的设备清单,点击链接直达优惠购买
建议
可选
我使用了Raspberry Pi 400测试了本教程,运行的是最新版本的Raspberry Pi OS Buster。
安装Syncthing到Raspberry Pi
在本节中,将学习如何使用简单的步骤轻松安装Syncthing软件到Raspberry Pi。
要安装软件,需要添加项目的PGP密钥,并将其包仓库作为源码添加。
1. 在给Pi安装文件同步软件之前,首先要更新系统。
可以运行以下两个命令来更新Raspberry Pi。
sudo apt update
sudo apt full-upgrade
2. 接下来,需要确保已经安装了apt-transport-https包。
这个包可以让包管理器处理通过HTTPS协议操作的源。默认情况下,不支持这个功能。
一般来说,现在大多数操作系统都提供了这个功能,但是,像Raspberry Pi OS Lite这样的修剪过的系统可能会删除。
可以运行下面的命令来安装所需的软件包。
sudo apt install apt-transport-https
3. 最后,将Syncthing PGP密钥添加到包管理器的密钥链中。
这些密钥旨在确保正在安装的软件包已被正确签名,并且不是来自未知的来源。
在Raspberry Pi上使用以下命令添加。
curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
4. 添加了密钥后,现在可以添加存储库本身。
在这个Raspberry Pi项目中,使用Syncthing软件的稳定分支。
通过下面的命令将版本库添加到源列表中。
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
5. 从仓库安装Syncthing之前,需要更新软件包列表。
在设备上运行以下命令来刷新软件包列表。
sudo apt update
6. 最后,把Syncthing软件安装到Raspberry Pi上。
现在已经添加了软件包仓库,需要做的就是运行以下命令来安装软件。
sudo apt install syncthing
允许外部访问Syncthing Web界面
默认情况下,无法在设备上访问Syncthing网页界面,可以修改配置以允许外部访问。
1. 第一个任务是获取当前分配给Raspberry Pi的本地IP地址。
请注意,在完成本节之前,应该为Raspberry Pi设置一个静态IP地址。
可以通过下面的命令来查看Pi的本地IP。
hostname -I
2. 在继续之前,需要运行一次Syncthing来生成配置文件。
在本指南中,我只会在pi用户下运行Syncthing。
syncthing
初次运行后,按CTRL+C键杀死应用程序。
3. 第一次运行后,Syncthing会创建需要的所有配置文件。
这个配置文件只有在用pi用户运行Syncthing软件时才能使用。
通过使用下面的命令,使用nano文本编辑器开始编辑所需的配置文件。
nano ~/.config/syncthing/config.xml
4. 在这个文件中,需要找到以下一行:
为了方便查找这一行,可以使用CTRL+W快捷键进行搜索。
<address>127.0.0.1:8384</address>
将这行定义的本地IP(127.0.0.1)替换为Pi的本地IP地址。
例如,使用Pi的IP,这一行最终会变成以下内容。
<address>192.168.0.193:8384</address>
使用本地IP地址,只限制同一本地网络的用户访问Web界面。
另外,如果想允许访问任何地址,请使用IP “0.0.0.0”。
5. 更改IP后,按CTRL + X,然后按Y,再按ENTER键保存文件。
在Raspberry Pi上设置Syncthing作为一项服务
Syncthing的Web界面现在可以在树莓派之外访问了,需要做最后一项任务:为软件创建和启用一个服务。该服务将允许Syncthing在系统启动时启动,并使其易于停止和重启。
1. 需要再次使用nano来为服务创建文件。
服务来自于Syncthing的官方GitHub。
运行以下命令,开始在”/lib/systemd/system “目录下写入文件。
sudo nano /lib/systemd/system/syncthing.service
2. 在该文件中,输入以下几行:
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
Documentation=man:syncthing(1)
After=network.target
[Service]
User=pi
ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0
Restart=on-failure
RestartSec=5
SuccessExitStatus=3 4
RestartForceExitStatus=3 4
# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
这几行决定了操作系统将如何处理Raspberry Pi上的Syncthing。
3. 输入所有行数后,按CTRL + X,然后按Y,再按ENTER键保存文件。
4. 创建了服务后,现在可以让它在启动时启动。
需要做的就是运行以下命令。
sudo systemctl enable syncthing
5. 接下来,启动服务,这样就可以开始访问Syncthing网络界面了。
为了启动服务,需要再次使用systemctl命令。
sudo systemctl start syncthing
6. 验证Syncthing服务是否在Raspberry Pi上启动。
可以用下面的命令来验证。
sudo systemctl status syncthing
如果服务已正确启动并正在运行,应该会看到消息中显示以下内容。
Active: active (running)
使用Raspberry Pi的Syncthing Web界面
现在应该有Syncthing软件在Raspberry Pi上运行着。终于可以继续配置软件,并添加一个设备来同步文件。为了使其更容易操作,我把它分成几个小部分。
网页界面使得设置和连接设备的过程非常简单。
连接到Syncthing网络界面
在使用网页界面之前,需要先在网页浏览器中加载它。
1. 要访问Web界面,需要知道Raspberry Pi的IP地址。
有了IP后,可以在你选择的网络浏览器中进入以下网址。
http://[PIIPADDRESS]:8384
无论你输入什么,端口号(8384)都必须保留在最后,因为这是Syncthing软件监听的地方。
2. 进入网址后,就会进入Syncthing的网页界面。
请注意,设置好用户名和密码后,需要先登录才能看到以下界面。
确保同步接口的安全
默认情况下,Syncthing没有定义用户名和密码,任何用户都可以访问界面并调整你的设置。
为了阻止用户进行任何不必要的破坏,可以定义登录细节。
1. 如果你之前没有设置过用户名和密码,你会看到一条信息,警告你有危险。
为了快速进入设置页面,可以点击这个警告的 “设置 “按钮。
如果这条信息没有显示给你,也可以通过点击右上角的 “操作”(1.)下拉框,选择 “设置”(2.),找到设置页面。
2. 在弹出的设置页面内,需要改到 “GUI “标签。
点击弹出的顶部栏中的 “GUI “就可以换到这个选项卡。
3. 在这个页面上,需要输入用户名(1.)和密码(2.)。
确保设置了一个不容易被猜到的安全密码。尽量使用字母、数字和符号的组合。
输入了这两点,你就可以点击 “保存 “按钮来保存你的修改(3.
4. 保存新密码后,会被踢出网页界面。
每次想使用Syncthing的界面时,都需要输入新的登录信息。
检索设备同步ID
Syncthing的工作原理是为每个设备生成一个唯一的ID。要在设备之间同步数据,每个设备必须添加其他设备的ID。
找到Raspberry Pi Syncthing设置的ID很容器,可以在网页界面中找到。
1. 回到网页界面的主页面,点击屏幕右上角的 “操作 “切换键(1.
在下拉框中,点击 “显示ID “选项(2.),弹出我们要的对话框。
2. 在这个页面上,会看到识别字符串(1.)和与ID匹配的二维码(2.)。
识别字符串应该是50-56个字符,包含数字、字母和连字符。连字符会被系统忽略,但它是为了让ID更容易阅读。
需要将Raspberry Pi的ID添加到将要连接的其他设备上。同样,也需要添加他们的ID。
该ID作为Syncthing连接多个设备到同一池的方法的一部分。
将设备添加到Raspberry Pi的同步池中
现在知道了如何检索设备ID,看看怎么如何添加另一个设备的ID。
记住,无论要添加什么设备,都必须同时添加Raspberry Pi的ID。否则,设备将无法连接。
1. 在Syncthing界面上,需要点击位于右下方的 “添加远程设备 “按钮。
点击这个按钮将带我们进入对话框,允许我们添加一个设备到同步池。
2. 在此对话框中,可以将想要的设备ID添加到池中。
在顶部的文本框(1.)中,输入要连接的设备的ID。由于ID相对较长,复制和粘贴ID可能会更容易。
完成后,可以点击 “保存 “按钮(2.)添加设备并开始连接过程。
3. 当两台Syncthing服务器都添加了对方的ID后,应该看到已经成功连接了。
与连接设备同步文件夹
现在有一个设备连接到Raspberry Pi Syncthing,可以尝试与设备共享一个文件夹。
在本节中,使用默认文件夹。在本例中,该文件夹位于Raspberry Pi上的”/home/pi/sync”。
1. 要开始编辑现有文件夹的共享设置,请单击该文件夹下方的 “编辑 “按钮。
该按钮将弹出该文件夹的设置对话框,可以调整它的共享对象。
2. 在文件设置对话框中,我们需要改成共享标签。
点击 “分享 “选项卡,可以换到这个选项卡。
3. 使用该对话框,可以选择要与之共享文件夹的设备(1.
一旦选择了要同步的设备,请点击 “保存 “按钮 (2.)。
请注意,在与其他设备共享文件夹后,必须在该设备上接受它,然后才会开始同步。
4. 现在应该看到文件夹已经开始同步了。
一旦完成同步,应该会看到文件夹和设备都被标记为 “最新”。
结论
现在你应该已经在Raspberry Pi上安装并运行了Syncthing,并知道如何使用它来同步不同设备之间的文件。
该软件是让多台电脑实时保持目录同步的最有效方法之一。
它甚至无需依赖第三方,如谷歌云或微软Azure来存储文件。
如果你在树莓Pi上设置Syncthing时遇到任何问题,欢迎在下面留言。
你也可以查看软件的官方文档,了解如何根据自己的需求配置软件。
欢迎转载,请留下出处链接:Labno3 » 详细步骤记录如何用Syncthing实时同步树莓派上的文件