Hi, @skraw
I wonder if you really mean atime... Though you wrote "atime" both in the subject and inside the post.
But by default, rsync's decision whether to copy a file or not, doesn't depend on atime. It depends on mtime (and the size).
From rsync(1):
" Rsync finds files that need to be transferred using a "quick check" algorithm (by default) that
looks for files that have changed in size or in last-modified time."
By default, rsync does not preserve atime. It would require -U option to keep it:
" --atimes, -U preserve access (use) times"
" --archive, -a
[...] Be aware that it does not include preserving ACLs (-A), xattrs (-X), atimes (-U), [...]"
You use rsync -avxAHX (without -U) so access time isn't preserved. Neither in the source file, nor in the destination file.
I've just verified this in a Kubuntu 22.04, kernel 5.15.0-43, rsync 3.2.3-8ubuntu3:
Bash:
$ stat log.txt
File: log.txt
Size: 265 Blocks: 8 IO Block: 4096 regular file
Device: 1dh/29d Inode: 2035784 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 999/ kubuntu) Gid: ( 999/ kubuntu)
Access: 2026-04-28 08:57:59.685828377 +0200
Modify: 2026-03-06 23:37:50.686966112 +0100
Change: 2026-04-23 19:42:42.813206055 +0200
Birth: -
$ rsync -avxAHX log.txt test/
sending incremental file list
log.txt
sent 381 bytes received 35 bytes 832.00 bytes/sec
total size is 265 speedup is 0.64
$ stat log.txt
File: log.txt
Size: 265 Blocks: 8 IO Block: 4096 regular file
Device: 1dh/29d Inode: 2035784 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 999/ kubuntu) Gid: ( 999/ kubuntu)
Access: 2026-05-02 11:08:59.437368182 +0200
Modify: 2026-03-06 23:37:50.686966112 +0100
Change: 2026-04-23 19:42:42.813206055 +0200
Birth: -
$ stat test/log.txt
File: test/log.txt
Size: 265 Blocks: 8 IO Block: 4096 regular file
Device: 1dh/29d Inode: 2753687 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 999/ kubuntu) Gid: ( 999/ kubuntu)
Access: 2026-05-02 11:08:59.437368182 +0200
Modify: 2026-03-06 23:37:50.686966112 +0100
Change: 2026-05-02 11:08:59.437368182 +0200
Birth: -
Note the original atime was 2026-04-28... and after rsync both the source and destination files have atime 2026-05-02...
Only after I have used also -U for rsyncing other example file, the destination file's atime is the same as the original atime (though now the source file's atime is updated, because rsync accessed the file):
Bash:
$ stat .bash_logout
File: .bash_logout
Size: 220 Blocks: 8 IO Block: 4096 regular file
Device: 1dh/29d Inode: 79 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 999/ kubuntu) Gid: ( 999/ kubuntu)
Access: 2026-04-12 18:32:57.091642902 +0200
Modify: 2025-10-24 18:04:34.980312001 +0200
Change: 2025-10-24 18:04:34.980312001 +0200
Birth: -
$ rsync -avxAHXU .bash_logout test/
sending incremental file list
.bash_logout
sent 345 bytes received 35 bytes 760.00 bytes/sec
total size is 220 speedup is 0.58
$ stat .bash_logout
File: .bash_logout
Size: 220 Blocks: 8 IO Block: 4096 regular file
Device: 1dh/29d Inode: 79 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 999/ kubuntu) Gid: ( 999/ kubuntu)
Access: 2026-05-02 12:01:52.964170356 +0200
Modify: 2025-10-24 18:04:34.980312001 +0200
Change: 2025-10-24 18:04:34.980312001 +0200
Birth: -
$ stat test/.bash_logout
File: test/.bash_logout
Size: 220 Blocks: 8 IO Block: 4096 regular file
Device: 1dh/29d Inode: 2754365 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 999/ kubuntu) Gid: ( 999/ kubuntu)
Access: 2026-04-12 18:32:57.000000000 +0200
Modify: 2025-10-24 18:04:34.980312001 +0200
Change: 2026-05-02 12:01:52.964170356 +0200
Birth: -
Regarding why your rsync "copied all files again, even those already transferred earlier" - I don't know.
I just wanted to help sort out the details
.