找回密码
 加入我们
搜索
      
查看: 1271|回复: 0

[NAS] DIY 家庭小主机 AIO (7) —— 私人网盘/同步备份中心

[复制链接]
发表于 2024-12-23 21:25 | 显示全部楼层 |阅读模式
长期以来都是小透明和资深潜水党在社区里吸取大佬们的营养和指导, 近日折腾了一下小主机和 aio, 并且将过程整理成教程在社区里发表出来, 不求能够指导别人, 但求别人能有个参考, 并且一起交流学习.

各位说话好听 头发多 精力旺盛 过年涨薪的 佬们 觉得可以的话 就给我点个赞吧.

另外本人热爱分享, 热爱搞机, 馒头 pt 上传100T+,发种100+,做种500+, 做种时间一年(数据准备另开一贴贴出), 希望基于此能得到大佬的厚爱发个邀请:(btschool,聆音, 红叶,emp峨眉派/P0 rNbay都行,), 丰富下自己的下载中心, 再过几周我就可以回来发馒头药了

邮箱: hasdrsafsdeyuo@gmail.com



系列文章目录:

在上一篇文章中,规划了九个值得搭建私服的方向,这几个方向是通过在 v2ex, github awesome self-hosted 浏览众多私服项目后, 个人认为比较实用、有潜力、部署简单的几个方向。下面简单介绍一下需求,分析应用场景,并给出解决方案,当然不会每个都很详尽地去谈,有些简单的只会给出参考链接和个人部署的 docker-compose.yml.
使用 docker 进行容器部署是一种更为通用,跨平台 便于管理的方法, 虽然群辉的套件可能很方便,但是 docker 容器部署即使换到其他 Linux 主机也是同样的部署方法, 同样的备份方案,不受群辉系统专有性的制约。


同步和备份的场景需求分析
毫无疑问, 搭建 NAS 的最初也是最基本的一个需求,就是一个私人网盘, 用于存储、同步、备份和分享个人数据。在百度网盘/Onedrive 之外再有个选择 或者再加多个保险。
同步和备份的数据类别包括 个人数据, 工作数据, 应用数据, 应用配置, 系统备份。数据的软件服务需求包括: 数据热备份, 数据冷备, 数据同步, 数据传输(p2p无中心, 或者有中心服务器)
例如, 我们常常遇到的场景有:

  • 场景1: 工作区数据需要在异地多设备无缝使用. 这就是 个人数据或者工作数据 用到 了 数据同步 的服务
  • 场景2: 手机相册及时备份, 记住珍贵回忆, 个人数据 及时 使用 数据热备份。
  • 场景3: 每周按计划 备份 整个电脑 和 所有数据, 防止出现灾难事件, 这就是 系统级的数据 采用 数据冷备 的方式,。

再仔细分析一下场景1:

工作区存放着在电脑编辑的文档, 此时在手机或者平板上也想查看和编辑,再者换了地方换了设备 (远程办公,换新电脑,异地办公)也希望拥有一个自此而终没有变化的工作区。理想的同步空间应该具有如下功能:(a)实时同步增删改查操作, 那多设备对同一工作区的数据都 包含了 创建文件、删除文件、修改文件、查询文件,我们当然希望在任意一台设备执行了增删改查的操作,能够同步到所有设备中;(b)回收站和历史版本.同时为保证数据的安全性,还需要保证不小心删除了能要回来或者看到好几个历史版本. (c)文件冲突解决方案. 同时在两个设备上修改文件后产生两个冲突的分支文件的冲突解决方案。(d) 无缝融合Windows和提供占位符功能. 同步空间的数据可以选择只保留占位符在 Windows 的文件资源管理器上而不实际占用空间, 这样我们仿佛忘记了这个文件其实存储于云端.

在使用自己的服务前,我们先考虑一下目前市面上有一个产品能比较完美地实现上述功能的。能够做到上述完善同步功能的网盘中,在国内面对个人价格合适的网盘产品仅有百度网盘一家,可以做到具有历史版本的双向增量同步, 国外的是 Onedrive
电信运营商的网盘功能全都有就是不精没啥用,阿里云盘新秀但功能简单所谓的同步功能只是单向增量备份,手机厂商的网盘主要是手机数据的同步备份,坚果云没了解,除此以外的所有网盘115,夸克,迅雷都是主打分享资源和备份,同步功能鸡肋
其他没怎么了解, 应该也有其他, Onedrive 在国内是无法保证服务的,因为个人版的Onedrive数据存储于国外,在国内没有备案的服务会被墙,Onedrive在国内的合作商世纪互联只提供企业版的服务, 也就是300+多人民币一年 1TB的容量;icloud 没了解,这些跟自家产品绑定的一般不考虑

