I have one older ubuntu server, and one newer debian server and I am migrating data from the old one to the new one. I want to use rsync to transfer data across to make final migration easier and quicker than the equivalent tar/scp/untar process.
As an example, I want to sync the home folders one at a time to the new server. This requires root access at both ends as not all files at the source side are world readable and the destination has to be written with correct permissions into /home. I can't figure out how to give rsync root access on both sides.
I've seen a few related questions, but none quite match what I'm trying to do.
I have sudo set up and working on both servers.
Actually you do NOT need to allow root athentication via SSH to run rsync as Antoine suggests. The transport and system authentication can be done entirely over user accounts as long as you can run rsync with sudo on both ends for reading and writing the files.
As a user on your destination server you can suck the data from your source server like this:
The user you run as on both servers will need passwordless* sudo access to the rsync binary, but you do NOT need to enable ssh login as root anywhere. If the user you are using doesn't match on the other end, you can add user@boron: to specify a different remote user.
Good luck.
*or you will need to have entered the password manually inside the timeout window.
If your data is not highly sensitive, you could use
tar
andsocat
. In my experience this is often faster thanrsync
over ssh.You need
socat
ornetcat
on both sides.On the target host, go to the directory where you would like to put your data, after that run:
socat TCP-LISTEN:4444 - | tar xzf -
If the target host is listening, start it on the source like:
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444
For this setup you'll need a reliable connection between the 2 servers.
Ok, i've pieced together all the clues to get something that works for me.
Lets call the servers "src" & "dst".
Set up a key pair for root on the destination server, and copy the public key to the source server:
Add the public key to root's authorized keys on the source server
Back on the destination server, pull the data across with rsync: