3 Commits 431e79523f ... 01230eddab

Author SHA1 Message Date
  secext2022 01230eddab 添加(49): 光盘 RAID: 允许丢失损坏的备份数据 3 months ago
  secext2022 01d8f69b07 添加(48): 光盘文件系统 (iso9660) 格式解析 3 months ago
  secext2022 e9ff0973b0 添加(47): 光盘防水嘛 ? DVD+R 刻录光盘泡水实验 3 months ago

+ 2 - 2
发布/20240709-42-基于sftp的NAS局域网存储服务器/README.md

@@ -10,7 +10,7 @@
 
 ## 图文版
 
-[已发布](./a.md): (4)
+[已发布](./a.md): (5)
 
 + <https://zhuanlan.zhihu.com/p/707764087>
 
@@ -26,4 +26,4 @@
 
 ----
 
-TODO
++ <https://www.bilibili.com/read/cv36212660/>

+ 1 - 1
发布/20240714-43-常见存储设备简单总结/README.md

@@ -26,4 +26,4 @@
 
 + <https://blog.csdn.net/secext2022/article/details/140558183>
 
-TODO
+b 站 发布失败: 2024-07-21

+ 3 - 1
发布/20240719-45-胖喵贪吃_备份数据文件的小工具/README.md

@@ -10,7 +10,7 @@
 
 ## 图文版
 
-[已发布](./a.md): (3)
+[已发布](./a.md): (4)
 
 + <https://juejin.cn/post/7392898553234554914>
 
@@ -24,4 +24,6 @@
 
 ----
 
++ <https://mp.weixin.qq.com/s?__biz=MzkyMDU4ODYwMQ==&mid=2247484145&idx=1&sn=98c13b655af3ad776a54c8d7f847aecd&chksm=c191daa7f6e653b15ff763d7144273b2aa48474c3b03afced62cf5e9e9961b8a43c5655da58e&token=1797750552&lang=zh_CN#rd>
+
 TODO

+ 2 - 4
发布/20240719-46-如何了解计算机的底层工作原理/README.md

@@ -10,16 +10,14 @@
 
 ## 图文版
 
-[已发布](./a.md): (1)
+[已发布](./a.md): (2)
 
 + <https://www.zhihu.com/question/661645906/answer/3566556594>
 
-TODO
-
 ----
 
 首发日期 `2024-07-19`, 以下为原文内容:
 
 ----
 
-TODO
++ <https://blog.csdn.net/secext2022/article/details/140583783>

草稿/PLab/N_光盘泡水实验/.gitignore → 发布/20240720-47-光盘泡水实验/.gitignore


+ 57 - 0
发布/20240720-47-光盘泡水实验/README.md

@@ -0,0 +1,57 @@
+# 20240720-47
+
+标题:
+**光盘防水嘛 ? DVD+R 刻录光盘泡水实验**
+
+索引: `穷人实验室`
+
+关键词: 光盘, 泡水, DVD, 实验, 防水, GNU/Linux
+
+
+## 图文版
+
+[已发布](./a.md): (4)
+
++ <https://zhuanlan.zhihu.com/p/709978759>
+
++ <https://juejin.cn/post/7393313322235904052>
+
+----
+
+首发日期 `2024-07-20`, 以下为原文内容:
+
+----
+
++ <https://mp.weixin.qq.com/s?__biz=MzkyMDU4ODYwMQ==&mid=2247484154&idx=1&sn=ea4785c7726a6da44470783a66dd79ae&chksm=c191daacf6e653baa7efc09537cd796bcb37c4d084cf6f4375c20e10ca12131dedfb425a1d52&token=1797750552&lang=zh_CN#rd>
+
++ <https://blog.csdn.net/secext2022/article/details/140583910>
+
+TODO
+
+
+## 更新
+
++ `2024-07-26` (泡水 7 天后) 测试正常 (读取速度正常, 数据完好).
+
+  泡水时间: `2024-07-18`
+
+  测试记录:
+
+  ```sh
+  > dd if=/dev/sr0 of=/dev/null status=progress
+  1161150976 字节 (1.2 GB, 1.1 GiB) 已复制,113 s,10.3 MB/s 
+  输入了 2291776+0 块记录
+  输出了 2291776+0 块记录
+  1173389312 字节 (1.2 GB, 1.1 GiB) 已复制,113.951 s,10.3 MB/s
+  > sha256sum /dev/sr0
+  398dceea2d04767fbb8b61a9e824f2c8f5eacf62b2cb5006fd63321d978d48bc  /dev/sr0
+  > dd if=/dev/sr0 of=/dev/null status=progress
+  1169539584 字节 (1.2 GB, 1.1 GiB) 已复制,117 s,10.0 MB/s
+  输入了 2291776+0 块记录
+  输出了 2291776+0 块记录
+  1173389312 字节 (1.2 GB, 1.1 GiB) 已复制,117.335 s,10.0 MB/s
+  > sha256sum /dev/sr0
+  398dceea2d04767fbb8b61a9e824f2c8f5eacf62b2cb5006fd63321d978d48bc  /dev/sr0
+  ```
+
+TODO