虽然有很多人对百度网盘很不满,就目前而言,没有其他竞品能够平替它。一般而言也没啥问题。现在百度网盘对隐私的保护和内部的合规性已经比以前好多了, 此外在国内任何网盘服务按照法律和规定要求都会扫描审查你的文件做备案, 没有例外。

所以如果信任百度网盘,又懒得折腾,那么此小节就可以就此打住,百度网盘能够满足你的大部分需求。但是如果你热爱动手,又或者真的有需求搭建私人网盘,那可以继续往下。

同步备份解决方案

理论上群辉的 Synology Drive 手机和电脑端可以满足上面的场景1和场景2的需求, 场景3的系统级备份个人感觉需要具体情况具体分析:如果是企业的话可能需要系统级的备份,整个盘的备份,但是对于我而言,整个系统盘备份是很低效的备份方法。在后面我会介绍个人的系统备份是如何做的。接下来继续介绍更常见的计划任务的备份,和融合市面上网盘的同步备份方案,因为自己的 NAS 不一定能够做到像 百度网盘 Onedrive 这样几乎全年每天24小时可用。
融合商业网盘和私人网盘的几个场景和用途:

  • 将群辉上的数据 计划性地备份到 商业网盘中(Cloud Sync):如可以打包加密 又或者 保持原样 地往商业网盘中备份, 增加一个冗余副本。 同理如果使用 商业网盘做主力网盘的话, 也可以实时从商业网盘中将数据拉到群辉做冗余备份。
  • 如果群辉不可用了,可以在商业网盘和个人设备间同步。使用 安卓的 Foldersync 和 PC 的 GoodSync 可以实现该功能,GoodSync 还支持两个文件夹(例如云端和本地文件夹)的比对、找不同、任意方向的按计划同步等。
  • 在上一篇文章所述,可以使用 Clouddrive2/Alist 挂载后提供 webdav 服务再利用第三方软件进行同步和备份。Clouddrive2会员版也能够实时将数据备份到 网盘中, 以此满足场景2 的需求。

最后来说说系统级的备份

整盘备份可能在某些场景比较有用,例如需要频繁重复部署的场景或者一些企业场景或者一些特殊场景。对于个人而言可能比较低效而且复杂。

个人电脑的备份(群辉可以使用 active backup for business 进行整盘备份):
  • 使用微软账户备份系统的偏好设置等。
  • 工作区的数据使用 百度网盘/SynologyDrive/OneDrive 实时同步。
  • 使用同第二点一样的工具可以按计划备份文件夹(包含各类数据了)
  • 应用数据的话除了应用账户云同步(如 chrome, edge浏览器)以外,依赖于自己手动备份, 如微信聊天记录。
  • 应用配置。对于一些设置较为复杂的应用如 **, vscode 则自己写脚本或者导出配置文件到云端的文件夹即可。
  • 自己编写一个初始化 Windows 的脚本。该脚本主要使用 winget 通过无人值守的方式安装所有设定好的应用,同时将应用配置从云端拉取后覆盖到应用配置的位置(一般是 C:\Users\user\Appdata\Roaming)的位置,这样就能够自动化完成 Windows 系统的初始化。

手机的备份:

  • 利用手机厂商的自带服务队整机备份(一般不备份应用数据),备份后将文件夹上传至云端 或者 移动硬盘
  • 手机应用数据,如微信,定时手工备份。
  • 一些应用的云同步。
  • 相册,文档 和一些文件夹 通过 FolderSync/ES文件浏览器/百度网盘/SynlogyDrive/Clouddrive2 进行实时备份。

PVE 系统的备份
  • 使用自带的 WebUI 将系统备份出两个副本,一个副本放到群辉, 一个副本通过群辉的 USB Copy 备份到移动硬盘,这样防止系统全崩了,群辉也用不了的情况下还能通过移动硬盘中的系统备份去恢复。
其他系统如 Openwrt, Linux, Docker 需要自己编写脚本备份。


简述具体操作

