从 Windows 安装在 Linux 上的 CIFS 显示损坏/失真的图像

Mom*_*oms 4 samba jpeg cifs

我已经使用cifs-utils. 在 Linux 端查看某些图像时,它们会在视觉上显示失真/损坏,但在 Windows 端会正常。

示例 1(左:Linux,右:Windows)

示例 2(左:Linux,右:Windows)

在 Firefox (69.0) 的某些情况下,图像根本不会显示,只显示一个空白边框,文件位置在左上角。在 Chrome (76.0.3809.132) 中,它将显示极其损坏的图像

我已经尝试过的一些故障排除:

  • 在相同和不同位置重新安装文件夹。相同的图像总是失真/损坏
  • 使用不同的(备份)Windows NAS。

有没有人以前经历过这种情况并知道是什么原因造成的?

Mom*_*oms 6

我正在使用的 Apache2 (2.4.25 Debian) 版本存在一个已知错误,它以一种有趣的方式提供 CIFS 文件,导致文件损坏。对于那些使用 Apache2 的人,您可能会处理httpd.conf文件sites-enabled夹中的文件。在我的 Turnkey Django 发行版中,它是一个django.confsites-enabled文件夹中调用的文件,但它本质上与httpd.conf.

默认情况下,Apache2 使用 MMAP,但是在使用 CIFS 时会被破坏。从文件系统上的文件中获取 md5sum 时,您将不断获得不同的哈希值。这就是导致问题的原因。

要亲眼看到这一点,只需使用以下命令获取 md5sum: wget http://localhost/file -O -|md5sum 多次运行此行,您将看到每次的 md5sum 都不相同。

要在 Apache2 配置文件中关闭 MMAP:

  1. cd../apache2/sites-enabled/
  2. nano django.conf 或者 httpd.conf
  3. 下面ServerName localhost添加EnableMMAP Off
  4. 然后在.conf文件底部添加一个<directory>指向 CIFS 文件夹的标记。我的看起来像这样: <Directory "/etc/www/djsys/static/bom/images/part-img/"> </Directory>
  5. 保存.conf文件,然后重新启动 Apache2 service apache2 restart

MMAP 现在应该关闭,并且您在 CIFS 上的文件应该不再被损坏。