将近凌晨,决定写下来,因为相比较之前想象的美好了很多,不复杂,因为那些复杂的方案都被我否定了。
Nextcloud 以及 FileFun
对于 Nextcloud,一个字,慢。不要说去优化 PHP。PHP 的参数加完或许也就刚刚够用,此外其插件应用中心也是比较费心的一件事。
主要的问题是会存在添加外部存储后无法显示目录的问题,文件被其他应用修改后,需要手动执行下面的命令扫描。
sudo -u www-data php occ files:scan --all
此外其与 syncthing 的文件权限问题是非常恶心人的。不想弄太复杂,而且其在线播放能力,其他格式文件的支持都不是那么的尽人意。
在这过程中还将我 ext4的移动硬盘弄出了损坏的 point,我是使用以下命令修正的:
#sda1 移动硬盘分区 fsck.ext4 /dev/sda1
此外还有一些命令可能用得着:
#硬盘信息 blkid /dev/sda1 #磁盘吞吐 iostat -d -x -k 1 10 #磁盘读写情况与进程 iotop
参考:挂载磁盘报错“Structure needs cleaning”
关于 FileFun,可以说更不接地气,首先安装时会出现空白问题,这个空白问题的解决就是,不要使用 docker volume,自己去创建那两个文件夹。
FileFun也是 PHP 而且和 Nextcloud 关系不简单,使用的 Google材料设计风格,总体上看上去没问题,但是大文件的视频,mkv 和 nextcloud 一样,吃力。
文件浏览整体性能上不如 nextcloud,因为 nextcloud 使用了数据库记录,而 FileFun 纯粹每次都要扫。如果真拿来用,半斤八两。
Syncthing
dcoker : https://hub.docker.com/r/linuxserver/syncthing
不得不说,这可能是地球上数一数二的免费的好用的文件同步软件,去中心化的点对点的传输很有意思,听上去这不就是区块链吗?不,这真只是个多终端的文件同步。
在我好几次的实践下,我决定用起来,因为文件校验,它是认真的,我在移动端使用其他软件删除文件后,另一端也能很敏捷的执行相关动作,此外并不会像 nextcloud 那样把一些已经存在的重复覆盖,这是一个专业的文件同步工具,特别是它还提供的版本控制。
这样也就不怕偶尔删错了(模式还有很多种),棒。
yml 文件:
version: "3" services: syncthing: container_name: syncthing image: linuxserver/syncthing # network_mode: "host" restart: unless-stopped privileged: true environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - UMASK_SET=022 ports: - "8384:8384" #后台界面 - "22000:22000" #文件传输 - "21027:21027/udp" #设备发现 volumes: - /home/docker_data/syncthing/config:/config - /home/docker_data/syncthing/data1:/data1 - /home/docker_data/syncthing/data2:/data2 - /mnt/WD:/mnt/WD #你的盘或者文件夹 #创建命令 #docker-compose -p file -f "syncthing.yml" up -d --build
一些基础的就不赘述了。关于设备连接慢的问题,尽量不要使用自动搜索,自己固定链接。最好可以使用路由表或者 DNS 重写去给一个域名(静态 IP)来替代。
好用,只能说,谁用谁知道。
syncthing 的文件权限问题
测试版本:v1.6.1, Linux (AArch64)
登录 syncthing 容器,执行以下命令:
chown -R abc:users /mnt/your_path chmod -R 755 /mnt/your_path
解释下:官方容器创建时指定文件权限755,一般存储权限也是755,syncthing 中文件默认用户为 abc,所在组 users,执行完,应该可解一切同步权限问题。目前我是没问题,也不影响 samba等
Smaba
docker:https://hub.docker.com/r/dperson/samba/
为什么会想到 Smaba 呢,主要是我在 nextcloud 和 filefun 上得到了极差的大文件解析体验,也就是我看3个 g 的 mkv 是毫无办法,而且导致硬盘一直异响,我很怕会坏盘,所以我选择尝试只使用这种简单协议看是否是硬盘本身问题,后来验证,并不是硬盘问题,使用 smaba 协议可以很好的解决。大概、可能是得益于Mac 的时间机器使用的就是 SMB 协议。
yml 文件:
version: '3' services: samba: image: dperson/samba container_name: samba ports: - "139:139" - "445:445" environment: USER: '用户名;密码' SHARE: '磁盘名1;/mount/路径/;yes;no;no;all;none,all,none;' SHARE1: '磁盘名2;/mount/;yes;no;no;用户名;none,用户名,none;' restart: always volumes: - /mnt/WD:/mount/ #docker-compose -p file -f "samba.yml" up -d --build
上面 SHARE 环境变量的解释下,分享了两个文件夹,对应下面volume 的挂载。一个专门给时间机器用来备份,另一个是整个磁盘内容,官方文档:https://github.com/dperson/samba
实测,在 Finde 中直接打开流媒体文件,和硬盘插磁盘上打开文件基本无异。
至于 Nextcloud、Filefun、OMV 这些花花瓶子,对于个人用户来说,没有那个硬件环境,装上也用不出感觉来,不用浪费时间,我觉得对于一个真正的文件服务器来说,文件的访问速度以及可靠性强过一切(我硬盘都已经是 ext4了,还让我坏文件,就有点不合理了)。
关于Mac时间机器的备份
最后我备份单独用这个了:https://hub.docker.com/r/mbentley/timemachine
备份我用的 arm 分支,需要注意的是,不要设置VOLUME_SIZE_LIMIT,请单独分一个区,最新的 macos 貌似不支持他那项模拟技术。
version: "3" services: timemachine: image: mbentley/timemachine:smb-armv7l restart: always container_name: timemachine network_mode: "host" environment: CUSTOM_SMB_CONF: "false" CUSTOM_USER: "false" DEBUG_LEVEL: "1" MIMIC_MODEL: "TimeCapsule8,119" EXTERNAL_CONF: "" HIDE_SHARES: "no" TM_USERNAME: "timemachine" TM_GROUPNAME: "timemachine" TM_UID: "1000" TM_GID: "1000" PASSWORD: "timemachine" SET_PERMISSIONS: "false" SHARE_NAME: "TimeMachine" SMB_PORT: "445" VOLUME_SIZE_LIMIT: "0" WORKGROUP: "WORKGROUP" volumes: - /mnt/BACKUP:/opt/timemachine - timemachine-var-lib-samba:/var/lib/samba - timemachine-var-cache-samba:/var/cache/samba - timemachine-run-samba:/run/samba volumes: timemachine-var-lib-samba: timemachine-var-cache-samba: timemachine-run-samba: #docker-compose -p file -f "samba_time.yml" up -d --build
创建完成后会自动显示在 finder 侧栏,时间机器选中即可,默认密码账号都是 timemachine 其他看文档。从此,每当我连上局域网 时间机器就会开始帮我备份,简直无法再爽了,也不用怕捅坏雷电口了。这里有一份官方的设置信息,或许会有用:在 Mac 上使用时间机器备份至共享文件夹
PS:如果需要和 samba 服务共存,我试过的最好的方式,也就是我现在的方式是:将 timemachine 的容器使用macvlan网络隔离,使其看上去像一台单独的主机,这样445端口便不会冲突。同时路由将这样显示:
以上,只是我的尝试结果,技术、精力都十分有限,试错是一件耗时且无太大意义的事。已很好的满足了我自己的需求。
important!!!因为 WordPress 的区块编辑器无法连同格式粘贴,yml 文件可能存在空格对应问题,有问题请留言。
本站由以下主机服务商提供服务支持:
0条评论