username and password for rsync in script

71,662

Solution 1

Have you tried something like:

rsync -rltvvv --password-file=/root/secret . user@host::dest

Solution 2

Use export RSYNC_PASSWORD=pass instead of RSYNC_PASSWORD=pass.

Share:
71,662

Related videos on Youtube

d-_-b
Author by

d-_-b

Updated on September 17, 2022

Comments

  • d-_-b
    d-_-b over 1 year

    I'm creating a cron job to keep two dirs in sync. I'm using rsync. I'm running an rsync daemon. I read the manual and it says:

       RSYNC_PASSWORD
              Setting  RSYNC_PASSWORD  to  the required password allows you to
              run authenticated rsync connections to an rsync  daemon  without
              user  intervention. Note that this does not supply a password to
              a shell transport such as ssh.
    
       USER or LOGNAME
              The USER or LOGNAME environment variables are used to  determine
              the  default  username  sent  to an rsync daemon.  If neither is
              set, the username defaults to 'nobody'
    

    I have something like:

    #!/bin/bash
    USER=name
    RSYNC_PASSWORD=pass
    DEST="myhost::mymodule"
    
    /usr/bin/rsync -rltvvv . $DEST
    

    I also tried exporting (dangerous, I know) USER and RSYNC_PASSWORD. I also tried with LOGNAME. Nothing works. Am I doing this correctly?

    EDIT (for clarification)

    I am using rsync version 2.6.9 under linux.

    This command works:

    /usr/bin/rsync -rltvvv . myuser@myhost::mymodule
    

    I am prompted for the password and when I type it in, the transfer begins.

    This is the error I get when trying via the script:

    opening tcp connection to myhost port 873
    opening connection using --server -vvvltr . mymodule
    @ERROR: auth failed on module mymodule
    rsync error: error starting client-server protocol (code 5) at main.c(1383) [sender=2.6.9]
    _exit_cleanup(code=5, file=main.c, line=1383): about to call exit(5)
    
    • pehrs
      pehrs about 14 years
      What kind of error message, if any, do you get? Can you run it manually?
    • d-_-b
      d-_-b about 14 years
      Sorry about that. I've edited the question.
    • elmo
      elmo about 14 years
      Well, if nothing else rsync actually manages to read something it believes to be a password. Otherwise you would have been prompted for one.
    • d-_-b
      d-_-b about 14 years
      And that got me thinking. I put a declare -x in the script before the rsync command, and LOGNAME and USER are being set by bash I presume.
  • d-_-b
    d-_-b about 14 years
    Yup tried that one too.
  • d-_-b
    d-_-b about 14 years
    Since I thought I didn't know what was going on with the environment, I tried this again. However, the destination format was slightly different: rsync -rltvvv --password-file=/root/secret . user@host::dest