![无法使用 rsync 维护 createTime (但 cp -p 有效)](https://linux22.com/image/220719/%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%20rsync%20%E7%BB%B4%E6%8A%A4%20createTime%20%EF%BC%88%E4%BD%86%20cp%20-p%20%E6%9C%89%E6%95%88%EF%BC%89.png)
当我尝试将文件从 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 选项来仅同步修改时间。