旧手机别扔,手把手教你DIY一台Linux服务器

作者:Hannah Lee

编译:弯月 欧阳姝黎

来源:CSDN(ID:CSDNnews)

a96f927b2f4e54ecb297137eff8b2a67.png

本文将向你展示如何使用 UrBackup 和 Linux Deploy在一台 Android 旧手机上搭建一台备份服务器。旧手机的污染问题众所周知,我有一台旧手机,虽然外壳有裂纹和磨损,但性能还很好,因此我打算废物再利用一下。

51cb0982881d998c40c99fa6b793f4c9.png

你的旧手机很可能:

  • 并没有那么旧(你会像换手机那样一两年就换一台电脑吗?)

  • 有 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。

3600a6ebe48a24f1bf926736e29c8a86.png

准备工作

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 软件包,安装这两个应用。

f28a3a571f54b3dc40df177b131c5f02.png

1-2. 安装完毕后,打开 BusyBox。安装的过程中,记录下 BusyBox 的安装位置。在下图中,BusyBox 安装到了"/system/xbin"。稍后我们会用到这个位置。

980319fe499fdb741b9dad0cd53df2eb.png

1-3. 打开 Linux Deploy,点击右下方的设置图标。

855634bf0915e705d0343cb7971ae607.png

完成如下设置:

e7533d1f53c05a3efa26d5587ebfd56c.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”(更新环境变量)。

d769b8e5683cdc76b4bb78e4de0b9f7b.png

1-5. 返回首页,打开右上角的菜单。点击 “Install”(安装)。你将看到安装的实时日志。完成后,日志将以 “deploy”结尾。 选择屏幕左下角的 “START”(开始)。Android 手机上就开始运行 Debian 服务器了!

c99b8dbf83e81cf5c0461e4b0f70f52b.png

第二步:安装 UrBackup 服务器

2-1. SSH 到新部署的服务器。

IP 地址与手机相同,端口为 22,你可以使用步骤 1-3 中设置的凭据登录。本教程后续内容均假设你以 root 身份登录。打开 Linux Deploy 就可以看到你的 IP:

96b35b2768fa25c6120e679be186fc2a.png

2-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

更新权限:

chown urbackup /mnt/backup
chgrp 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:55414

09c9fff02dbe8ff400e99fdcbe377abf.png

第三步:连接客户端

3-1. 点击屏幕右下方的 “Add new client”(添加新客户端):

83a44e54ff5fa52d4972739e1add3070.png

3-2. 点击 “Add new Internet client/client behind NAT”,并输入新客户端的名称:

67b828fdcfa5f130e4ad1c64283b9624.png

这是新客户端的主机名。

3-3. 安装客户端。

对于 Windows 客户端:

按照“Download preconfigured client installer for Windows” 的说明安装客户端。

对于 Linux 客户端:

记下顶部的 “Default authentication key”,回头有需要。

e8d00648d979f6a52243d624c61fa31f.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”:

97f85e6e0caece75acdf01e5f3b644b7.png

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

service urbackupclientbackend status

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

service urbackupclientbackend start

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

urbackupclientctl set-settings \
-k internet_mode_enabled -v true \
-k internet_server -v "YOUR_SERVER_IP" \
-k internet_server_port -v "55415" \
-k computername -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”(互联网)页签,检查如下设置:

20ea93f70b14769de9100bed0fedd70a.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”中设置你想备份的目录。如果想添加多个目录,可以用分号“;”分隔。

dc1d72b0994f7dda63c5ea374a6900e8.png

你还可以在此设置备份间隔。

点击底部的保存。

对于 Linux 客户端,你也可以从客户端的命令行设置:

urbackupclientctl add-backupdir -d FILE_PATH

重启服务器:

pkill urbackup
urbackupsrv-start

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

到此为止,客户端已经连接好了。可能“File backup status”(文件备份状态)会显示“No paths to backup configured”(没有设置备份路径),但没关系,在第一次完成备份之前,都会这显示。

另外请注意,如果你连接的是Linux 客户端,则不支持镜像备份。但是,你可以通过 Linux 客户端运行镜像备份,并设置备份镜像的目录。

接下来,你就可以尝试一下备份了!

1ab4670d58754997cae6f4553fcd4d83.png

— END —

声明:文章转自“网络”,版权归原作者所有!如涉及您的版权,请联系我们删除!



推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学计算机买电脑显卡1605ti够吗,GTX1650和GTX1050Ti哪个好?GTX1050ti和GTX1650性能差距对比评测...

GTX1650显卡在2019年4月22日进行发售,不少用户认为GTX1650是智商检测卡,真的是吗?从命名上来看,GTX1650应该是GTX1050的升级产品,不过根据英伟达的说法,GTX1650相比GTX1050提升幅度达到了70%,但…

Gamma的传说

Gamma校正对于图形和图像来说是个常提的概念,但对于gamma的缘由和使用方法,却存在着很多传说。本文将尽可能解析gamma校正来源,破解各种迷思。Gamma校正从何而来 有一种常见的说法,gamma来源于眼睛对光感受。我也曾经错误地采用了…

心急吃不了热豆腐

良好的焊接是保证电路稳定持久工作的前提。下面给出了常见到的焊接缺陷。看看你遇到过多少种?▲ 图1 焊接中的常见问题▲ 图2 锡珠▲ 图3 扰动的焊接:在焊接点冷却过程中焊锡移动,造成焊接表面起雾、结晶、粗糙▲ 图4 立碑▲ 图5 冷结&…

给电子类大学生一点求职建议

