0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

手把手教你DIY一台服务器

FPGA技术江湖 来源:FPGA技术江湖 作者:FPGA技术江湖 2022-11-23 09:50 次阅读
本文将向你展示如何使用 UrBackup 和 Linux Deploy在一台 Android手机上搭建一台备份服务器。旧手机的污染问题众所周知,我有一台旧手机,虽然外壳有裂纹和磨损,但性能还很好,因此我打算废物再利用一下。 你的旧手机很可能:
  • 并没有那么旧(你会像换手机那样一两年就换一台电脑吗?)

  • 有 4-8 个处理器和大约 4GB 的内存,以及内置 UPS。只需要再加一个外部硬盘驱动,就可以备份整个家庭的网络了!

警告:这只是一个尝试可能性的项目。由于我们使用的是 Android,因此必须克服一些困难,而且很多方面都会受到限制。这可能并不是最简单的备份家庭网络的方法,也不是使用 UrBackup 的最佳用途。但在设置完成,服务器可以正常运行后,你就可以轻松地管理多台机器的备份并添加存储。下面是一些限制:
  1. 文件系统只能使用 EXT4。这是唯一兼容 UrBackup 和 Android 的文件系统。因此没有文件系统级别的压缩等功能。

  2. 从 chroot 环境下无法直接调用 systemd。我们会安装一个简单的启动脚本,启动 UrBackup 服务,并使用 pkill 停止服务。此外,我们还会添加一个 cronjob,在系统启动时启动服务。

  3. UrBackup 主要以 Windows 为主。虽然它提供 Linux 的完整备份功能,但其 Linux 版本的完整镜像依然是 beta 版状态。此处我们会安装稳定版,所以我们的服务器无法支持利用 Linux 客户端进行完整镜像备份。但是,你可以在客户端上创建备份镜像,然后备份含有这些镜像的目录。最后,UrBackup 团队也在开发 Mac 客户端支持,但同样是beta 版。对于我来说,我没有 Windows 服务器,我也不想备份我的Windows 笔记本电脑,所以我只在 Linux 服务器上使用 UrBackup。

  4. Linux Deploy 提供的发行版和版本支持很有限。我试验了 Centos7、Ubuntu 18.04 和 Debian 10,其中只有 Debian 10 能够毫无错误地运行。UrBackup 对 Debian 的支持也为最好(其他发行版都没有 ARM64 的 .deb 包)。

如果你打算与我一起尝试一下,则请看下面的行动计划:
  1. root 手机。具体做法请参考相关文档,不在此赘述。

  2. 安装 Linux Deploy 并部署 Debian Buster。

  3. 安装 UrBackup 服务器。

  4. 连接客户端。

请记住,本教程采用了非常特殊的配置,,其中大部分是为了适应在 chroot 环境中,在 Android 上使用 Debian。e8fa3f4e-6acb-11ed-8abf-dac502259ad0.jpg

准备工作

root Android手机我的手机是 Pixel 4a(8核CPU,6GB内存)。手机的特定型号应该没有太大关系,但不同的型号可能会遇到不同的问题。如果你的手机是在过去五年内发布的,那么规格上应该没问题。我建议至少 4 核 CPU 和 2GB 的内存,这对于大多数家庭网络来说应该就够了,但是你必须想清楚备份要求。此外不要忘记, Android 操作系统本身将占用一些资源。如果你打算通过 Magisk 来 root 手机,则请注意:
  • 确保你使用的 boot.img 文件与手机当前的引导程序版本相符。

  • 如果你使用的是 Android 11,而且 Magisk 程序无法正常工作,请降级到 Android 10再试。我在 Pixel 4a 上摆弄了一整天的 Android 11。

  • 如果你不想使用 Magisk,请非常谨慎地使用其他工具。有很多其他应用程序可能含有恶意软件。CF-Auto-Root 也是一款很好的 root 工具,但请确认下载源的安全。