讲了这么多,我已经迫不及待地去给我的 nas 胡吃海塞了,好好填充一下那 nas 的丞相肚,快点告诉我具体操作吧。
在基于一个现成的群辉系统(无论是 PVE 虚拟机需要sata直通或者通过 pve 建立vg分配给群辉,还是物理机直接一插),我们给他装上 10 年前的笔记本拆卸下来的硬盘让他换发第二春,至少当个临时盘或者 PT 盘,随便蹂躏。
首先数据安全至上,插上硬盘后,通过命令行对硬盘进行长自检,检查健康度。lsblk 列出硬盘,smartctl -t long /dev/sda 对 /dev/sda 设备长自检,smartctl -a /dev/sda 则是查看自检进度和自检结果


  1. $ lsblk # 列出的硬盘设备,一般为 /dev/sda, /dev/sdb

  2. sdb                             8:16   0   2.7T  0 disk
  3. ├─vg_hhd-thinpool_tmeta       252:13   0   700M  0 lvm
  4. │ └─vg_hhd-thinpool-tpool     252:15   0   5.5T  0 lvm
  5. │   ├─vg_hhd-thinpool         252:16   0   5.5T  1 lvm
  6. │   ├─vg_hhd-vm--106--disk--0 252:17   0   5.2T  0 lvm
  7. │   └─vg_hhd-vm--100--disk--0 252:18   0   100G  0 lvm
  8. └─vg_hhd-thinpool_tdata       252:14   0   5.5T  0 lvm
  9.   └─vg_hhd-thinpool-tpool     252:15   0   5.5T  0 lvm
  10.     ├─vg_hhd-thinpool         252:16   0   5.5T  1 lvm
  11.     ├─vg_hhd-vm--106--disk--0 252:17   0   5.2T  0 lvm
  12.     └─vg_hhd-vm--100--disk--0 252:18   0   100G  0 lvm
  13. sdc                             8:32   0   2.7T  0 disk
  14. └─vg_hhd-thinpool_tdata       252:14   0   5.5T  0 lvm
  15.   └─vg_hhd-thinpool-tpool     252:15   0   5.5T  0 lvm
  16.     ├─vg_hhd-thinpool         252:16   0   5.5T  1 lvm
  17.     ├─vg_hhd-vm--106--disk--0 252:17   0   5.2T  0 lvm
  18.     └─vg_hhd-vm--100--disk--0 252:18   0   100G  0 lvm

  19. $  smartctl -t long /dev/sdb # 对 /dev/sdb 设备进行长自检
  20. $  smartctl -t long /dev/sdc # 对 /dev/sdb 设备进行长自检
复制代码


自检完成后,通过 smartctl -a /dev/sda 查看自检结果, 结果可以让 ** 帮忙解读,主要关注 几个方面,自检是否通过、坏扇区数目、通电时长、错误类型和错误数量。我本科用了四年的笔记本硬盘是:通过测试,使用10673小时,有807个错误,重新分配了8个扇区。当个临时盘或者PT盘也算是变废为宝了。

  1. === START OF READ SMART DATA SECTION ===
  2. SMART overall-health self-assessment test result: PASSED

  3. SMART Attributes Data Structure revision number: 10
  4. Vendor Specific SMART Attributes with Thresholds:
  5. ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  6. 5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       8
  7. 9 Power_On_Hours          0x0032   088   088   000    Old_age   Always       -       10673

  8. SMART Error Log Version: 1
  9. ATA Error Count: 807 (device log contains only the most recent five errors)
  10.         CR = Command Register [HEX]
  11.         FR = Features Register [HEX]
  12.         SC = Sector Count Register [HEX]
  13.         SN = Sector Number Register [HEX]
  14.         CL = Cylinder Low Register [HEX]
  15.         CH = Cylinder High Register [HEX]
  16.         DH = Device/Head Register [HEX]
  17.         DC = Device Command Register [HEX]
  18.         ER = Error register [HEX]
  19.         ST = Status register [HEX]
  20. Powered_Up_Time is measured from power on, and printed as
  21. DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
  22. SS=sec, and sss=millisec. It "wraps" after 49.710 days.
复制代码


自检结束,在群辉建立存储池和存储空间,再建立一个共享文件夹,并且授予相关用户权限,开启 samba 共享文件服务, 此时即可手动地去“胡吃海塞”。
此外利用群辉自带的几个应用即可给我们的数据一份保障:

  • Synology Drive. 具有跟 Onedrive 一样的功能,同时还能备份文件夹,跨平台。
  • Usb copy: 可以创建计划将数据备份到 USB外置设备中。个人觉得将 之类用途有几个:存储 PVE 虚拟机系统备份,存储一些需要快速访问的数据。对于 VM 系统备份,即使群辉崩了,pve 崩了,我们也可以重装 pve 并且直接从 USB 拷走 VM 备份去进行快速恢复。
  • Cloud sync: 提供 公有云(百度网盘,对象存储等等)和本地数据的双向备份。
  • Active backkup for busines: 备份系统。
  • Hyper backup: 备份群辉系统、套件、数据。