+ 432 - 0
发布/20240720-47-光盘泡水实验/a.md

@@ -0,0 +1,432 @@
+# 光盘防水嘛 ? DVD+R 刻录光盘泡水实验
+
+同志们好, 欢迎来到 胖喵穷人实验室 !
+这里专注于 **低成本**, **低难度**, **低风险** 的 "三低" 小实验.
+
+```
+胖喵穷人实验室 (PM-PLab-E)
+
+正式名称: 紫腹巨蚊 (Toxorhynchites gravelyi) 系列
+  穷人 (Poor people) 实验室
+```
+
+**风险警告: 低风险并不是零风险, 无风险. 本文中的做法可能造成光盘以及光盘驱动器 (刻录机) 的损坏 !**
+
+**免责声明: 本文并不保证内容的正确, 有效, 安全. 如果模仿文中的做法, 后果自负 !!**
+
+
+## 目录
+
++ 1 实验方案设计
+
++ 2 实验过程
+
+  - 2.1 刻录数据
+  - 2.2 验证刻录的光盘
+  - 2.3 泡水
+  - 2.4 捞出光盘擦干水
+  - 2.5 读取光盘
+
++ 3 结果及局限性分析
+
+  - 3.1 光盘数量较少, 实验精度较低
+  - 3.2 仅适用于 DVD+R 刻录光盘
+  - 3.3 仅适用于常温清水
+  - 3.4 仅适用于短期浸泡
+  - 3.5 不知道泡水对光盘的长期影响
+
++ 4 总结与展望
+
+
+## 1 实验方案设计
+
+实验材料清单:
+
+| 序号 | 名称 | 数量 | 备注 |
+| :--: | :--- | ---: | :--- |
+| 1 | DVD+R 空白 (普通) 刻录光盘 | 4 | 容量 4.7GB (单层), 品牌为 清华紫光 UNIS |
+| 2 | DVD 光驱 | 1 | 品牌为 先锋 (2013 年生产) |
+| 3 | PC (台式机) | 1 | 用于操作光盘刻录及读取 |
+| 4 | 记号笔 | 1 | 用于在光盘印刷面写字 |
+| 5 | 光盘袋 | 3 | 用于装光盘 |
+| 6 | 塑料盆 | 1 | 用于装清水 |
+| 7 | 卫生纸 | (少许) | 用于泡水后, 吸干光盘表面的水 |
+| 8 | 清水 | (少量) | 普通自来水, 用于泡光盘 |
+
+一共 4 张 DVD+R 空白光盘, 分成 2 组:
+
++ 对照组 (2 张): 普通存放.
+
++ 实验组 (2 张): 进行泡水测试.
+
+4 张光盘全部刻录相同的数据, 然后实验组泡水一段时间.
+然后把光盘捞出, 擦干表面水分.
+等待 24 小时之后 (充分干燥), 使用光驱读取光盘.
+
+----
+
+泡水除了可能损坏光盘本身, 还有可能损坏读取泡过水的光盘的光驱.
+蓝光刻录机还是有点小贵的 (请看窝的网名),
+所以使用 DVD 光盘和 DVD 光驱进行测试.
+目前二手的 DVD 刻录机, 淘宝大约 20 元就能买到, DVD 光盘也只要几元,
+比较便宜.
+
+**千年光盘** (M-Disc) 已经有了 "千层面实验" (光盘和面条一起蒸熟),
+所以这里使用的是 **普通光盘** (不是 **档案级光盘**, 也不是千年光盘),
+也就是基本上最便宜的那一种.
+考虑到普通光盘可能比较脆弱, 这里没有使用水煮, 而是使用常温清水浸泡.
+
+这里使用的 DVD+R 光盘是多年前买的, 具体什么时间买的, 已经忘记了.
+大约是 6 年前, 或者更早, 总之是已经吃灰多年的空白刻录光盘了.
+
+刻录光盘从结构上来说, 只是一张塑料片, 里面封装了一层化学染料.
+理论上来说, 应该是不怕水的.
+下面就来实际验证一下.
+
+
+## 2 实验过程
+
+环境参数:
+
+| 序号 | 名称 | 数值 | 备注 |
+| :--: | :--- | ---: | :--- |
+| 1 | 室内温度 | 30 °C |  |
+| 2 | 相对湿度 | 70% |  |
+| 3 | 大气压强 | 99 kPa |  |
+
+注: 这里没有对环境条件的精确测量或控制设备, 所以此处的数据仅供参考,
+实际波动较大.
+
+### 2.1 刻录数据
+
+使用的软件版本如下 (操作系统 ArchLinux):
+
+```sh
+> uname -a
+Linux a2 6.9.9-zen1-1-zen #1 ZEN SMP PREEMPT_DYNAMIC Fri, 12 Jul 2024 00:06:19 +0000 x86_64 GNU/Linux
+> cdrskin --version
+cdrskin 1.5.6 : limited cdrecord compatibility wrapper for libburn
+Cdrecord 2.01a27 Emulation. Copyright (C) 2006-2023, see libburnia-project.org
+System adapter    :  internal GNU/Linux SG_IO adapter sg-linux
+libburn interface :  1.5.6
+libburn in use    :  1.5.6
+cdrskin version   :  1.5.6
+Version timestamp :  2023.06.07.143001
+Build timestamp   :  -none-given-
+```
+
+为了尽量接近实际使用情况, 此处刻录的数据是 ArchLinux 安装光盘镜像.
+如果系统崩溃, 可以从安装光盘启动, 进行一些修复操作.
+
+下载地址: <https://archlinux.org/download/>
+
+```sh
+> cdrskin dev=/dev/sr1 -v -minfo
+cdrskin 1.5.6 : limited cdrecord compatibility wrapper for libburn
+cdrskin: verbosity level : 1
+cdrskin: NOTE : greying out all drives besides given dev='/dev/sr1'
+cdrskin: scanning for devices ...
+cdrskin: ... scanning for devices done
+cdrskin: pseudo-atip on drive 0
+cdrskin: status 1 burn_disc_blank "The drive holds a blank disc"
+scsidev: '/dev/sr1'
+Device type    : Removable CD-ROM
+Vendor_info    : 'PIONEER'
+Identifikation : 'BD-RW BDR-207D'
+Revision       : '1.21'
+Drive id       : 'LGDL050745WL'
+Driver flags   : BURNFREE
+Supported modes: TAO SAO
+cdrskin: burn_drive_get_write_speed = 22160  (16.0x)
+Current: DVD+R
+Profile: 0x0043 (BD-RE)
+Profile: 0x0042 (BD-R random recording)
+Profile: 0x0041 (BD-R sequential recording)
+Profile: 0x0040 (BD-ROM)
+Profile: 0x002B (DVD+R/DL)
+Profile: 0x001A (DVD+RW)
+Profile: 0x001B (DVD+R) (current)
+Profile: 0x0016 (DVD-R/DL layer jump recording)
+Profile: 0x0015 (DVD-R/DL sequential recording)
+Profile: 0x0013 (DVD-RW restricted overwrite)
+Profile: 0x0014 (DVD-RW sequential recording)
+Profile: 0x0011 (DVD-R sequential recording)
+Profile: 0x0002 (Removable disk)
+Profile: 0x0010 (DVD-ROM)
+Profile: 0x000A (CD-RW)
+Profile: 0x0009 (CD-R)
+Profile: 0x0008 (CD-ROM)
+book type:     DVD+R (emulated booktype)
+Product Id:    AML/003/48
+Producer:      UML
+Manufacturer:    'AML'
+Media type:      '003'
+
+Mounted media class:      DVD
+Mounted media type:       DVD+R
+Disk Is not erasable
+disk status:              empty
+session status:           empty
+first track:              1
+number of sessions:       1
+first track in last sess: 1
+last track in last sess:  1
+Disk Is not unrestricted
+Disk type: DVD, HD-DVD or BD
+
+Track  Sess Type   Start Addr End Addr   Size
+==============================================
+    1     1 Blank  0          2295103    2295104   
+
+Next writable address:              0         
+Remaining writable size:            2295104   
+```
+
+空白 DVD+R 光盘看起来是这样的. 然后进行刻录:
+
+```sh
+> cdrskin dev=/dev/sr1 -v archlinux-2024.07.01-x86_64.iso 
+cdrskin 1.5.6 : limited cdrecord compatibility wrapper for libburn
+cdrskin: verbosity level : 1
+cdrskin: NOTE : greying out all drives besides given dev='/dev/sr1'
+cdrskin: scanning for devices ...
+cdrskin: ... scanning for devices done
+cdrskin: beginning to burn disc
+cdrskin: status 1 burn_disc_blank "The drive holds a blank disc"
+Current: DVD+R
+Track 01: data  1119 MB        
+Total size:     1119 MB (127:21.25) = 572944 sectors
+Lout start:     1119 MB (127:23/25) = 573094 sectors
+Starting to write CD/DVD at speed MAX in real SAO mode for single session.
+Last chance to quit, starting real write in   0 seconds. Operation starts.
+Waiting for reader process to fill input buffer ... input buffer ready.
+Starting new track at sector: 0
+Track 01: 1119 of 1119 MB written (fifo 100%) [buf  85%]   9.1x.              
+Fixating...
+
+cdrskin: working post-track (burning since 159 seconds)        
+Track 01: Total bytes read/written: 1173389312/1173389312 (572944 sectors).
+Writing  time:  159.613s
+Cdrskin: fifo had 572944 puts and 572944 gets.
+Cdrskin: fifo was 0 times empty and 25021 times full, min fill was 99%.
+Min drive buffer fill was 82%
+cdrskin: burning done
+```
+
+刻录之后的光盘看起来是这样的:
+
+```sh
+> cdrskin dev=/dev/sr0 -v -minfo
+cdrskin 1.5.6 : limited cdrecord compatibility wrapper for libburn
+cdrskin: verbosity level : 1
+cdrskin: NOTE : greying out all drives besides given dev='/dev/sr0'
+cdrskin: scanning for devices ...
+cdrskin: ... scanning for devices done
+cdrskin: pseudo-atip on drive 0
+cdrskin: status 4 burn_disc_full "There is a disc with data on it in the drive"
+scsidev: '/dev/sr0'
+Device type    : Removable CD-ROM
+Vendor_info    : 'PIONEER'
+Identifikation : 'DVD-RW DVR-221L'
+Revision       : '1.00'
+Drive id       : 'MDQC181365CN        '
+Driver flags   : BURNFREE
+Supported modes: TAO SAO
+cdrskin: burn_drive_get_write_speed = 27700  (20.0x)
+Current: DVD+R
+Profile: 0x0015 (DVD-R/DL sequential recording)
+Profile: 0x0016 (DVD-R/DL layer jump recording)
+Profile: 0x002B (DVD+R/DL)
+Profile: 0x001B (DVD+R) (current)
+Profile: 0x001A (DVD+RW)
+Profile: 0x0014 (DVD-RW sequential recording)
+Profile: 0x0013 (DVD-RW restricted overwrite)
+Profile: 0x0012 (DVD-RAM)
+Profile: 0x0011 (DVD-R sequential recording)
+Profile: 0x0010 (DVD-ROM)
+Profile: 0x000A (CD-RW)
+Profile: 0x0009 (CD-R)
+Profile: 0x0008 (CD-ROM)
+Profile: 0x0002 (Removable disk)
+book type:     DVD+R (emulated booktype)
+Product Id:    AML/003/48
+Producer:      UML
+Manufacturer:    'AML'
+Media type:      '003'
+
+Mounted media class:      DVD
+Mounted media type:       DVD+R
+Disk Is not erasable
+disk status:              complete
+session status:           complete
+first track:              1
+number of sessions:       1
+first track in last sess: 1
+last track in last sess:  1
+Disk Is unrestricted
+Disk type: DVD, HD-DVD or BD
+
+Track  Sess Type   Start Addr End Addr   Size
+==============================================
+    1     1 Data   0          572943     572944    
+
+Last session start address:         0         
+Last session leadout start address: 572944    
+```
+
+重复上述操作, 刻录全部 4 张光盘.
+
+然后用记号笔在光盘的印刷面做好标记, 装入光盘袋:
+
+![刻录后的光盘](./图/21-d-1.png)
+
+### 2.2 验证刻录的光盘
+
+计算光盘数据的 `sha256`:
+
+```sh
+> sha256sum /dev/sr0
+398dceea2d04767fbb8b61a9e824f2c8f5eacf62b2cb5006fd63321d978d48bc  /dev/sr0
+```
+
+对 4 张光盘全部进行检查, 确认其中的数据完全一样.
+
+然后使用塑料袋密封保存对照组光盘:
+
+![塑料袋存放](./图/22-d-1.png)
+
+### 2.3 泡水
+
+使用塑料盆装一些自来水:
+
+![塑料盆中的水](./图/23-w-1.png)
+
+刚刚刻录后的光盘比较热, 刚接的自来水比较凉.
+为了避免温差的可能影响, 静置 1 小时, 让光盘和水都达到室温.
+
+![泡水的光盘](./图/23-w-2.png)
+
+然后用力把光盘按入水中, 确保光盘和水充分接触.
+
+这里有一个有趣的小发现: **光盘会漂在水面上 !**
+这是因为塑料的密度低于水.
+
+此时, 光盘又要振臂高呼: 还有谁 ?!
+除了光盘, 还有什么存储器落水后可以漂在水面上 ?
+
+### 2.4 捞出光盘擦干水
+
+浸泡 36 分钟, 然后从水中捞出光盘.
+
+将光盘从光盘袋中取出, 甩干大部分水分,
+然后用卫生纸小心吸干剩余的少量小水滴.
+注意尽量不要擦伤/污染光盘的读取面, 也不要残留纸张纤维在光盘上.
+
+把泡水的光盘袋扔掉, 换一个新的干燥的光盘袋, 装入泡水后的光盘.
+
+静置 24 小时, 让光盘充分干燥.
+
+### 2.5 读取光盘
+
+第二天, 使用 DVD 光驱尝试读取实验组的 2 张光盘:
+
+```sh
+> dd if=/dev/sr0 of=/dev/null status=progress
+1163575808 字节 (1.2 GB, 1.1 GiB) 已复制,102 s,11.4 MB/s
+输入了 2291776+0 块记录
+输出了 2291776+0 块记录
+1173389312 字节 (1.2 GB, 1.1 GiB) 已复制,102.758 s,11.4 MB/s
+> sha256sum /dev/sr0
+398dceea2d04767fbb8b61a9e824f2c8f5eacf62b2cb5006fd63321d978d48bc  /dev/sr0
+```
+
+这是 1 号泡水光盘, 读取速度正常, 数据完好.
+
+```sh
+> dd if=/dev/sr0 of=/dev/null status=progress
+1159713280 字节 (1.2 GB, 1.1 GiB) 已复制,99 s,11.7 MB/s 
+输入了 2291776+0 块记录
+输出了 2291776+0 块记录
+1173389312 字节 (1.2 GB, 1.1 GiB) 已复制,99.9448 s,11.7 MB/s
+> sha256sum /dev/sr0
+398dceea2d04767fbb8b61a9e824f2c8f5eacf62b2cb5006fd63321d978d48bc  /dev/sr0
+```
+
+这是 2 号泡水光盘, 读取速度正常, 数据完好.
+
+----
+
+因为实验组的泡水光盘, 看起来完好无损, 所以就没必要读取对照组的光盘了.
+
+观察泡水光盘表面 (读取面), 有少量划痕, 有少量小水滴干了之后留下的痕迹.
+但是仍然不影响正常读取.
+
+
+## 3 结果及局限性分析
+
+实验结果: 普通 DVD+R 刻录光盘, 在常温的清水中浸泡 36 分钟之后,
+没有损坏, 其中的数据可以正常读取.
+
+本实验的局限性如下:
+
+### 3.1 光盘数量较少, 实验精度较低
+
+如果按照更好的实验设计, 应该使用较多数量的光盘 (比如每组 20 张),
+从而能够统计计算损坏的比例, 获得比如 "95% 完好" 之类的结果.
+
+然而为了低成本 (请看窝的网名), 本次实验组光盘只有 2 张.
+这可能会因为偶然性因素, 导致结果不正确.
+所以本实验结果的精度较低, 仅供参考.
+
+### 3.2 仅适用于 DVD+R 刻录光盘
+
+CD, DVD, BD (蓝光) 光盘的结构不同. 虽然直径都是 12cm, 厚度都是 1.2mm,
+但是 DVD 光盘的数据记录层夹在中间, 也就是距离读取面约 0.6mm 的深度.
+而蓝光光盘的数据记录层在读取面很浅的位置 (约 0.1mm),
+因为蓝光光驱的物镜的数值孔径 (NA) 较大, 工作距离很短.
+
+由于 DVD 光盘容量太小, 数据备份一般使用 BD-R 光盘.
+然而由于光盘结构不同, 本实验的结果并不能直接用于蓝光光盘.
+
+### 3.3 仅适用于常温清水
+
+本实验使用室温的普通自来水浸泡光盘.
+所以本实验的结果并不适用于热水, 冰水等温度.
+
+也不适用于脏水 (比如洪水), 酒精等别的液体.
+除了清水之外的液体, 仍然可能损坏光盘.
+
+### 3.4 仅适用于短期浸泡
+
+本实验中, 光盘只浸泡了 36 分钟, 时间比较短.
+如果光盘长期浸泡在水中, 仍然有可能损坏.
+
+### 3.5 不知道泡水对光盘的长期影响
+
+本实验中, 光盘在泡水 24 小时 (1 天) 后进行读取.
+这只能说明, 光盘泡水之后, 在短期内不会损坏.
+
+然而泡水还可能对光盘有长期影响.
+比如, 正常情况下光盘的存储寿命可能为 3 年, 但是泡水后寿命缩短为半年.
+本实验并没有测量这方面的情况.
+
+
+## 4 总结与展望
+
+本实验通过把刻录后的 DVD+R 光盘浸入常温清水, 捞出擦干后读取光盘数据,
+初步验证了 **普通光盘** (非档案级) 具有一定的防水能力,
+在泡水之后不易损坏.
+需要注意本实验的各种局限性: 实验组光盘数量少, 结果精度低.
+仅适用于 DVD+R 光盘, 常温清水, 短期浸泡.
+并且不知道泡水对光盘的长期影响.
+
+本实验的成本较低, 总成本约 30 元 (不含 PC).
+
+关于泡水对光盘寿命的长期影响, 需要在以后定期检查实验组的光盘,
+比如每个月 (或者半年) 读取一次光盘中的数据, 看看是否损坏.
+所以实验组和对照组的光盘仍然需要好好保存, 这个实验还在继续,
+在几个月或者几年之后, 还能得出新的结论.
+
+----
+
+本文使用 CC-BY-SA 4.0 许可发布.

