系统崩溃后,从NAS服务器上的8.3重新构造长文件名(LFN)


0

我的FAT32 NAS丢失了它在多个目录中的长文件名。

它仅显示8.3文件名。

我应该如何找回LFN?

这是在主系统崩溃中发生的,该崩溃需要重新格式化并从备份中重建硬盘。我还没有接触过NAS,所以只能奇怪为什么我再也看不到LFN,只有8.3。

摘要:

1. NAS description

2. Problem

3. Actions subsequent to crash (none to the NAS)

4. File types: root—btrfs, data—XFS, formerly Ext4

5. PATH_MAX and NAME_MAX appear alright

6. convnv encoding is the same for 8.3 and LFN?

7. Numerous examinations of **man mount**

8. Parent app for files: Evolution email client

尽管下面详细讨论了几个小时,但我在这一点上仍然一无所知。在此过程中,我学到了很多有关文件系统和文件名的知识,但还没有解决方案。我将不胜感激。

最好的问候,安迪

=====

  1. 单位是

    西部数据(WD)“我的书”必备2TB NAS

  2. 主要麻烦在于,Linux Gnome Evolution电子邮件客户端有数千个本地电子邮件文件夹和消息。我在WD FAT32 USB SSD(固态驱动器)上有一个单独的较旧备份,该备份保留了文件夹的LFN,但那里的消息要旧得多。尝试复制较新的备份(8.3)文件只会忽略较早的LFN文件,并另存为8.3,从而复制了内容。

  3. 自从崩溃以来,我还没有将任何文件保存到SSD或NAS中,所以无法想象它们的内容实际上已被更改,而是怀疑我的新配置未正确读取它们。

  4. 在重构过程中,根据操作系统的建议(openSUSE Leap 42.1),我们将根分区(/)重新格式化为btrfs,并将数据分区XFS重新格式化。数据分区经过LUKS加密。根分区和数据分区最初是Ext4希望LFN不应依赖于Ext4?

  5. 主系统和NAS上的路径名和文件名限制分别为4096/255:

{} serverfault.com/questions/9546/filename-length-limits-on-linux

# getconf NAME_MAX /dev/sda3 
255
# getconf PATH_MAX /dev/sda3 
4096

然而

{} kb.netapp.com/support/index?page=content&id=3011981&actp=search&viewlocale=en_US&searchid=1452757427425

说路径长度包含NAME_MAX限制中,这肯定可以解释问题。但这不是坠机前的问题,所以我想知道为什么会是现在?

OTOH

{en.wikipedia.org/wiki/Comparison_of_file_systems}(是的,我不知道适当的技术参考,但无论如何还是有用的:>-)

重复上面的getconf NAME_MAX限制,并说对于btrfsXLS文件系统没有PATH_MAX限制。

同样,这些问题在崩溃之前不存在,参数相同,因此我很难理解文件系统更改是罪魁祸首。

  1. 我已经了解了convmv {www.j3e.de/linux/convmv/man/}。听起来很有希望,但似乎毫无用处,因为8.3和LFN都是UTF8文件名。我还没有找到为这两种名称格式提供明确编码的地方。

  2. 我看到我应该考虑安装选项,但是哪个呢?

我正在使用的mount命令是

mount -t cifs -o guest //192.168.5.1/“我的书” / mnt / NAS

在所有这一切发生之前,这工作正常。众所周知,安装选项与星星一样多... :-(

据我了解,这会将驱动器安装为NFS驱动器。看到8.3文件名与上面的kb.netapp.com引用矛盾,该引用表示:

短名称出现在仅支持8.3格式的客户端上。短名称对NFS客户端不可见。

这确实似乎是NFS客户端,因此应该不会看到8.3。很奇怪。

因此,我们详细研究了mount

{} linux.die.net/man/8/mount

一些调查领域;以前没有使用过这些,我们可以将它们作为显式选项进行处理,以查看它们是否解决了问题:

cifs:

See the options section of the mount.cifs(8) man page 
 (cifs-utils package must be installed). 

安装。

{} linux.die.net/man/8/mount.cifs

mount.cifs {service} {mount-point} [-o options]
mount.cifs //192.168.5.1/"My Book" /mnt/NAS -o guest,uid=1000,gid=100,rw

该文件由root运行,并以chown andy:users的身份挂载NAS,但文件仍显示为8.3。

尝试FAT check = r选项:

mount.cifs //192.168.5.1/"My Book" /mnt/NAS -o guest,uid=1000,gid=100,rw,check=r

但这是不允许的。

fat:

    check=r

看起来好像check = s有效,不允许使用LFN。这已成为默认设置吗?

codepage=value

Sets  the codepage for converting to shortname characters on FAT
and VFAT filesystems. By default, codepage 437 is used.

iocharset=value

Character set to use for converting between 8 bit characters and
16 bit Unicode characters. The default is iso8859-1.  Long file-
names are stored on disk in Unicode format.

因此,我们尝试:

mount -t fat -o guest //192.168.5.1/"My Book" /mnt/NAS

但没有喜悦

vfat:

First of all, the mount options for fat are recognized. 
The dotsOK option is explicitly killed by vfat. Furthermore, there are

没有什么看起来特别有用,并且

mount -t vfat -o guest //192.168.5.1/"My Book" /mnt/NAS

失败。

  1. 大部分8.3文件的父应用程序是Gnome Evolution电子邮件客户端。但是同样,这些是备份文件,而不是崩溃中丢失的实际数据文件。因此,它继续让我回避,原始的LFN如何神秘地变成8.3,而无需我直接采取任何行动。因此,它必须是安装文件系统属性的问题。

再次感谢,安迪


进行文件系统备份的原始系统配置是什么?您是如何精确进行备份的?备份设备的文件系统是什么?
Tero Kilkanen '16

除Ext4以外,系统基本相同,而不是btfrs + XLS。备份系统是FAT32,我在脚本中使用rsync进行备份:rsync $ excludes -Dvurtl $ sourcepath $ filename $ destpath2其中excludes =“-exclude = *。vdi --exclude = *。vmdk --exclude = *。 dpi --exclude = *。iso”。这一切在崩溃之前就起作用了,只是在事后才起作用。
安迪·拉瓦雷

因此,您之前曾尝试还原,但效果很好?
Tero Kilkanen '16

我在这里怀疑该单元以某种方式无法正确存储文件名。挂载不会丢失任何文件名,没有内核参数会影响文件系统文件名的长度。Btrfs,XFS,Ext4等都支持长文件名,因为这是Unix文件系统的基本要求。实际上,该单元将FAT32用作其文件系统是很奇怪的,因为从很多方面来看,这都是一个不好的选择。
Tero Kilkanen '16

特罗你好。我们不知道,我们不知道... :-(谢谢您消除了我想知道的事情。确实,我们需要与Western Digital交流,因为他们已经选择FAT作为其文件系统。一天结束时,我们在这上面花费了可观的时间,所以我只是认真地吸收它,继续我的生活,根据需要重建目录,再过几年都无所谓了。曾经是恢复它的一种方法,然后还不错,但不值得心脏病和恐慌发作。安迪
安迪·拉瓦拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.