如何在复制到 NAS 时保留文件修改时间?

如何在复制到 NAS 时保留文件修改时间?

我最近在网络上安装了 Synology DiskStation。我使用 Nautilus 3.4.2 中的“浏览网络”按钮从 Ubuntu 12.04.1 计算机安装了它。它显示为 afp://[电子邮件保护]/照片/ 在 Nautilus 中。

到目前为止一切顺利。然后我上传了很多照片,所有照片的修改时间都跨越了几个月。当我查看 DiskStation 上的照片目录时,它们都有复制时的修改时间,而不是源计算机上的修改时间。在 DiskStation 上按日期对它们进行排序就到此为止了。

有没有办法重新复制文件,但保留其修改日期?也许我以错误的方式安装了 DiskStation。也许 Nautilus 是错误的工具。有什么建议吗?

顺便说一句,我已将数 GB 的照片通过 SMB/CIFS 从 Ubuntu 10.04、10.10、11.04 和 11.10 移至另一台 NAS(Plextor PX-EH),修改时间完全保留。问题肯定出在 Synology 或某些 Ubuntu 12.04 软件上。

答案1

我相信我已经解决了这个问题。在 Ubuntu 12.04 中,Nautilus 中有两种方法可以连接到远程 DiskStation NAS。一种保留修改时间,一种不保留。

在 Nautilus 窗口左侧的菜单中,“浏览网络...”按钮最终会将 AFP(Apple 文件协议)连接到 DiskStation,Nautilus 和cp -p副本均无法通过该协议保存修改时间。我尝试在 DiskStation 中禁用 Apple 支持,但在该模式下,DiskStation 甚至在“浏览网络”中都看不到。

在 Nautilus 的文件菜单中,有一个“连接到服务器...”选项,它提供了多种协议。我选择了 Windows,输入了我的凭据,然后顺利连接。在此模式下,修改时间会保留,因此我可以重新复制照片并保留其日期。

感谢 Sergey 和 david6 的建议。希望大家会发现这些信息很有价值。

答案2

标准cp命令具有--preserve在复制时保留某些属性(默认情况下 - 模式,所有权,时间戳)的标志。

像这样:

cp -rp /source/photos/folder /destination/photos/folder

在“正常”情况下应该可以解决问题。但是,afp://URL 中的内容让我感到困惑 - 这是 Apple Filing Protocol 吗?在这种情况下,一切都无法预料。

我想补充一点——依靠文件修改日期来对照片进行分类非常不可靠。这就是图像元数据(EXIF 等)的用途。或者,至少,只需根据拍摄日期将它们放在目录中:photos/2012/12/05 等。

答案3

这是经典推拉问题,针对远程复制。

接受者主办方不遵守日期戳已收到文件。Nautilus 有同样的错误,从 10.04 LTS 到 12.10。

这个问题已经得到解决(对于 Nautilus),在两个 Ubuntu 主机之间复制时,总是复制远程主机(源)本地主机(接收者)。(又称“')


您的问题出在 NAS 盒上,而不是 Ubuntu 上。

您需要它来遵守收到文件的日期戳(默认)。

您是否使用 NFS(Linux)或 CIFS(Windows)进行文件共享?

答案4

要在客户端解决此问题,请尝试在挂载选项中明确指定协议。

man mount.cifs

       vers=
           SMB protocol version. Allowed values are:

           ·   1.0 - The classic CIFS/SMBv1 protocol. This is the default.

           ·   2.0 - The SMBv2.002 protocol. This was initially introduced in
               Windows Vista Service Pack 1, and Windows Server 2008. Note that
               the initial release version of Windows Vista spoke a slightly
               different dialect (2.000) that is not supported.

           ·   2.1 - The SMBv2.1 protocol that was introduced in Microsoft
               Windows 7 and Windows Server 2008R2.

           ·   3.0 - The SMBv3.0 protocol that was introduced in Microsoft
               Windows 8 and Windows Server 2012.

           Note too that while this option governs the protocol version used,
           not all features of each version are available.
sudo mount -t cifs //mynas/Disk1share /mnt/Data/NAS -o user=me,password=mine,uid=$(id -u),vers=2.0

相关内容