这些使用起来也极为简单,根据界面提示或者官方文档即可。所以在此说说接入第三方应用扩展群辉存储功能。


融合网盘

使 Clouddrive2 融合网盘。对外提供 webdav 对内挂在成本地文件夹,提供 emby ** 等应用直接读取网盘的内容。同时支持网盘间的文件传输等丰富功能。

在使用 docker 部署Clouddrive2之前, 如果我们要将网盘挂载成本地文件夹的话, 并且能够重启开机后依然能够生效, 需要一些额外的操作. 为什么选用 docker 部署,原因有2(重启后,能够继续挂载到本地文件夹中;docker容易统一管理)




  1. sudo mount --bind /volume1/CloudNAS  /volume1/CloudNAS
  2. sudo mount --make-shared  /volume1/CloudNAS/
复制代码



在正式编写 docker-compose.yml 启动容器前, 先建立一个文件夹 /volume1/docker 存储 docker 容器的 docker-compose.yml 文件和 容器的数据,便于后期统一管理和备份。
对于 Clouddrive2, 就是 创建在 docker 目录下的 clouddrive2 文件夹,和 config 子文件夹存放配置数据
  1. mkdir /volume1/docker
  2. mkdir -p /volume1/docker/clouddrive2/config
复制代码


接着参考官方文档编写如下 docker-compose.yml ,执行命令 docker-compose up -d 启动 或者 docker-compose down 停止并移除容器。

  1. version: "2.1"
  2. services:
  3.   cloudnas:
  4.     image: cloudnas/clouddrive2
  5.     container_name: clouddrive2
  6.     environment:
  7.       - TZ=Asia/Shanghai
  8.       - CLOUDDRIVE_HOME=/Config
  9.     volumes:
  10.       - <path to accept cloud mounts>:/CloudNAS:shared
  11.       - <path to app data>:/Config
  12.       - <other local shared path>:/media:shared #optional media path of host
  13.     devices:
  14.       - /dev/fuse:/dev/fuse
  15.     restart: unless-stopped
  16.     pid: "host"
  17.     privileged: true
  18.     network_mode: "host"
复制代码



注意以下的 docker-compose.yml 绑定的卷中 <other local shared path> 可以是群辉的其他共享文件夹,然后再到 Clouddrive2(http://IP:19798)的页面中添加这些文件夹,就能将群辉的文件通过 Cd2 的 webdav 共享出去。 例如我的做法是,首先登录到 Clouddrive2 容器中, 创建一个 /nas 目录,接着将群辉上想通过 webdav 共享出来的文件夹绑定到 Clouddrive2 容器中 /nas 目录下 的不同子目录, 最后在 Clouddrive2 webui 界面上添加本地文件夹 /nas 即可。 Clouddrive2/Alist 提供的 webdav 都可以用于 群辉 Cloud sync 的同步备份。




Clouddrive2 docker 容器卷绑定


Clouddrive2 添加群辉本地文件夹并共享出去



此时可以通过 webdav 或者网页的形式查看共享出去的 群辉本地文件夹对外提供共享文件服务作为其他应用的存储层
  • 群晖控制面板的共享文件夹和文件服务中设置, 教程可参考群晖官方教程. 一般而言 NFS 用于 Linux 挂载, SAMBA 用于 Windows 和 手机访问. 感兴趣可以参考这篇文章看看不同文件服务的横向对比
  • Webdav 共享: webdav 主要是集成到第三方的应用 作为存储层, 例如 nplayer, kodi, obsidian. webdav 既可以使用群晖自身的 webdav 服务器, 也可以使用上面提到的 Clouddrive2/Alist.

cd2 和 Alist 的对比

优点缺点
clouddrive2- 提供webdav
- 可以通过 fuse3 挂载成本地文件 使得网易云 emby 可以直接利用;
- 可以加密;
- 可以计划备份;
- 可以跨网盘复制和秒传;
- 可以部署在多个终端, 包括手机
- 其他参考官网
上传不能覆盖已有的同名文件, 意味着使用他提供的 webdav 不能用来同步个人频繁修改的数据.
alist- 提供webdav
- 可以跨网盘复制和秒传;
- 可以部署在多个终端, 包括手机
- 小而美, 使用简单, 专注地把一件事情做好, 剩下的集成到其他应用.
小而美 专注的优点也是缺点
特别是跟国内全家桶的超级app 如 微信OS,BAT 等应用不太相符.

到这里,我们的同步和备份中心已经搭建完毕,也具有了对提供文件服务作为三方应用存储层的能力。
安得广厦千万间 大庇天下xjj俱欢颜








您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-4-26 23:46 , Processed in 0.011405 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表