Linux Deploy 应用该应用可以在 Debian 服务器上运行 chroot 环境。你可以从 GitHub 下载最新版本。应用商店中的版本已经没人维护了。BusyBox 应用该应用可以为 Linux Deploy 提供 Unix 工具程序。可用的“Busy Box”应用有好几个,但只有这个版本与 Linux Deploy 兼容。你可以从 GitHub 下载最新版本。应用商店中的版本已经没人维护了。充电线手机的充电线。从另一台机器上通过 SSH 连接到服务器尽管理论上可以在手机上安装 Termux 或 SSH 应用进行操作,但通过键盘进行操作肯定更容易。

可选设备(强烈推荐

尽管从技术的角度来看,你可以将备份存储在 SD 卡上,但不建议这样做。SD 卡的速度较慢,可靠性较低,并且无法长时间处理持续写入。如果你计划备份到SD 卡,那么估计一年内就会损坏(如果数据量大,甚至一个月内就会出问题)。USB 线的外置 HDD/SSD大小和写入速度取决于你个人,但我更关心可靠性,而不是存储和速度。如果你有大量存储空间(几百甚至几千GB),则速度很重要。在这种情况下,写入速度很关键,因为你可以及时完成备份。为了可靠性,我们必须考虑品牌。使用廉价的驱动器,就要做好心理准备备份过程中会出现 I/O 错误。USB 扩展坞根据你的手机,可能需要支持 micro USB 或 USB-C。这个扩展坞应该至少有一个 USB 端口,可以连接到外部驱动器,而且还有一个充电的端口,但我建议选择一个带有以太网适配器的扩展坞。你可以通过 WiFi 运行该服务器,但以太网更快、更可靠。以太网线如果你在以太网上运行服务器,则需要准备一个以太网线。

第一步:安装 Linux Deploy 并部署 Debian Buster

1-1. 在 root 完手机后,打开 GitHub,下载 Linux Deploy 和 BusyBox的 .apk 软件包,安装这两个应用。e91d3c56-6acb-11ed-8abf-dac502259ad0.png1-2. 安装完毕后,打开 BusyBox。安装的过程中,记录下 BusyBox 的安装位置。在下图中,BusyBox 安装到了"/system/xbin"。稍后我们会用到这个位置。e93415de-6acb-11ed-8abf-dac502259ad0.png1-3. 打开 Linux Deploy,点击右下方的设置图标。e953f57a-6acb-11ed-8abf-dac502259ad0.png完成如下设置:e96e468c-6acb-11ed-8abf-dac502259ad0.png架构所有安卓手机都是 AARCH64/ARM64。确保显示的是 “arm64”(或者是其他发行版的 “aarch64”)。安装路径默认值是 "${EXTERNAL_STORAGE}/linux.img"。这是你的 SD 卡,你可以留着它(可以在树莓派上工作)。但是,如果没有插入 SD 卡或未正确格式化,则安装将失败。我建议安装到你的内部存储中。我假设你不会使用手机干别的事情,因为它需要一直插着电。镜像大小(MB)我建议至少保留 15 GB,但请确保为 Android 留出足够的存储空间。这部分空间会占用内部存储,因此最后剩下的空间可能没有 50 GB 这么多。初始化系统如果没有设置为 “sysv”,则 cronjobs 将不会在启动时运行。挂载如果你不担心将来的存储扩展,则挂载外部块设备时只需将其路径直接添加到挂载点。如果以后有扩展存储的打算,则可以考虑逻辑分区。我们在此加载的设备,都可以在启动时直接访问,但不能用于分区和格式化。但是,请记住,重新启动手机时,块设备的名称 (/dev/block/sdX) 可能会变化,因此可能需要在重新启动时检查/更新此配置。如果你挂载的是逻辑卷,则名称不会变化,也不需要检查。如何找到外部块设备的路径在 Android 上,你可以通过 “/dev/block/sdX”(而不是 “/dev/sdX”)找到块设备。为了确定哪个 sdX 设备是外部块设备,你需要在插入该设备的服务器上运行“lsblk”。然后搜索各种设备,并查看哪一个与你的设备一致(就存储容量/现有分区而言)。如果你在启动后插入设备,则可能是最后一个设备。注意:挂载块设备后,你必须先解除挂载或关闭服务器,然后才能从物理上断开块设备的连接。如果在未解除挂载的情况下断开块设备的连接,则很可能会丢失所有数据。1-4. 回到首页,并打开左上角的菜单。选择 “Settings”(设置),并一直向下滚动到 “PATH variable”(路径变量)。这就是你安装 BusyBox 的位置。设置好 “PATH variable” 后,选择 “Update ENV”(更新环境变量)。e97f9054-6acb-11ed-8abf-dac502259ad0.png1-5. 返回首页,打开右上角的菜单。点击 “Install”(安装)。你将看到安装的实时日志。完成后,日志将以 “deploy”结尾。选择屏幕左下角的 “START”(开始)。Android 手机上就开始运行 Debian 服务器了!e99c2a98-6acb-11ed-8abf-dac502259ad0.png

第二步:安装 UrBackup 服务器

2-1. SSH 到新部署的服务器。IP 地址与手机相同,端口为 22,你可以使用步骤 1-3 中设置的凭据登录。本教程后续内容均假设你以 root 身份登录。打开 Linux Deploy 就可以看到你的 IP:e9f65b26-6acb-11ed-8abf-dac502259ad0.png2-2. 更新系统。
apt update && apt upgrade -y && apt install wget

2-3. 下载 UrBackup 的 .deb 包。

wget https://hndl.urbackup.org/Server/2.4.13/urbackup-server_2.4.13_arm64.deb

这是目前最新的稳定版本。

2-4. 创建备份目录。在这个例子中,我将备份目录设置为 “/mnt/backup”。如果你挂载了存储,则目录已经创建好了;如果没有,请创建目录:
mkdir -p /mnt/backup

更新权限:

chownurbackup/mnt/backupchgrp urbackup /mnt/backup

允许 UrBackup 写入此目录。

2-5. 安装启动脚本。我们无法在 chroot 环境中调用 systemd,因此需要手动启动该服务:
/usr/bin/urbackupsrv run --config /etc/default/urbackupsrv --no-consoletime

为了避免每次都输入该命令,我们可以创建一个脚本:

nano /usr/bin/urbackupsrv-star

将其复制到下面的文件中:

#!/bin/sh/usr/bin/urbackupsrv run --config /etc/default/urbackupsrv --no-consoletime

保存并退出。

添加执行权限:
chmod 755 /usr/bin/urbackupsrv-start

2-6. 启动服务。

urbackupsrv-start

该命令将启动服务器的日志。你可以按下 CTRL-C 停止服务,因此需要另开一个 SSH 会话。

如果想停止此服务,只需要干掉它就可以了:
pkill urbackup

2-7. 添加定时作业。

由于我们无法以传统的方式“启用” UrBackup 服务,因此需要设置一个定时作业来启动该服务。此外,如果你断开外部块存储或重新启动手机,备份目录的权限可能会恢复。为确保在重新启动时这些设置能保留下来,我们需要添加定时作业。打开 crontab:
crontab -e

添加作业:

@reboot chown urbackup [full/path/to/backup_directory] && chgrp urbackup [full/path/to/backup_directory] && urbackupsrv-start

保存并退出。

2-8. 打开 Web 界面。通过 Web 浏览器导航到服务器的端口 55414:http://YOUR_SERVER_IP:55414ea05e0f0-6acb-11ed-8abf-dac502259ad0.png

第三步:连接客户端

3-1. 点击屏幕右下方的 “Add new client”(添加新客户端):ea17a59c-6acb-11ed-8abf-dac502259ad0.png3-2. 点击 “Add new Internet client/client behind NAT”,并输入新客户端的名称:ea36ff3c-6acb-11ed-8abf-dac502259ad0.png这是新客户端的主机名。3-3. 安装客户端。对于 Windows 客户端:按照“Download preconfigured client installer for Windows” 的说明安装客户端。对于 Linux 客户端:记下顶部的 “Default authentication key”,回头有需要。ea4464b0-6acb-11ed-8abf-dac502259ad0.png登录到客户端,并运行此安装脚本:(不要运行服务器提供的脚本)TF=$(mktemp) && wget "https://hndl.urbackup.org/Client/2.4.11/UrBackup%20Client%20Linux%202.4.11.sh" -O $TF && sudo sh $TF; rm -f $TF(检查最新的客户端下载。)在安装过程中,脚本会要求你选择快照机制。对于“LVM - Logical Volume Manager snapshots”,请输入“2”:ea633d5e-6acb-11ed-8abf-dac502259ad0.png

安装完成后,请确认客户端的正常运行:

service urbackupclientbackend status

如果客户端没有运行,请运行下述命令:

service urbackupclientbackend start

最后,通过下述命令将客户端连接到服务器:

urbackupclientctlset-settings-kinternet_mode_enabled-vtrue-kinternet_server-v"YOUR_SERVER_IP"-kinternet_server_port-v"55415"-kcomputername-v"YOUR_CLIENT_NAME"-k internet_authkey -v "YOUR_DEFAULT_AUTHENTICATION_KEY"

请确保"YOUR_CLIENT_NAME"与3-2中设置的主机名相同,"YOUR_DEFAULT_AUTHENTICATION_KEY"是服务器前面生成的键。

3-4. 配置服务器。返回 Web 界面,你会发现客户端并不在线,点击顶部导航栏上的“Settings”(设置):点击“Settings”页面上的“Internet”(互联网)页签,检查如下设置:ea6e9884-6acb-11ed-8abf-dac502259ad0.png(如果所有客户端都是本地的,则可以取消“Do image backups over the internet”以及“Do full file backups over the internet”。)滚动到底部并单击保存。3-5. 设置备份目录。在“Settings”页面上,点击“”Client settings(客户端设置)。选中“Separate settings for this client”,在“File Backups”下的“Default directories to backup”中设置你想备份的目录。如果想添加多个目录,可以用分号“;”分隔。ea890caa-6acb-11ed-8abf-dac502259ad0.png你还可以在此设置备份间隔。点击底部的保存。对于 Linux 客户端,你也可以从客户端的命令行设置:
urbackupclientctl add-backupdir -d FILE_PATH

重启服务器:

pkillurbackupurbackupsrv-start

3-6. 重新登录到 Web 界面。

到此为止,客户端已经连接好了。可能“File backup status”(文件备份状态)会显示“No paths to backup configured”(没有设置备份路径),但没关系,在第一次完成备份之前,都会这显示。另外请注意,如果你连接的是Linux 客户端,则不支持镜像备份。但是,你可以通过 Linux 客户端运行镜像备份,并设置备份镜像的目录。接下来,你就可以尝试一下备份了!ea9f83d6-6acb-11ed-8abf-dac502259ad0.png  

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3927

    浏览量

    127199
  • Linux
    +关注

    关注

    87

    文章

    11237

    浏览量

    209036
  • 服务器
    +关注

    关注

    12

    文章

    9048

    浏览量

    85242

原文标题:旧手机别扔,手把手教你DIY一台服务器

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Air780E模组LuatOS开发实战 —— 手把手教你搞定数据打包解包

    本文要说的是低功耗4G模组Air780E的LuatOS开发实战,我将手把手教你搞定数据打包解包。
    的头像 发表于 12-03 11:17 57次阅读
    Air780E模组LuatOS开发实战 —— <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>搞定数据打包解包

    Kubernetes集群搭建容器云需要几台服务器

    Kubernetes集群搭建容器云需要几台服务器?至少需要4台服务器。搭建容器云所需的服务器数量以及具体的搭建步骤,会根据所选用的技术栈、业务规模、架构设计以及安全需求等因素而有所不同。以下是
    的头像 发表于 10-21 10:06 142次阅读

    多个网站放在同一台服务器ip有什么影响?

    将多个网站放在同一台服务器上,使用同个IP地址,可能会有以下影响: 1、资源共享:多个网站共享同一台服务器的资源,如CPU、内存、存储空间和带宽。如果其中个网站流量或资源消耗突然增
    的头像 发表于 09-12 11:15 408次阅读

    服务器数据恢复—意外断电导致虚拟机虚拟磁盘损坏的数据恢复案例

    服务器数据恢复环境: 一台服务器中有组由4块STAT硬盘通过RAID卡组建的RAID10阵列,上层是XenServer虚拟化平台,虚拟机安装Windows Server操作系统,作为Web
    的头像 发表于 09-10 17:25 294次阅读
    <b class='flag-5'>服务器</b>数据恢复—意外断电导致虚拟机虚拟磁盘损坏的数据恢复案例

    服务器数据恢复—xfs文件系统服务器数据恢复案例

    某公司一台服务器,连接了一台存储。该服务器安装linux操作系统,文件系统为xfs。 在运行过程中该服务器出现故障,管理员使用xfs_repair工具试图对xfs文件系统进行修复但失
    的头像 发表于 08-19 10:49 265次阅读

    手把手教你通过宏集物联网工控屏&amp;网关进行协议转换,将底层PLC/传感的数据转换为TCP协议并传输到用户

    手把手教你通过宏集物联网工控屏&网关进行协议转换,将底层PLC/传感的数据转换为TCP协议并传输到用户终端
    的头像 发表于 08-15 13:29 456次阅读
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>通过宏集物联网工控屏&amp;网关进行协议转换,将底层PLC/传感<b class='flag-5'>器</b>的数据转换为TCP协议并传输到用户

    主机托管是多个用户共享一台服务器吗?有什么优势

    主机托管并不是多个用户共享一台服务器。主机托管是服务,客户可以将自己的硬件服务器托管给服务商,并享受专业的
    的头像 发表于 08-13 14:45 215次阅读

    手把手教你排序算法怎么写

    今天以直接插入排序算法,给大家分享下排序算法的实现思路,主要包含以下部分内容:插入排序介绍插入排序算法实现手把手教你排序算法怎么写在添加新的记录时,使用顺序查找的方式找到其要插入的位置,然后将
    的头像 发表于 06-04 08:03 652次阅读
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>排序算法怎么写

    手把手带你移植HAL库函数

    开发者更高效地进行嵌入式开发。手把手带你移植HAL库函数HAL库提供了套抽象接口,使开发者无需直接操作底层硬件寄存,就能实现对硬件的控制。这种抽象使得代码能够更
    的头像 发表于 05-18 08:04 1745次阅读
    <b class='flag-5'>手把手</b>带你移植HAL库函数

    无线测温系统的后台服务器

    无线测温后台服务器是无线测温系统的重要组成部分,它负责接收、处理、存储和展示来自无线测温设备的数据。 报警功能是后台服务器个重要特色,用户可根据需求自定义温度报警值。旦设备温度超
    的头像 发表于 03-29 09:42 324次阅读

    服务器数据恢复—服务器硬盘灯显示红色,服务器崩溃的数据恢复案例

    一台服务器中有组由多块硬盘组建的raid阵列,在运行过程中服务器突然崩溃,管理员检查服务器发现该服务器raid阵列中有两块硬盘的指示灯显示
    的头像 发表于 03-15 11:17 485次阅读
    <b class='flag-5'>服务器</b>数据恢复—<b class='flag-5'>服务器</b>硬盘灯显示红色,<b class='flag-5'>服务器</b>崩溃的数据恢复案例

    服务器数据恢复—服务器阵列磁盘进水损坏的数据恢复案例

    数据恢复工程师到达现场后发现机房内有一台存储柜中的机器都没有开机。和用户方沟通后得知:机房天花板渗水导致这台存储柜中最上方的两台服务器进水,其中一台服务器经过检修后可以正常工作,但是最上方的那
    的头像 发表于 01-22 13:40 338次阅读
    <b class='flag-5'>服务器</b>数据恢复—<b class='flag-5'>服务器</b>阵列磁盘进水损坏的数据恢复案例

    如何配置单台服务器

    万里征途总是从第步开始的,构建个复杂系统也是如此。我们从简单的部分着手,先让所有的功能都在服务器上运行。图1-1展示了如何配置单台服务器
    的头像 发表于 01-19 10:19 593次阅读
    如何配置单<b class='flag-5'>台服务器</b>

    工程送样!手把手教你用好广和通RedCap模组FG131&amp;amp;FG132系列

    工程送样!手把手教你用好广和通RedCap模组FG131&FG132系列
    的头像 发表于 01-11 18:22 674次阅读
    工程送样!<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>用好广和通RedCap模组FG131&amp;amp;FG132系列

    服务器数据恢复—Raid5部分磁盘重建新raid5如何恢复原raid数据?

    一台服务器上搭建了组由5块硬盘组建的raid5阵列,服务器上层存放单位重要数据,无备份文件。
    的头像 发表于 12-11 13:20 847次阅读