so I'll summarize first and then give some examples below.
In short, I'm pretty sure the issue is not rsync itself?
1. I tried rsyncing locally to /tmp instead of to the share, that works fine.
2. I used stat and ls to confirm that the modified file times were actually incorrect. Not just rsync messing up its interpretation.
3. I may have not explained this well earlier. from the 22.04 problem laptop if I change the mount option from "-o vers=3.0" to "-o vers=2.0" (i.e. change SMB protocol from v3 to v2), then rsync DOES succeed and behaves on resync. But only with exactly "2.0", not 2.1 or anything else. On the behaving 20.04 desktop, changing versions does not matter, it works regardless with any valid version.
4. looks like the linked bug is fixed with 3.2.3-8ubuntu3.1, and that's exactly what I have on the laptop. The desktop is a few version older.
I tried touch with -m and -d (I think that's what you meant? specify an alternate timestamp?) and that _does_ work when sent to the share.
Another interesting data point is that "cp -p" does _not_ work for _either_ client.
Between touch and cp's behavior that's...confusing?
$ rsync -avh test2.txt /tmp/
sending incremental file list
test2.txt
sent 1.05M bytes received 35 bytes 2.10M bytes/sec
total size is 1.05M speedup is 1.00
$ rsync -avh test2.txt /tmp/
sending incremental file list
sent 65 bytes received 12 bytes 154.00 bytes/sec
total size is 1.05M speedup is 13,617.87
$ stat /tmp/test2.txt
File: /tmp/test2.txt
Size: 1048576 Blocks: 2048 IO Block: 4096 regular file
Device: 28h/40d Inode: 3519 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ laptop_user) Gid: ( 1000/ laptop_user)
Access: 2023-02-23 16:55:53.792631806 -0700
Modify: 2023-02-12 18:42:55.467521856 -0700
Change: 2023-02-23 16:55:53.796631723 -0700
Birth: -
using touch. Both cases with "-o vers=3.0" in mount options. I first touch a brand new file with an old date, then touch -m again to the existing file.
---
and finally, trying cp -p. again same mount command on both devices. new file being created. Note that both devices fail to copy the timestamp correctly (should be 2023-02-12). Both work sending to /tmp
so I'll summarize first and then give some examples below.
In short, I'm pretty sure the issue is not rsync itself?
1. I tried rsyncing locally to /tmp instead of to the share, that works fine.
2. I used stat and ls to confirm that the modified file times were actually incorrect. Not just rsync messing up its interpretation.
3. I may have not explained this well earlier. from the 22.04 problem laptop if I change the mount option from "-o vers=3.0" to "-o vers=2.0" (i.e. change SMB protocol from v3 to v2), then rsync DOES succeed and behaves on resync. But only with exactly "2.0", not 2.1 or anything else. On the behaving 20.04 desktop, changing versions does not matter, it works regardless with any valid version.
4. looks like the linked bug is fixed with 3.2.3-8ubuntu3.1, and that's exactly what I have on the laptop. The desktop is a few version older.
I tried touch with -m and -d (I think that's what you meant? specify an alternate timestamp?) and that _does_ work when sent to the share.
Another interesting data point is that "cp -p" does _not_ work for _either_ client.
Between touch and cp's behavior that's...confusing?
some output examples:
rsync versions
---
20.04 good desktop:
$ apt list rsync updates, focal-security, now 3.1.3-8ubuntu0.4 amd64 [installed] updates, focal-security 3.1.3-8ubuntu0.4 i386
Listing... Done
rsync/focal-
rsync/focal-
22.04 bad laptop:
$ apt list rsync updates, now 3.2.3-8ubuntu3.1 amd64 [installed, automatic]
Listing... Done
rsync/jammy-
rsync/jammy-updates 3.2.3-8ubuntu3.1 i386
local rsync to /tmp attempt on 22.04 laptop:
----
$ rsync -avh test2.txt /tmp/
sending incremental file list
test2.txt
sent 1.05M bytes received 35 bytes 2.10M bytes/sec
total size is 1.05M speedup is 1.00
$ rsync -avh test2.txt /tmp/
sending incremental file list
sent 65 bytes received 12 bytes 154.00 bytes/sec
total size is 1.05M speedup is 13,617.87
$ stat /tmp/test2.txt
File: /tmp/test2.txt
Size: 1048576 Blocks: 2048 IO Block: 4096 regular file
Device: 28h/40d Inode: 3519 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ laptop_user) Gid: ( 1000/ laptop_user)
Access: 2023-02-23 16:55:53.792631806 -0700
Modify: 2023-02-12 18:42:55.467521856 -0700
Change: 2023-02-23 16:55:53.796631723 -0700
Birth: -
using touch. Both cases with "-o vers=3.0" in mount options. I first touch a brand new file with an old date, then touch -m again to the existing file.
---
20.04 desktop
$ touch -d "2001-01-01" /media/ scratch/ test1.txt scratch/ test1.txt scratch/ test1.txt scratch/ test1.txt scratch/ test1.txt scratch/ test1.txt
$ stat /media/
File: /media/
Size: 0 Blocks: 16 IO Block: 1048576 regular empty file
Device: 52h/82d Inode: 2854778 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/desktop_user) Gid: ( 1000/desktop_user)
Access: 2001-01-01 00:00:00.000000000 -0700
Modify: 2001-01-01 00:00:00.000000000 -0700
Change: 2001-01-01 00:00:00.000000000 -0700
Birth: -
$ touch -m /media/
$ stat /media/
File: /media/
Size: 0 Blocks: 16 IO Block: 1048576 regular empty file
Device: 52h/82d Inode: 2854778 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/desktop_user) Gid: ( 1000/desktop_user)
Access: 2023-02-23 17:22:21.959479500 -0700
Modify: 2023-02-23 17:22:21.959479500 -0700
Change: 2023-02-23 17:22:21.959479500 -0700
Birth: -
22.04 laptop
$ touch -d "2001-01-01" /media/ scratch/ test2.txt scratch/ test2.txt scratch/ test2.txt scratch/ test2.txt scratch/ test2.txt scratch/ test2.txt
$ stat /media/
File: /media/
Size: 0 Blocks: 16 IO Block: 1048576 regular empty file
Device: 66h/102d Inode: 170 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ laptop_user) Gid: ( 1000/ laptop_user)
Access: 2001-01-01 00:00:00.000000000 -0700
Modify: 2001-01-01 00:00:00.000000000 -0700
Change: 2001-01-01 00:00:00.000000000 -0700
Birth: 2023-02-23 17:24:01.985975100 -0700
$ touch -m /media/
$ stat /media/
File: /media/
Size: 0 Blocks: 16 IO Block: 1048576 regular empty file
Device: 66h/102d Inode: 170 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ laptop_user) Gid: ( 1000/ laptop_user)
Access: 2001-01-01 00:00:00.000000000 -0700
Modify: 2023-02-23 17:24:40.114434900 -0700
Change: 2023-02-23 17:24:40.114434900 -0700
Birth: 2023-02-23 17:24:01.985975100 -0700
and finally, trying cp -p. again same mount command on both devices. new file being created. Note that both devices fail to copy the timestamp correctly (should be 2023-02-12). Both work sending to /tmp
20.04 desktop
$ cp -p test1.txt /media/scratch/. scratch/ test1.txt scratch/ test1.txt
$ stat /media/
File: /media/
Size: 1048576 Blocks: 2064 IO Block: 1048576 regular file
Device: 52h/82d Inode: 2854816 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/desktop_user) Gid: ( 1000/desktop_user)
Access: 2023-02-23 17:26:34.571096500 -0700
Modify: 2023-02-23 17:26:34.571096500 -0700
Change: 2023-02-23 17:26:34.571096500 -0700
Birth: -
22.04 laptop
$ cp -p test2.txt /media/scratch/. scratch/ test2.txt scratch/ test2.txt
$ stat /media/
File: /media/
Size: 1048576 Blocks: 2064 IO Block: 1048576 regular file
Device: 66h/102d Inode: 187 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ laptop_user) Gid: ( 1000/ laptop_user)
Access: 2023-02-23 17:28:57.792628300 -0700
Modify: 2023-02-23 17:28:57.792628300 -0700
Change: 2023-02-23 17:28:57.792628300 -0700
Birth: 2023-02-23 17:28:56.773198600 -0700
I hope that helps, and doesn't make things more confusing?