无法使用 rsync 维护 createTime (但 cp -p 有效)

无法使用 rsync 维护 createTime (但 cp -p 有效)

当我尝试将文件从 Mac 复制/备份到 TrueNas 上的共享驱动器时,我遇到了一个奇怪的时间戳问题。

我的驱动器在 TrueNAS 中定义为家庭共享,并通过 Finder 安装在 MacOS 中:

macos > mount
//eric@truenas._smb._tcp.local/eric on /Volumes/eric (smbfs, nodev, nosuid, mounted by via)

但是,当我尝试 rsync 时,安装中的创建日期错误:

macos > ls -lt  20180210_120110_001.jpg   
-rw-r--r--  1 via  staff  723237  7 Jun  2018 20180210_120110_001.jpg

macos > rsync -avztUN 20180210_120110_001.jpg /Volumes/eric/Pictures/Galaxy\ S21/2023-05-19/DCIM/Camera
sending incremental file list
20180210_120110_001.jpg

sent 663,066 bytes  received 35 bytes  1,326,202.00 bytes/sec
total size is 723,237  speedup is 1.09



macos > ls -lt  /Volumes/eric/Pictures/Galaxy\ S21/2023-05-19/DCIM/Camera  
total 1326
-rwx------  1 via  staff  723237 23 May  2023 20180210_120110_001.jpg

正如您使用rsync所看到的,在卷挂载(TrueNAS挂载)中创建的时间戳不正确

然而,这是奇怪的事情,如果我用 cp -P 做同样的事情,时间戳会被保留:

macos >ls -lt  20180210_120110_002.jpg                                                                                             
-rw-r--r--  1 via  staff  687066  7 Jun  2018 20180210_120110_002.jpg

macos >cp -p 20180210_120110_002.jpg /Volumes/eric/Pictures/Galaxy\ S21/2023-05-19/DCIM/Camera                                     

macos >ls -lt  /Volumes/eric/Pictures/Galaxy\ S21/2023-05-19/DCIM/Camera                                                           
total 2583
-rwx------  1 via  staff  723237 23 May 09:17 20180210_120110_001.jpg
-rwx------  1 via  staff  687066  7 Jun  2018 20180210_120110_002.jpg

如您所见,第二个文件 (_002.jpg) 复制了正确的时间戳,而第一个文件则没有。

我非常喜欢使用 rsync,但不知道是什么导致了这个问题,也不知道如何调试它。

使用rsync 3.2.7

macos > rsync -V                                                                                                                                                 
rsync  version 3.2.7  protocol version 31
Copyright (C) 1996-2022 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/

答案1

这很可能是桑巴舞的问题。

为了rsync在 samba 目标上正常工作,它必须具有可用的“unix 扩展”。

rsync传输文件(顺便说一句,在你的情况下 -av 选项就足够了),然后尝试chown()chmod()touch()目标。如果其中任何一个失败,则停止对该文件的进一步处理。

尝试 rsync 到本地目录,如果工作正常,您必须找到一种方法来使用正确的 samba 设置,或者最好在 trueNAS 上安装 rsync 服务器。

答案2

您在使用 rsync 时遇到的问题以及 TrueNAS 安装上的创建时间戳不正确可能与 rsync 在同步过程中处理文件元数据的方式有关。默认情况下,rsync 尝试保留文件元数据,例如时间戳、权限和所有权。但是,在某些情况下,由于底层文件系统或文件访问方式的差异,rsync 可能无法完全保留所有元数据。在您的情况下,rsync 似乎无法正确保留创建时间戳。这可能是由于 rsync 与 TrueNAS 文件系统或用于挂载的 SMB 协议交互的方式造成的。我建议您执行以下操作 -

  • 检查 TrueNAS 上的 rsync 版本:验证 TrueNAS 系统上安装的 rsync 版本是否兼容且是最新的。确保它支持保存元数据所需的功能。
  • 检查文件系统兼容性:确保 TrueNAS 系统上使用的文件系统支持保留创建时间戳。某些文件系统(尤其是网络安装的文件系统)可能不完全支持保留所有元数据。
  • 验证 TrueNAS 设置:检查 TrueNAS 系统的配置设置,特别是与 SMB 文件共享相关的配置设置。确保将设置配置为允许保存文件元数据。
  • 尝试不同的选项:尝试不同的 rsync 选项,看看它们是否会影响元数据的保存。例如,您可以尝试使用 --acls 选项来保留访问控制列表,或使用 --times 选项来仅同步修改时间。

相关内容