如何在Ubuntu12.04中使用BitTorrentSync同步目录
状态: 已弃用
本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.
请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。
介绍
可以通过多种不同方式在计算机和设备之间同步文件夹和文件。 一种自动同步内容的方法是 BitTorrent Sync。 BitTorrent Sync 是一种基于流行的 BitTorrent 文件共享协议同步内容的方法。
与传统的 BitTorrent 不同,使用 BitTorrent Sync 共享的文件是加密的,并且基于自动生成的共享密钥限制访问。 虽然 BitTorrent 本身通常用于以公共方式分发文件,但由于增加了安全措施,BitTorrent Sync 通常被用作在设备之间同步和共享文件的私有方法。
在本指南中,我们将讨论如何在两个 Ubuntu 12.04 VPS 实例上安装和配置 BitTorrent Sync。
安装 BitTorrent 同步
首先,我们需要在两个 Ubuntu 12.04 实例上安装 BitTorrent Sync。 如果您想在本地计算机上安装 BitTorrent Sync 以允许您与服务器同步,您可以在 此处 找到二进制包。
BitTorrent Sync 在 Ubuntu 12.04 上安装相对容易,但它不包含在默认存储库中。 我们可以使用 PPA(个人软件包存档),以便我们可以访问维护的 BitTorrent Sync 存储库并使用我们的常规 apt 工具对其进行管理。
Ubuntu 12.04 将 PPA 工具包含在一个名为 python-software-properties
的包中,我们可以通过 apt 下载它:
sudo apt-get update sudo apt-get install python-software-properties
安装后,我们可以添加包含更新的 Ubuntu 包的 PPA:
sudo add-apt-repository ppa:tuxpoldo/btsync
按“enter”添加新的 PPA。
添加新存储库后,我们应该更新 apt 为新源构建包索引,然后安装 BitTorrent Sync 软件:
sudo apt-get update sudo apt-get install btsync
安装过程中的初始配置
在安装阶段,您会被问到一些可以帮助您配置服务的问题。 第一个问题询问您是否愿意执行此配置来定义默认的 BitTorrent Sync 实例。 选择“是”。
出于安全目的,我们希望使用自己的用户和组来操作 BitTorrent Sync。 下一个问题选择btsync
。
下一个问题是关于您希望在实例之间进行通信的端口。 您可以将选择保留在 0
以让 btsync 在每次启动时选择一个随机端口。 如果您正在为您的服务器配置防火墙(强烈推荐),您可能想要定义一个特定的端口。
下一个问题是关于配置一个我们不需要的 UPNP 请求。 选择“否”。
接下来,定义您的下载和上传限制。 如果您不希望限制其中任何一个,请保留默认值 0
以允许最大吞吐量。
接下来,系统会询问您希望为哪个接口配置服务。 如果您将其保留在 0.0.0.0
,BitTorrent 同步服务将使用任何可用的接口。 如果您希望将其限制为一个网络,例如 DigitalOcean 专用网络,您可以在此处指定适当的 IP 地址。 请注意,您将无法使用专用网络同步到您的家庭计算机。
接下来,选择一个端口以访问 Web 界面。 默认值为 8888
,但您可以将其更改为任何打开的端口。
最后,选择用户名和密码以保护 Web 界面。
安装将完成,您的服务将启动。
如果您将来需要更改配置,您可以随时通过以下命令运行配置菜单:
sudo dpkg-reconfigure btsync
该服务的配置目录是:
/etc/btsync
不要手动编辑菜单系统生成的配置文件。 但是,如果您想调整菜单配置中未涵盖的详细信息,您可以复制配置以用作另一个配置的模板。
如何配置共享文件夹
为了使用 BitTorrent Sync 同步文件夹,btsync
用户或组需要对文件夹的写入权限。 有几种不同的方法可以实现这一目标。
首先,让我们创建文件夹:
sudo mkdir /shared
我们需要在您将要同步的两个 VPS 实例上完成这些步骤。
赋予 btsync 进程完全所有权
授予 btsync 用户访问权限的一种方法是简单地将文件夹的所有权授予 btsync 用户:
sudo chown btsync:btsync /shared
这将允许 BitTorrent 同步服务正确地提供此目录的内容,但我们无法以普通用户的身份写入此目录。 这可能是您想要的,但通常不是。
授予您的普通用户所有权和 btsync 进程组所有权
如果系统上只有一个普通用户,则可以授予该用户对该文件夹的所有权,并将该文件夹的所有权授予 btsync 组:
sudo chown your_user :btsync /shared
然后,您必须授予组写入权限:
sudo chmod 775 /shared
这将允许 btsync 服务访问该文件夹。 但是,在目录中创建的任何文件都将归您的用户和组所有。
例如,如果我们在这个文件夹中添加一个名为 test
的文件,它将完全归我们的用户所有:
cd /共享触摸测试 ls -l
-rw-rw-r-- 1 your_user your_user 6 Jan 16 14:36 test
这将导致同步问题,因为 btsync 进程无法修改文件。 我们希望给它与它所在的文件夹相同的组权限,以便进程具有写访问权限。
我们可以通过在目录上设置 SGID 位来做到这一点。 这会将在目录内创建的所有新文件的组设置为目录本身的组。 这将允许适当的写访问来修改内容:
sudo chmod g+s /shared
现在,当我们创建一个文件时,它会被赋予目录的权限:
cd /shared touch test2 ls -l
-rw-rw-r-- 1 your_user your_user 6 Jan 16 14:36 test -rw-rw-r-- 1 your_user btsync 0 Jan 16 14:41 test2
这对于获得适当的功能大有帮助,但还不是很正确。
在继续之前删除我们创建的测试文件:
rm /shared/test*
将您的用户添加到 btsync 组并授予 Root 用户所有权
上面的方法有些作用,但使用 BitTorrent Sync 传输的文件归 btsync 用户和组所有。 这意味着目前,我们将无法编辑该服务同步的任何文件。
我们可以通过将我们的用户添加到 btsync 组来改变这一点。 这将允许我们修改 btsync 组可写的文件,这是我们想要的。
将您希望能够使用 btsync 的任何用户名添加到 btsync 组:
sudo usermod -a -G btsync your_user
这会将 btsync 组附加到用户的组定义中。 这将允许您编辑由 btsync 进程在共享文件夹中创建的文件。
但是,该目录仍归我们的用户所有,如果系统上有多个用户,这不是一个好方法。 我们应该将所有权转移给 root 用户,以避免普通用户更改文件夹设置。 我们还应该允许组写入权限,以便 btsync 组中的 anyone 可以添加内容:
sudo chown root:btsync /shared sudo chmod g+w /shared
您可能必须注销并重新登录才能使这些更改生效。
最后,创建适用于 BitTorrent Sync 的共享文件夹的过程如下所示:
sudo mkdir shared_folder sudo chown root:btsync shared_folder sudo chmod 2775 shared_folder sudo usermod -a -G btsync your_user
chmod
命令中的第一个“2”以与“g+s”之前相同的方式设置 SGID 位。 这只是组合这些命令的一种更简洁的方式。
访问 BitTorrent Sync Web 界面
现在我们有一个为 BitTorrent Sync 共享适当配置的文件夹,我们可以访问 Web 界面以添加我们的文件夹以开始同步。
同样,我们必须在希望配置同步的每台服务器上执行此操作。
通过转到您的 Droplet 的 IP 地址,然后是您在安装期间配置的端口来访问 Web 界面。 默认情况下,这是 8888
:
your_ip_or_domain :8888
您必须使用您在安装期间配置的凭据登录。 如果您没有更改,默认用户名是 admin
。
您将看到一个相当简单的开始界面:
将共享文件夹添加到第一个 Droplet
现在我们在我们的 Web 界面中,我们可以添加我们的共享文件夹,以便 btsync 进程可以注册它。
在您的第一台机器上,单击右上角的“添加文件夹”按钮。 这将弹出一个框,允许您选择要共享的目录:
找到您配置为共享的文件夹。 在我们的例子中,这是 /shared
文件夹。 选择文件夹后,您应该单击“生成”按钮为该文件夹生成一个秘密。
生成的密钥允许您将此文件夹与另一个 BitTorrent Sync 实例同步。 这个唯一值基本上是允许两个服务相互连接的密码。
完成这些步骤后,单击“添加”按钮。 这会将我们的文件夹添加到界面中,并在侧面为您提供一些按钮来管理此文件夹。
现在,我们只对“秘密/二维码”按钮感兴趣。 单击此按钮会弹出一个框,您可以在其中选择共享此文件夹的方式。
我们可以通过“完全访问”授予对具有读/写权限的文件夹的访问权限。 如果我们只想同步一种方式,比如备份,我们可以只允许读取访问。 为每种访问提供的秘密不同。
复制所需访问类型的密钥。 我们将在本教程中使用完全访问权限。
将共享文件夹和机密添加到第二个 Droplet
现在我们从第一个 VPS 获得了我们的秘密,我们可以添加我们在第二个 VPS 上创建的共享文件夹,并使用该秘密来同步我们的文件。
首先,您必须像使用第一台服务器一样登录到 Web 界面:
second_ip_or_domain :8888
进入第二台服务器的界面后,再次单击“添加文件夹”按钮。
添加本地创建的共享文件夹。
这一次,我们不再点击“生成”按钮,而是将来自另一个实例的秘密粘贴到“秘密”框中:
单击“添加”按钮以创建共享。
片刻之后,在两个 Web 界面中,您应该会在“连接的设备和状态”部分看到一些新信息:
这意味着我们的两个 BitTorrent Sync 实例已经找到了彼此! 前面的图标表示我们已授予完全访问权限,并且文件将双向同步。
测试同步
现在我们已经配置了同步,让我们测试一下它是否有效。
在您的一台服务器上(如果您配置了完全访问权限,那一台服务器并不重要),我们会将一些文件添加到我们的共享文件夹中。
作为已获得 btsync 组访问权限的用户,在共享目录中创建一些文件:
cd /shared touch file {1..10}
这将在共享目录中创建 10 个文件。 我们可以通过键入以下内容来检查这些是否已获得适当的权限:
ls -l
-rw-rw-r-- 1 your_user btsync 0 Jan 16 16:16 file1 -rw-rw-r-- 1 your_user btsync 0 Jan 16 16:16 file10 -rw-rw-r-- 1 your_user btsync 0 Jan 16 16:16 file2 -rw-rw-r-- 1 your_user btsync 0 Jan 16 16:16 file3 -rw-rw-r-- 1 your_user btsync 0 Jan 16 16:16 file4 . . .
如您所见,文件归您的用户所有,但组所有者是 btsync。 这正是我们想要的。
如果我们在几秒钟后检查我们的其他服务器,我们应该会在我们的共享目录中看到我们的文件!
cd /shared ls -l
-rw-r--r-- 1 btsync btsync 0 Jan 16 16:16 file1 -rw-r--r-- 1 btsync btsync 0 Jan 16 16:16 file10 -rw-r--r-- 1 btsync btsync 0 Jan 16 16:16 file2 -rw-r--r-- 1 btsync btsync 0 Jan 16 16:16 file3 -rw-r--r-- 1 btsync btsync 0 Jan 16 16:16 file4
如您所见,这些文件被提供给 btuser 和组。 这是因为该服务无法确定原始用户名是否存在于第二个系统上。
最后一步是让 btsync 守护进程自动将其同步的文件的文件权限设置为可由 btsync 组写入。 如果您提供完全访问权限以便您的用户编辑已同步的文件,则这是必要的。
我们可以通过重新配置 btsync 守护进程来做到这一点。 这将打开比我们最初进行配置时更多的选项。 通过键入以下内容开始在两台同步机器上重新配置:
sudo dpkg-重新配置 btsync
您将通过配置菜单运行,这一次有更多问题。 在大多数情况下,它应该自动选择您以前的选择,或者任何以前未设置的参数的默认选择。 您必须记住不要跳过的一个问题是密码提示。
您正在寻找的选项是由守护程序同步的文件的默认 umask
。
我们可以设置适当的 umask 来创建所有者和组(我们的用户所属的组)都可以写入的文件,方法是输入:
002
完成配置,守护程序应使用新设置自动重新启动。 在两台服务器上完成此任务后,您应该能够在一台服务器上创建一个新文件,并且它将在第二台主机上获得正确的可写权限:
触摸 /shared/write_test
文件同步后,在第二台主机上,您将看到如下内容:
-rw-rw-r-- 1 btsync btsync 0 Jan 30 10:44 write_test
在 Web 界面中,您不会看到您的文件已同步,因为这些文件不包含任何实际数据。 如果我们在文件中添加一些内容,界面将更新以显示我们已经同步了多少文件:
for item in /shared/file{1..10}; do echo "some content" > $item; done
结论
现在您已经配置了服务器,您可以轻松地在它们之间传输文件。 您还可以将多个文件夹配置为自动同步。 这可以提供一些有趣的选项来处理配置文件等。
该应用程序在如何在多台计算机之间同步方面相当灵活。 您可以创建一次性机密以确保没有人共享对您目录的访问权限,您只能与特定主机共享,并在您的移动设备之间同步。 BitTorrent Sync 通过目录中的 .SyncArchive
文件提供存档版本控制系统,并且可以限制速率以确保您有带宽可用于其他应用程序。