83

I have an sshfs connection setup with a remote filesystem on a Linux server. I'm doing an rsync from my local server to the ftpfs-filesystem. Because of the nature of this setup, I can't chown anything on the sshfs filesystem.

When I do the rsync, it tries to chown all the files after it transfers them. This results in chown errors, even though it transfers the files just fine.

With rsync, is there a way to tell it to not try and chown the files? If I rsync like 1000 files I end up with a log of 1000 chown: permission denied (error 13) errors. I know it doesn't hurt anything to get these errors since the ownership of the files is determined by the sshfs configuration itself, but it would be nice to not get them.

Jeff Schaller
  • 519
  • 6
  • 17
Jake Wilson
  • 8,494
  • 29
  • 94
  • 121

4 Answers4

121

You are probably running rsync like this:

rsync -a dir/ remote:/dir/

The -a option according to the documentation is equivalent to: -rlptgoD

      -a, --archive    archive mode; equals -rlptgoD (no -H,-A,-X)

You probably want to remove the -o and -g options:

      -o, --owner                 preserve owner (super-user only)
      -g, --group                 preserve group

So instead your rsync command should look something like this:

rsync -rlptD dir/ remote:/dir/

Or as @glglgl points out:

rsync -a --no-o --no-g dir/ remote:/dir/

The remaining options in use are:

      -r, --recursive             recurse into directories
      -l, --links                 copy symlinks as symlinks
      -p, --perms                 preserve permissions
      -t, --times                 preserve modification times
      -D                          same as --devices --specials
          --devices               preserve device files (super-user only)
          --specials              preserve special files
aculich
  • 3,520
  • 1
  • 25
  • 33
  • 24
    ... or just `-a --no-o --no-g` – glglgl Feb 29 '12 at 07:43
  • 1
    I used just `rsync -r --no-o --no-g /source/* /dest/` and my owner and group of the files at the destination were still changed according to the source. Any ideas? – Ram Patra Sep 18 '17 at 21:35
  • ... or just `-a --chown=whomever:whomever` so you're explicitly setting the destination's owner and group to whomever you want them to be. – Bob Stein Apr 01 '21 at 19:20
12

Don't pass -o or any of the other options that implies it.

Ignacio Vazquez-Abrams
  • 45,019
  • 5
  • 78
  • 84
6

Don't use the -a option, as it will include the -p option that keeps the permissions. For this situation, the -r should be enough.

For more infos, see man rsync.

Sven
  • 97,248
  • 13
  • 177
  • 225
0

I encountered something similar whereby rsync was not retaining the owner and group of files & directories been synced from a remote server. To correct, I copied over the /etc/shadow, /etc/group and /etc/passwd files.

When I ran the rsync command below it then worked in that it retained permissions, symbolic links & ownership.

I had set up ssh keys to use passwordless ssh.

rsync -avpog user@10.1.x.x:/usr/local /usr
techraf
  • 4,163
  • 8
  • 27
  • 44