Puppysync is a directory synchronisation tool along the same lines as rsync, but with no installation needed on the target machine.

I’ve tried to make this as host friendly as possible:

  • All operations are carried out through ssh
  • Only one ssh connection is needed for all work
  • Nothing, other than Perl, needs to be installed on the target machine
  • No daemons are started
  • No ports are opened on the target machine
  • No disc writes other than the transfers themselves. No temporary files
  • Everyone loves puppys


  1. Grab puppysync-3.tar.gz
  2. Unpack
  3. make
  4. make install


man puppysync will tell you more.

You’ll want to set up your authorized_keys files so Puppysync can connect to the destination server without having to ask for a password every time.

Be cautious, run with -n first to test what would happen. Version 2 is a substantial rewrite, please report bugs.


puppysync ~/www/mysite/ user@host:mainwebsite_html/

You can also sync between two remote hosts. This isn’t particularly efficient as all data is transferred via the controlling machine:

puppysync user1@host1:public_html user2@host2:public_html