Comment by wtetzner

21 hours ago

> The one place in my usage where it doesn't match Samba rsync is with the following:

> openrsync --rsync-path=openrsync -av -e ssh /etc/services example.com:/tmp/services

This appears to match "normal" `rsync` behavior as well. I think you need a trailing slash after `services` to sync only the contents.

EDIT: actually my "normal" rsync is openrsync on macOS...

This switch happened in macOS 15.4, it was pretty easy to miss.

  • sounds like a compliment to the implementation

    • Or more likely that prior to 15.4, macOS was using an ancient version of rsync because Apple wants to avoid the GPL 3.0. rsync went GPL 3.0 in 2007.

Nonetheless, this matches vanilla rsync.

  • No, it doesn't.

    I think some people may not be reading closely. On Unix, "/etc/services" is a file, not a directory:

      $ file /etc/services                                                                                                                         
      /etc/services: ASCII text
    

    Here are two OpenBSD 7.9 endpoints running Samba rsync:

    rsync -av -e ssh /etc/services example.com:/tmp/services

    The above command creates a mirror of the local file /etc/services in a remote file called /tmp/services. The outcome is exactly the same as if I had run "scp /etc/services example.com:/tmp/services"

      client$ sha256 -q /etc/services                                                                                                                    
      469d28e72ed0e0994d31b555cc1bed7bc95a23fd1beeb30062affb64db0dd44a
    
      server$ sha256 -q /tmp/services                                                                                                          
      469d28e72ed0e0994d31b555cc1bed7bc95a23fd1beeb30062affb64db0dd44a
    

    openrsync --rsync-path=openrsync -av -e ssh /etc/services example.com:/tmp/services

    The above command creates a mirror of the local file /etc/services in a remote file called /tmp/services/services. The outcome is NOT the same as if I had run "scp /etc/services example.com:/tmp/services"

    Please note that "/tmp/services" and "/tmp/services/services" are different.

      client$ sha256 -q /etc/services                                                                
      469d28e72ed0e0994d31b555cc1bed7bc95a23fd1beeb30062affb64db0dd44a
    
      server$ sha256 -q /tmp/services  
      sha256: /tmp/services: read error: Is a directory
      server$ sha256 -q /tmp/services/services                                                                                                 
      469d28e72ed0e0994d31b555cc1bed7bc95a23fd1beeb30062affb64db0dd44a
    

    Here's an OpenBSD 7.9 client and Ubuntu server both running Samba rsync:

    rsync -av -e ssh /etc/services example.com:/tmp/services

    The above command creates a mirror of the local file /etc/services in a remote file called /tmp/services. The outcome is exactly the same as if I had run "scp /etc/services example.com:/tmp/services"

    If you disagree, please state what operating systems you're using and copy/paste the output of the following commands on each side:

      uname -a
      rsync -V
      openrsync -V
    

    I get

      $ rsync -V
      rsync  version 3.4.3  protocol version 32
      (snipped)
    
      $ openrsync -V
      openrsync 0.1 (protocol version 27)
    

    Then please run the commands I ran above, in particular

    openrsync --rsync-path=openrsync -av -e ssh /etc/services example.com:/tmp/services

    And then type "file /tmp/services" on the remote server.