‍读大学的时候应该想清楚以后要干嘛,不然很可能要面对毕业即失业的窘境。每年近千万毕业生涌向社会,这个数字多少会给你点压力吧。因为我是专业对口的,所以我就从对口的角度,说下我们电子信息类专业学的啥以及怎么学。有很多人在…

Silverlight三维柱状图3D饼图的Silverlight图表组件案例

Silverlight三维柱状图3D饼图的Silverlight图表组件案例 开发环境:Visual Studio 2010 Silverlight 4 SQL2005 Silverlight开发的3D图表组件与及应用的项目截图: 本Silverlight开发的图表控件程序架构简洁清淅,是做二次开发的良好项目框架和核…

oppo专用计算机,OPPO手机助手

OPPO手机助手是OPPO官方最安全的手机助手,将OPPO手机和电脑连接后,可通过“OPPO手机助手”在电脑上管理手机中的应用程序、短信、通讯录(含通话记录)和图片等,还能在电脑上备份手机中的资料。OPPO手机助手是oppo手机的贴心管家。华军软件园提…

EDG牛逼

不管EDG有多牛,明天的早餐可以加个馒头!EDG🐮🍺

[LeetCode][Python][C#]刷题记录 26. 删除排序数组中的重复项

这道题我真的纠结好久,因为没注意那个原地的题目要求,所以很奇怪怎么我电脑运行成功,但是LeetCode上运行就是不对。气哭。 感谢群友lino的帮助。他试了set方法不行,直接喂给我的答案了。。。 题目:26. 删除排序数组中的…

IE9给我带来的惊喜和不解(For Silverlight不解)

今天兴致冲冲的装上了IE9,发现IE9装好后不能打开我的Silverlight。提示我需要安装Silverlight插件 如图 后面深蓝色群里得朋友说他们没有这个问题,但是在64位的情况下会有这个问题,我查看了 我的Silverlight是好的,并且重新安装ru…

不要怕

昨晚很晚没有睡,一个原因是看比赛,一个原因是因为收到一个读者的留言,不是一般的留言,是很长的一段留言。有很多感同深受的地方,所以想着怎么开导他,就写了很多东西给他,一个是希望给他支持&…

H3C交换机设置DHCP中继,配合Linux 服务器为多VLAN提供DHCP地址分配服务

H3C交换机设置DHCP中继,配合Linux 服务器为多VLAN提供DHCP地址分配服务 wanghaoqd 最近在单位用Linux做了一台DHCP服务器,使用H3C S7506R交换机做中继,为两个VLAN提供DHCP服务,经过两个月的测试效果很好。在这里把服务器和交换机的…

图灵书单 双十一超低优惠来袭

大家好,我是写代码的篮球球痴,最近当当网的运营争取了一波小福利,5折买书,如果最近想买书的朋友可以看看,使用下面的优惠码买书可以享受5折优惠。ON SALE又到了双十一购物狂欢节。大家有没有想要的好书一直等到双十一打…

8.在idea中配置maven

1.在IntelliJ IDEA中配置maven 打开-File-Settings 2.我们还可以在勾选一些其他选项 3.我们可以更新一下本地仓库和远程仓库,这个样在pom.xml文件中添加依赖jia包的坐标时就可以很好的提示出来 转载于:https://www.cnblogs.com/holly8/p/9585777.html

Linux文件系统十问

我在知乎和公众号上都提到过,我 2012 在腾讯工作的时候写过一篇《Linux文件系统十问》。总有人问我这篇文章在哪里能看到,如今外网唯一的正版链接-腾讯学堂也挂了,网上能搜到的全是盗版。所以今天我干脆就正式给大家发一遍。以下是这篇文章的…

UILabel添加图片之富文本的简单应用

若想对UILabel添加图片,那么就需要使用NSMutableAttributedString来定义先定义一个普通的label UILabel *lab [[UILabel alloc]initWithFrame:CGRectMake(10, 100, self.view.frame.size.width-10, 100)]; lab.numberOfLines 0; [self.view addSubview:lab]; 然后…

从面试到入职大疆全记录

哈喽,大家好,我是仲一。今天和大家分享的是一位优秀双非本科生上岸大疆的经历(羡慕哭了。。。)。今年4月底的时候,这位学弟和我分享了他拿下oppo,京东,联发科实习offer的经历,当时我…

物联网是互联网发展的必然趋势吗?

李彦宏说,移动互联网的时代结束了。周鸿祎说,互联网下半场就要开启。那么互联网下一个超级风口,在物联网吗?所谓物联网,其实就是借助互联网的力量,实现万物互联。实际上物联网已不知不觉融入我们的生活中&a…

个人收集一些程序员面试题目(一) 一起分享

2019独角兽企业重金招聘Python工程师标准>>> 阿里巴巴公司DBA笔试题 http://searchdatabase.techtarget.com.cn/tips/2/2535002.shtml 注:以下题目,可根据自己情况挑选题目作答,不必全部作答.您也可以就相关问题直接找负责面试人员面述而不…

自适应Web主页

HTML 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>自适应主页</title>6 <link rel"stylesheet" href"test.css">7 </head>8 <body&…

Linux驱动程序的数据封装

引言0基于ARM内核的SoC在引入设备树技术之后&#xff0c;通过设备树文件来描述不同的设备并匹配不同的驱动代码&#xff0c;使得一个kernel镜像文件可以支持多种设备。这种代码可重用的思想不仅体现在设备树文件中&#xff0c;在驱动代码中同样也有所体现。其中之一就是驱动代码…