前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用旧手机自制服务器了解一下?!

利用旧手机自制服务器了解一下?!

作者头像
程序猿石头
发布于 2022-02-28 07:14:22
发布于 2022-02-28 07:14:22
1.7K00
代码可运行
举报
文章被收录于专栏:程序猿石头程序猿石头
运行总次数:0
代码可运行

背景

大家好,我是石头哥。

不知道你都用过多少手机了?是不是有不少闲置的旧手机。

今天就给大家分享一篇文章,如何使用 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。

准备工作

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

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

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

完成如下设置:

架构

所有安卓手机都是 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”(更新环境变量)。

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

第二步:安装 UrBackup 服务器

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

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

2-2. 更新系统。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt update && apt upgrade -y && apt install wget

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://hndl.urbackup.org/Server/2.4.13/urbackup-server_2.4.13_arm64.deb

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

2-4. 创建备份目录。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir -p /mnt/backup

更新权限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chown urbackup /mnt/backup
chgrp urbackup /mnt/backup

允许 UrBackup 写入此目录。

2-5. 安装启动脚本。

我们无法在 chroot 环境中调用 systemd,因此需要手动启动该服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/urbackupsrv run --config /etc/default/urbackupsrv --no-consoletime

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nano /usr/bin/urbackupsrv-star

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/sh

/usr/bin/urbackupsrv run --config /etc/default/urbackupsrv --no-consoletime

保存并退出。

添加执行权限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chmod 755 /usr/bin/urbackupsrv-start

2-6. 启动服务。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
urbackupsrv-start

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pkill urbackup

2-7. 添加定时作业。

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

打开 crontab:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
crontab -e

添加作业:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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

第三步:连接客户端

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

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

这是新客户端的主机名。

3-3. 安装客户端。

对于 Windows 客户端:

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

对于 Linux 客户端:

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

登录到客户端,并运行此安装脚本。

在安装过程中,脚本会要求你选择快照机制。对于“LVM - Logical Volume Manager snapshots”,请输入“2”:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service urbackupclientbackend status

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service urbackupclientbackend start

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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”(互联网)页签,检查如下设置:

(如果所有客户端都是本地的,则可以取消“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”中设置你想备份的目录。如果想添加多个目录,可以用分号“;”分隔。

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

点击底部的保存。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
urbackupclientctl add-backupdir -d FILE_PATH

重启服务器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pkill urbackup
urbackupsrv-start

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

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

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

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

原文链接:https://www.hannahtech.co/post/turn-your-old-cracked-android-phone-into-a-backup-server-urbackup-linux-deploy-tutorial-part-i 声明:作者 | Hannah Lee,译者 | 弯月,责编 | 欧阳姝黎,出品 | CSDN(ID:CSDNnews),转载请注明来源。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿石头 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
变废为宝:将废弃安卓手机安装Linux,打造个人局域网服务器
注:可通过“toolbox——>主页”判断电脑是否成功连接fastboot,如未连接成功,重启并重新插拔数据线。
小新笔记坊
2024/12/17
8490
用Linux Deploy让安卓手机成为Linux服务器
打开linux deploy,左上角设置,最重要的就是下面两个要勾上,其他的设置可采用默认的
Qwe7
2022/03/05
9.4K0
如何在Ubuntu 14.04上使用Bacula备份LAMP服务器
启动并运行应用程序服务器后,下一个重要步骤就是设置备份系统。备份系统允许您创建数据的定期备份副本,并从这些备份中还原数据。由于用户错误或任何计算机系统容易出现的终端硬件故障导致数据丢失,您需要将备份设置为安全网。
小皇帝James
2018/09/19
1.7K0
用旧手机改造成 Web 服务器并实现内网穿透
然后打开 Linux Deploy,点击右下方的配置,设置系统相关信息,容器类型选 chroot,发行版选 CentOS,如果选其他发行版,架构一定要选对,不然会安装出错,或者无法使用,安装之前一定要知道手机CPU的架构;源地址建议切换为国内源,这里放上中科大的镜像源 http://mirrors.ustc.edu.cn/centos-altarch/ ,国内还有其他源可选择,例如清华源,阿里源等
雨落秋垣
2024/10/22
1520
【实用的开源项目】使用服务器部署Navidrome音乐服务器,又一款开源的音乐服务器程序!
之前小俊给大家介绍过 Koel 音频流服务,就是为了解决大家的这个问题:下载下来的音乐,只能在本机欣赏,难以在多设备共享,如果自己搭建一个音乐服务器,然后再上传自己喜欢的音乐,就太巴适了!小俊最近发现了一个程序—— Navidrome ,小俊这就来推荐给大家啦!还带来了它的部署教程哦!滑下去细看吧!
小俊是我
2023/09/02
4.9K0
【实用的开源项目】使用服务器部署Navidrome音乐服务器,又一款开源的音乐服务器程序!
ceph-mimic版
Ceph使用RADOS提供对象存储,通过librados封装库提供多种存储方式的文件和对象转换。外层通过RGW(Object,有原生的API,而且也兼容Swift和S3的API,适合单客户端使用)、RBD(Block,支持精简配置、快照、克隆,适合多客户端有目录结构)、CephFS(File,Posix接口,支持快照,社会和更新变动少的数据,没有目录结构不能直接打开)将数据写入存储。
yuezhimi
2020/09/30
9340
5分钟搭建PalWorld(幻兽帕鲁)游戏服务器
官方地址https://openvpn.net/client/client-connect-vpn-for-windows/
小宇-xiaoyu
2024/01/22
13.3K4
5分钟搭建PalWorld(幻兽帕鲁)游戏服务器
腾讯云锐驰型轻量服务器搭建开源远程桌面软件RustDesk中继服务器小记
由于我个人经常性出差,对远程桌面软件有强需求,而微软自带的RDP并不能完全满足我的需求,且国内的向日葵/ToDesk/TeamViewer的定价与吃相属实太过美丽,所以目光转向了开源的方案,最终敲定为RustDesk的原因是没有带宽分辨率限制(你也不想720P的远程分辨率吧),且拥有较为完善的第三方WebUI管理后台。
SakuraRain
2025/03/11
9100
腾讯云锐驰型轻量服务器搭建开源远程桌面软件RustDesk中继服务器小记
初识ceph
ceph作为新一代的PB级高可靠性分布存储系统已经流行很长时间了,在研究了glusterfs之后,一直想找个机会研究一下它,这周终于抽出来时间了。 概念 相对于其它分布式存储系统,它开创性地用统一的系
jeremyxu
2018/05/10
1K0
linux dhcp服务器搭建_如何自己搭建服务器
本文链接: https://blog.csdn.net/qq_45668124/article/details/121810404
全栈程序员站长
2022/11/18
19.7K1
linux dhcp服务器搭建_如何自己搭建服务器
[干货Get!]Android搭建Cloudreve私人云盘
不过许多人都没有树莓派,但是旧手机大家大部分肯定还是有的,那么这一篇教程就让我们利用旧Android手机搭建我们的私有家庭云
KINDYEAR
2022/07/12
5.6K0
[干货Get!]Android搭建Cloudreve私人云盘
国产开源一个简易的个人Linux服务器管理面板
地址:https://github.com/chaos-zhu/easynode_web
开源日记
2023/04/11
1.9K0
国产开源一个简易的个人Linux服务器管理面板
搭建git服务器
我们都知道GitHub只有公开库是免费的,而私有仓库是需要花钱买的。所以我们可以想办法自己搭建一个私有的,仅自己公司使用的。Gitlab是个不错的选择。在介绍它之前,先讲述一下如何搭建命令行的git服务器。
端碗吹水
2020/09/23
3K0
搭建git服务器
使用termux将华为手机配置成linux服务器
安卓手机使用的Android操作系统脱胎于Linux操作系统,但是他并不是一种Linux(的发行版)。他们之间在系统框架(android多了一层java虚拟机)、底层驱动(android有HAL层)等等方面都有差异,因此两者貌似是无法互相替代的。对于使用者来说,安卓手机既是娱乐工具也是生产力工具,而Linux主机往往是纯粹的生产力工具,在生产力工具的意义上,能够把安卓手机当成Linux主机来使用么?通常来说是不行的,使用Termux的话就未必不行了。
王耑
2022/10/12
8.1K0
【CEPH-初识篇】ceph详细介绍、搭建集群及使用,带你认识新大陆
Ceph在一个统一的系统中独特地提供对象、块和文件存储。Ceph 高度可靠、易于管理且免费。Ceph 的强大功能可以改变您公司的 IT 基础架构和管理大量数据的能力。Ceph 提供了非凡的可扩展性——数以千计的客户端访问 PB 到 EB 的数据。ceph存储集群相互通信以动态复制和重新分配数据。
秋意零
2022/06/04
13.9K0
【CEPH-初识篇】ceph详细介绍、搭建集群及使用,带你认识新大陆
Ubuntu CEPH快速安装
不管你是想为云平台提供Ceph 对象存储和/或 Ceph 块设备,还是想部署一个 Ceph 文件系统或者把 Ceph 作为他用,所有 Ceph 存储集群的部署都始于部署一个个 Ceph 节点、网络和 Ceph 存储集群。 Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )。
py3study
2020/01/20
4.6K0
教你一招,安卓手机秒变服务器
关于获取Root权限有很多方式,我呢因为手机装了面具(magisk,可以装很多插件,提高你手机的可玩性),所以通过面具获取了Root权限,装面具大家可以参考其官网详细教程:https://magiskcn.com/
贪挽懒月
2021/11/29
8K0
教你一招,安卓手机秒变服务器
如何在 Linux 服务器上更改分区方案?
在 Linux 服务器上,分区方案对于数据存储和系统管理至关重要。当服务器的存储需求发生变化或者需要重新组织分区时,更改分区方案是一个常见的任务。
网络技术联盟站
2023/05/19
3.9K0
如何在 Linux 服务器上更改分区方案?
安装Ceph集群(二)
注 意: 版本更新非常快,有问题要看官方文档 官方文档: http://docs.ceph.com 准备环境 系统版本:centos7.4 x86_64 server 硬件配置:5台vm,1核1G内存,每台node角色的机器至少挂载1块不低于5个G的空闲盘为osd存储 ​ 主机名 ip role admin 192.168.153.130 admin--安
用户8639654
2021/08/18
2940
Ceph 分布式存储使用指南
*注意:本文大部分参考官方文档https://docs.ceph.com/docs/octopus/,因为网络原因,部署命令和官网有些许出入,更符合现在条件一些,且官方已经抛弃ceph-deploy 部署工具改用cephadm,不要傻傻看使用ceph-deploy的老古董啦。
jwangkun
2021/12/23
2.7K0
Ceph 分布式存储使用指南
推荐阅读
相关推荐
变废为宝:将废弃安卓手机安装Linux,打造个人局域网服务器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验