+ 29 - 0
发布/20240728-48-光盘文件系统_iso9660/README.md

@@ -0,0 +1,29 @@
+# 20240728-48
+
+标题:
+**光盘文件系统 (iso9660) 格式解析**
+
+索引: `计算机编程入门`
+
+关键词: 光盘, 文件系统, iso9660, deno, GNU/Linux, js
+
+
+## 图文版
+
+[已发布](./a.md): (4)
+
++ <https://zhuanlan.zhihu.com/p/711411492>
+
++ <https://juejin.cn/post/7396248017022402623>
+
++ <https://mp.weixin.qq.com/s?__biz=MzkyMDU4ODYwMQ==&mid=2247484159&idx=1&sn=39c10dcad47180d939185ea2b8ccd916&chksm=c191daa9f6e653bfd13e710394093320f5815fdc0a86c856f10ba4552f0ab5b6a9b33adc3806&token=1878955555&lang=zh_CN#rd>
+
++ <https://blog.csdn.net/secext2022/article/details/140758509>
+
+----
+
+首发日期 `2024-07-28`, 以下为原文内容:
+
+----
+
+TODO

File diff suppressed because it is too large
+ 1157 - 0
发布/20240728-48-光盘文件系统_iso9660/a.md


+ 0 - 0
发布/20240803-49-光盘RAID/.gitignore


Some files were not shown because too many files changed in this diff