我用手机拍了很多照片,平时都保存在一台 Windows 台式机上,这台机器硬盘空间大,主要干两个事情,一个是我打游戏,一个就是存放多媒体数据(主要是照片,也有很多文档)。有时候我需要它提供照片服务,以方便家人使用各种媒体终端(手机、电视盒子等)阅览,有时候则需要往上面拷贝数据以作备份只用,于是我使用 Plex 折腾了一下,但是由于台式机噪音等等的关系,不适合长期开机,因此当时那个方案还是残缺的。
现在打算彻底解决这个问题。大致总结一下,以下是我的主要的几个需求:
- 照片服务要能够长期保持在线,私用可以方便地查看照片。开机不能有明显的噪音和功耗问题。
- 我的照片经常是在 Windows 下进行处理的,因此需要很方便地同步到照片服务器。
- 我办公和文档处理都是在 Mac 上进行的,因此需要很方便地同步文档到服务器。
- 私用,不愿意上传公有云。
最近树莓派比较火,因此我花了几十刀买了个第四代,想用它来满足上面的需求。
配置树莓派
安装树莓派
这一步没有什么特别的,从 4 代开始,风扇显得更为重要,但是接针脚的时候,选择 1-6,而不是 4-6,因为 1 号针脚是 3V3,电压低一些,散热能力是弱一些,但风扇噪音也小一些,适合长期开机。考虑到我们的实际需求,这个够用了。

配置 SSH
打开 SSH:
1 | sudo raspi-config |
在 Interfacing Options 选项中打开 SSH。
但这样还不够,需要修改 /etc/ssh/sshd_config 添加:
1 | IPQoS cs0 cs0 |
之后重启一下 ssh 服务:
1 | sudo service ssh restart |
还可以按照我在这篇文章中介绍的办法配置密钥访问,不过是局域网内私用,必要性不那么强。
关闭自动休眠
既然用作服务器,肯定不能自动休眠。
1 2 | sudo apt-get install vim sudo vim /etc/lightdm/lightdm.conf |
添加如下:
1 | xserver-command=X -s 0 -dpms |
重启:
1 | sudo reboot |
设置静态 IP
静态 IP 可以在树莓派上面配置,不过一旦配错了就没法 ssh 进去改正了;也可以在路由器上面配置,我是在路由器上配置的,操作起来比较方便。我用的路由器是 NETGEAR 的,静态 IP 的配置在 ADVANCED > Setup > LAN Setup 下面。
安装 Plex
这一篇 PiMyLifeUp 上的教程很不错,我基本是照着做的。准备工作:
1 2 3 4 | sudo apt-get install apt-transport-https curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add - echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list sudo apt-get update |
安装 Plex:
1 | sudo apt-get install plexmediaserver |
配置额外的存储
自带的 Mini-SD 卡容量太小了,我又买了一张大的,配合 USB 读卡器插上。我一开始使用了卡的默认格式 exFAT,结果同步工具支持得不好,因此没办法,我把它格式化成 Ext4:
1 | sudo mkfs.ext4 /dev/sda1 |
在/media 下面建立了 backup 目录,之后就可以 mount 了:
1 | sudo mount -t ext4 /dev/sda1 /media/backup |
虽然搞定了,但是机器一重启,又要重新 mount。因此需要配置为自动 mount,修改/etc/fstab:
1 | /dev/sda1 /media/backup ext4 defaults,noatime 0 0 |
其中的 noatime 是为了不更新最近访问时间,提高性能。在建立文件夹以后,所属用户和群组全部设置成和同步用 ssh 登录的用户一致,避免一些可能的权限的问题:
1 | sudo chown pi:pi -R /media/backup/... |
配置 Windows
配置 Windows 的主要目的是方便地同步照片到树莓派服务器。
配置同步工具
Windows 机是我的一部分媒体文件的数据源,因此需要经常从 Windows 机同步数据到树莓派服务器。
一种方法是使用 Cygwin + rsync:
安装 Cygwin,这是一个可以在 Windows 下使用常见 Linux 命令的工具。基本上,默认选项即可,但是 rsync 一定要安装:

安装完成以后,Windows 下的磁盘全部被列在/cygdrive 下面。
但是我研究到一半的时候,发现了一个更好用的工具——Acrosync:

第一次可以压缩并使用 scp 来传输文件,因为这样效率会更高,但以后就要通过上面的工具来同步了。
值得一提的是,如果空间不够,可以使用 du 这样的命令来查看罪魁祸首,不过我使用的参数因为 Linux 版本的关系,和我以往熟悉的比起来有点不同:
1 | sudo du -s * | sort -nr | head |

如果是使用用户名密码就能 ssh 登录的情况,Windows 自己就能搞定,资源管理器地址栏输入:
\\sshfs\username@host
能访问以后,右键可以把指定路径映射成为一个本地磁盘:

多说一句,其实 Windows 把远程资源挂载为本地磁盘的功能挺强大的,除了 ssh,其它常见的,比如 Samba (SMB) 资源也可以。
如果 ssh 需要使用 public key 文件的,替代方案可以考虑 win-sshfs + Dokan 的组合,但是这个方案需要使用如上链接的特定版本才能配套工作:

它可以把 ssh 资源挂载为一个本地磁盘,之后就可以使用 FreeFileSync 了。
相较而言,这个方案同步的速度要比 Acrosync 慢一些。
[Updated 1/13/2024] 在处理类似 ssh 同步问题的时候,发现上面的工具 win-sshfs + Dokan 组合也不好用了,遂找到了一个很方便的替代品 SFTP Drive 2022:
配置 Mac
配置 Mac 的主要目的是方便地同步文档到树莓派服务器。
配置同步工具
Mac 下面同步工具用 rsync 就可以,不需要什么额外的工具。不过,Mac 自带的 rsync 对中文的显示有点问题,因此需要使用 brew 安装一下 rsync。
1 | brew install rsync |
修改 ~/.zshrc,添加:
1 | alias sync -to-raspberry= "rsync -ar -e 'ssh -o PubkeyAuthentication=no' --exclude '.DS_Store' --delete --force --progress ~/Desktop/doc pi@raspberry:~/Documents/doc/" |
注意第一个 doc 路径后面的斜杠 “/” 不能省略,否则会把服务端的整个 xxx 文件拷贝到 Mac 的 doc 目录里面。另外,里面的主机名 raspberry,是因为我修改了/etc/hosts 文件。
大功告成
在树莓派机器上安装 Plex 完毕后,在 Windows 下运行 Acrosync,或者是在 Mac 下执行 sync-to-raspberry 就可以完成同步了,而在浏览器中访问 http://192.168.0.28:32400/web 就能看到 Plex 界面了。
之后,在各种终端上安装 Plex 应用,就可以很舒服地浏览照片了。

问题遭遇和解决
SD 卡格式损坏
[更新于 2020/8/14] 今天忽然发现 ssh 不上去,于是接上显示器,发现启动失败,显示了下面的提示:1 2 3 4 5 6 | You are in emergency mode. After logging in, type "journalctl -xb" to view system logs, "systemctl reboot" to reboot, "systemctl default" or ^D to try again to boot into default mode. Cannot open access to console, the root account is locked. See sulogin(8) man page for more details. Press enter to continue. |
不过,如果按照提示点击回车,上面的提示会继续来一遍。所以,“continue” 是没用的。
研究了一下,把系统 sd 卡取了出来,然后装到我的 mac 上,编辑里面的 cmdline.txt,在该行(是同一行,不是新一行)的最后增加一句:
1 | init=/bin/sh |
这样,在重启以后,就可以自动以 root 身份进入命令行了。
接着检查/etc/fstab,显示的几个挂载的存储,发现那张新 sd 卡没有正常挂载(目录进不去)。尝试重新挂载:
1 | mount -o remount,rw /dev/sda1 /media/backup |
失败。执行:
1 | mount -a |
发现一些错误,于是干脆编辑 fstab,注释掉该行。接着执行:
1 | exec /sbin/init |
终于可以进入系统了。执行:
1 | sudo fsck.ext4 -y /dev/sda1 |
修复了错误,再重新恢复挂载的 fstab 配置,并还原/boot/cmdline.txt。搞定。
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》
emmmm
大佬你好,请问这是什么主题,可以下载吗?
我是直接上了一台群晖,感觉很不错