首页 系统教程 操作系统 利用树莓派构建一个网络存储设备的方法

利用树莓派构建一个网络存储设备的方法

Dec 31, 2023 am 11:53 AM
linux linux教程 红帽 linux系统 linux命令 linux认证 红帽linux linux视频

导读 你有闲置的移动硬盘和树莓派吗?你可以用这些来打造一个廉价而且低能耗的NAS。最后的效果肯定比不上售价500美刀的NAS,比如Synology DiskStation出品的那些。但可以搭建出一个低能耗的网络存储平台——而且特别适用于已经厌倦了国家安全局的数据监控的那些人,你可以把数据藏在这个“小阁楼”里。

利用树莓派构建一个网络存储设备的方法
你需要一个树莓派,和一两个闲置着的移动硬盘。体积较小的2.5硬盘可以由USB接口直接供电,但是我们需要一个带有供电功能的USB分线器,因为树莓派的USB接口提供的电是不足以给移动硬盘供电的。除此之外你也可以用thumbdrive,甚至是一张SD卡。事实上我现在在用的就是一个USB口的移动硬盘和一个thumbdrive搭建的,操作流程都是一样的。
利用树莓派构建一个网络存储设备的方法
只用一个硬盘,也可以搭建分享文件的网络存储器,但是用两个硬盘,就可以设置数据备份,以防有一个硬盘坏掉。

准备硬盘

最初的步骤是在台式机上格式化硬盘。这是为了方便,如果出了问题,我们可以把硬盘从NAS上拔下来,还可以在一台PC上读上面的数据。

可以在树莓派上格式化,但是会花上几个小时,从台式机上格式化会快很多。现在就去做吧。

设置SSH,开启root用户,首先为root用户设置密码:

sudo -i
passwd root
登录后复制

(输入你的密码)

然后在命令行下面运行raspi-config脚本,可以用sudo命令,也可以注销当前用户,然后以root用户的身份登陆。在高级选项菜单中,开启SSH。
利用树莓派构建一个网络存储设备的方法
重启后,你应该可以从联网的另一台机器登陆(如果在windows上,可以使用Putty):

SSH root@[IP地址]
登录后复制

登陆之后,搞清楚插上去的硬盘在/dev下面的编号是什么。下文假设使用两个硬盘,创建数据备份。输入

fdisk -l
登录后复制

会显示出已经挂载的存储设备。你应该看到类似于这样的画面:
利用树莓派构建一个网络存储设备的方法
/dev/mmc是树莓派系统的分区,mmc指的是SD卡。/dev/sda1和/dev/sdb1和SD卡没有关系,这些是你插上去的USB硬盘(本意是SCSI驱动器,但是现在用来指任何SATA口的或其他存储器)

安装ntfs-3g模块,于是我们就能读写NTFS格式的硬盘了。

apt-get install ntfs-3g
登录后复制

然后创建一个目录,以这个目录作为挂载点挂载硬盘。为简单起见,下文用1和2来指代。

mkdir /media/1
mkdir /media/2
mount -t auto /dev/sda1 /media/1
mount -t auto /dev/sdb1 /media/2
mkdir /media/1/shares
mkdir /media/2/shares
登录后复制
Samba

下一步我们来设置Samba。Samba是Windows使用的网络文件共享协议(事实上最新的OSX Mavericks也支持)

apt-get install samba
apt-get install samba-common-bin
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
nano /etc/samba/smb.conf
登录后复制

如果你不熟悉这类配置文件,行首的#表示这一行是注释,于是这一行的配置也就不会生效。要开启一项功能,可以自己添加一行,也可以把某一行前面的注释符号去掉,让它生效。

我们先来启动用户安全;按下CTRL-W然后输入”security”,来找到相关的选项。去掉这一行前面的注释符号:

security = user
登录后复制

然后,移动到文本末尾(或者按住CTRL V直到移动到了末尾),添加网络共享,数目取决于你自己的需求。使用这种格式:

[test] comment = Test share
path = /media/1/shares
valid users = @users
force group = users
create mask = 0660
directory mask = 0771
read only = no
登录后复制

只有第一块硬盘的配置——之后我们将用第二块硬盘和第一块同步,以进行备份。

利用树莓派构建一个网络存储设备的方法

然后用下面的命令重启Samba。

service samba restart
登录后复制

现在给你的树莓派添加一个用户,假设你不想用同一个用户来访问(下文的”jamie”是用户名)

useradd jamie -m -G users
登录后复制

输入下面的命令给新用户设置密码,完成后确认。

passwd jamie
登录后复制

然后我们把这个用户加入到Samba中。你需要两次确认你的密码。

smbpasswd -a jamie
登录后复制

然后就去测试网络存储功能吧,应该可以在其他机器上看到了(Windows或Mac),而且你应该可以往上面写入文件。

利用树莓派构建一个网络存储设备的方法

现在还剩一个问题,你重启树莓派,驱动器的挂载就会失效。为了解决这个问题,我们需要安装autofs。

apt-get install autofs
nano /etc/auto.master
登录后复制

在+auto.master下面加入一行:

/media/ /etc/auto.ext-usb –timeout=10,defaults,user,exec,uid=1000
登录后复制

现在就可以安全重启,不会破坏配置了。

数据备份

如果你安装了两个硬盘,我们现在就可以用一个脚本来同步数据,如果一块硬盘坏了,还有一份备份的。我们用rsync来做备份。

apt-get install rsync
crontab -e
登录后复制

linux下面的crontab是用来自动运行某个任务的一个软件。我曾经在《自动备份你的网站》中简要提到过。加上这一行:

30 5 * * * rsync -av –delete /media/1/shares /media/2/shares/
登录后复制

数字的格式是这样子的:
分钟|小时|一个月中哪一天|月份|一个星期中哪一天

所以我们加进去的那一行,rsync命令会在每天的早晨5点30分运行(*通配符表示“所有”,所以会在“每个月的每一天”运行)

如果你想立刻进行一次备份,只要粘贴这个rsync的命令:

rsync -av –delete /media/1/shares /media/2/shares/
登录后复制

取决于共享文件夹里放的东西,耗费的时间可能只要几秒钟,也可能会长一些,在完成之后会给你一个报告。rsync最棒的地方在于它会记录哪些文件更新了,哪些文件添加近来或是应该被删除。你可以再试一遍那个命令,应该立刻就会完成的,因为rsync知道没有文件发生了变动。

教程到这里就结束了——现在你搭建起了自己的NAS,虽然细节上有待改进,但是现在就可以用起来了。虽然没有市面上出售的NAS那些华丽的特性,但是它也能漂亮地完成任务,而且耗电会少很多。

有问题请在评论区提出,我会尽力帮忙的,但是请确定你在使用最新的树莓派系统镜像。

以上是利用树莓派构建一个网络存储设备的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

web.xml怎么打开 web.xml怎么打开 Apr 03, 2025 am 06:51 AM

要打开 web.xml 文件,可以使用以下方法:使用文本编辑器(如记事本或 TextEdit)使用集成开发环境(如 Eclipse 或 NetBeans)使用命令行编辑命令(Windows:notepad web.xml;Mac/Linux:open -a TextEdit web.xml)

c语言多线程的四种实现方式 c语言多线程的四种实现方式 Apr 03, 2025 pm 03:00 PM

语言多线程可以大大提升程序效率,C 语言中多线程的实现方式主要有四种:创建独立进程:创建多个独立运行的进程,每个进程拥有自己的内存空间。伪多线程:在一个进程中创建多个执行流,这些执行流共享同一内存空间,并交替执行。多线程库:使用pthreads等多线程库创建和管理线程,提供了丰富的线程操作函数。协程:一种轻量级的多线程实现,将任务划分成小的子任务,轮流执行。

Linux最好使用的是什么? Linux最好使用的是什么? Apr 03, 2025 am 12:11 AM

Linux最适合用作服务器管理、嵌入式系统和桌面环境。1)在服务器管理中,Linux用于托管网站、数据库和应用程序,提供稳定性和可靠性。2)在嵌入式系统中,Linux因其灵活性和稳定性被广泛应用于智能家居和汽车电子系统。3)在桌面环境中,Linux提供了丰富的应用和高效的性能。

无法以 root 身份登录 mysql 无法以 root 身份登录 mysql Apr 08, 2025 pm 04:54 PM

无法以 root 身份登录 MySQL 的原因主要在于权限问题、配置文件错误、密码不符、socket 文件问题或防火墙拦截。解决方法包括:检查配置文件中 bind-address 参数是否正确配置。查看 root 用户权限是否被修改或删除,并进行重置。验证密码是否准确无误,包括大小写和特殊字符。检查 socket 文件权限设置和路径。检查防火墙是否阻止了 MySQL 服务器的连接。

使用Go语言连接Oracle数据库时是否需要安装Oracle客户端? 使用Go语言连接Oracle数据库时是否需要安装Oracle客户端? Apr 02, 2025 pm 03:48 PM

使用Go语言连接Oracle数据库时是否需要安装Oracle客户端?在使用Go语言开发时,连接Oracle数据库是一个常见需求�...

libv是两个 libv是两个 Apr 03, 2025 pm 08:03 PM

我开发了一个名为Lua-Libuv的项目,并乐于分享我的经验。项目初衷是探索如何利用Libuv(一个用C语言编写的异步I/O库)构建简单的HTTP服务器,而无需深入掌握C语言。借助ChatGPT的辅助,我完成了HTTP.C的基础代码。在处理持久连接时,我成功实现了在适当的时机关闭连接并释放资源。起初,我尝试创建一个简单的服务器,通过关闭连接来结束主程序,但遇到了一些问题。我尝试过使用流式传输发送数据块,虽然有效,但这会阻塞主线程。最终,我决定放弃这个方法,因为我的目标并非深入学习C语言。最终,我

C语言条件编译:新手入门到实战应用的详尽指南 C语言条件编译:新手入门到实战应用的详尽指南 Apr 04, 2025 am 10:48 AM

C语言条件编译是一种根据编译时条件选择性编译代码块的机制,入门方法有:使用#if和#else指令根据条件选择代码块。常用条件表达式包括STDC、_WIN32和linux。实战案例:根据操作系统打印不同消息。根据系统位数使用不同的数据类型。根据编译器支持不同的头文件。条件编译增强了代码的可移植性和灵活性,使其适应编译器、操作系统和CPU架构变化。

【Rust自学】简介 【Rust自学】简介 Apr 04, 2025 am 08:03 AM

1.0.1前言这个项目(包括代码和注释)是在我自学Rust的过程中记录的。可能有不准确或表述不清的地方,还请大家谅解。如果您从中受益,那就更好了。1.0.2为什么使用RustRust可靠且高效。Rust可以取代C和C,性能相似但安全性更高,并且不需要像C和C那样频繁重新编译来检查错误。主要优点包括:内存安全(防止空指针取消引用、悬空指针和数据争用)。线程安全(确保多线程代码在执行前是安全的)。避免未定义的行为(例如,数组越界、未初始化的变量或访问已释放的内存)。Rust提供现代语言功能(例如泛型

See all articles