KDE Dolphin 在复制到 samba 共享时不保留文件的修改日期

KDE Dolphin 在复制到 samba 共享时不保留文件的修改日期

这是我在这里的第一篇帖子,但我一直是个热心的读者。即使读了很多关于这个问题的文章,我还是无法解决这个问题。

我目前正在使用 kubuntu 21.10,但自从我第一次安装它以来就遇到了这个问题,可能是在 20.04 中。当我尝试将文件从 PC 中的任何磁盘移动/复制到 samba 共享时,修改日期不会保留。它们似乎被复制了一会儿,但随后立即更改为“现在”。

Samba 共享设置在 RPi4 上。这是我的 /etc/samba/smb.conf 文件:

[MyBook]
path = /media/MyBook
writeable = yes
create mask = 0777
directory mask = 0777
public = yes
browseable = yes
guest ok = yes
read only = no

这是我通过 cifs 挂载共享的 fstab 文件:

//192.168.1.14/MyBook /media/MyBook cifs credentials=.smbcredentialsRPi4,iocharset=utf8,dir_mode=0777,file_mode=0777,x-systemd.automount,x-systemd.mount-timeout=30,_netdev 0 0

我可以按预期读取/写入文件夹,但复制文件时不会保留时间戳。这只发生在我安装 kubuntu 时。我还有一个单独的分区,里面有 ubuntu 和 ubuntu-mate,从那里复制到 samba 共享时不会发生这种情况。奇怪的是,我在三个安装中使用了完全相同的文件。从我的 Windows 分区复制时,它还会保留时间戳,因此这似乎是 kubuntu 独有的问题,而不是 RPi4 上 samba 共享的设置方式。这不仅发生在 Dolphin 上,也发生在其他文件管理器上 - 我尝试了 Nemo 和 Nautilus,它们不会在我的 kubuntu 设置中保留时间戳。

为了说明发生了什么,我将一个测试文件从本地磁盘复制到 samba 共享。原始文件上的修改日期是 2018 年 10 月 3 日,但复制文件的修改日期是“现在”。

本地电脑中的测试文件

samba 共享中的测试文件

奇怪的是,当我使用 samba 地址 smb://192.168.1.14/MyBook/test/ 时,这种情况不会发生,因为它确实保留了修改日期。如果从挂载点查看文件,它确实会显示正确的修改日期。

samba 地址保留修改日期

我的猜测是,这与挂载点的创建方式或 cifs 本身有关。

使用 ls 查看挂载点

chris@operarum:~$ ls -l /media/ | grep MyBook
drwxrwxrwx   2 chris chris    0 mar 31 22:32 MyBook

这是 RPi4 的输出:

pinas@rpi4:~ $ ls -l /media | grep MyBook
drwxrwxrwx  22 root root 4096 Mar 31 22:32 MyBook

我也尝试使用 root 帐户挂载 cifs,但结果是一样的。你认为这可能是什么原因?

答案1

我已经考虑这个问题有一段时间了,它似乎是由一些奇怪的错误引起的,而这种错误仅在我发现可以从命令行访问的一种组合中发生。

解决方案是向 mount 命令添加一个额外的选项:vers=2.0(强制使用 SMB 协议 2.0 版)并且不使用 fstab。相反,您可以使用 systemd 单元文件来挂载共享。

如何操作:首先,删除 fstab 行或在其前面放置一个 #。

然后执行以下命令:

sudo nautilus /etc/systemd/system

在 Nautilus 窗口中,创建一个文件,将其命名为 mountnas.service,并在其中填充以下内容:

[Unit]
Description=Mount share
Requires=network-online.target
After=network-online.service

[Service]
ExecStart=mount -t cifs -o credentials=.smbcredentialsRPi4,iocharset=utf8,dir_mode=0777,file_mode=0777,x-systemd.automount,x-systemd.mount-timeout=30,_netdev,vers=2.0 "//192.168.1.14/MyBook" "/media/MyBook"
Restart=on-failure
RestartSec=1

[Install]
WantedBy=multi-user.target

保存文件并执行以下命令:

sudo systemctl start mountnas.service
sudo systemctl enable mountnas.service

然后它就应该可以工作了,重启后也是如此。

我在 Ubuntu 20.04 和 22.04 的常规 Gnome 版本上也注意到了这个问题,但出于某种原因,Fedora 上没有。我猜想 Ubuntu 使用了另一个版本的 smb,这导致了这个问题。奇怪的是,当尝试通过 Nautilus 连接到文件共享时,它在默认的 Ubuntu 中运行正常。

相关内容