Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have SSH access to the both servers, one of them is empty. How can I move site directory from old server to new server via SSH connection?

PS: On both servers is unix

share|improve this question
up vote 14 down vote accepted

My favorite is rsync. It is smart enough to copy only what has to be copied (i.e. changed or new).

rsync -avz /source/path user@desthost:/destination/path/

Note the final / at the end to ask rsync to copy inside that path (not over it).
rsync takes care of managing the ssh connection for you. The avz (typical) options ask rsync to use the archive (tar) mode, in order to copy recursively, and keep as much as possible date and user values. The v option is verbose to show you what is currently happening. The z option will zip (compress) the transfer to hopefully save time and bandwidth.

rsync is very powerful and is used by most professionals, however you may want to test it first using non valuable data to ensure the path and options match the requirements.

If you need to use rsync via SSH on a non-standard port like 2222, you can use the following command (see this article):

rsync -avz -e 'ssh -p 2222' /source/path user@desthost:/destination/path/
share|improve this answer
I think rsync is a better solution than ssh for the reason that ring0 has given, i.e it only copies what needs to be copied. So if you need to do this more than once rsync will give you an advantage over straight scp. – Jason Tan Aug 25 '10 at 15:22
rsync is definitly the tool. But about the trailing slash: this is important for the source not for the destination: rsync -a /src/ /dest copies everything under src in dest, rsync -a /src /dest copies src and everything under it to dest/src/. – Oscar Aug 25 '10 at 16:02

You can use scp to copy a directory from one server to the other. First ssh into the source server and issue the following command:

scp -r /some/local/path username@destination:/some/remote/path

To remove the source directory:

rm -r /some/local/path

share|improve this answer
This is almost successfully executing, but on my SSH port is 222, how can I assign port? – ajile Aug 25 '10 at 14:38
scp -P 666 -r /some/local/path username@destination:/some/remote/path – krissi Aug 25 '10 at 14:40
@HWTech: scp -P 222 -r /some/local/path username@destination:/some/remote/path – jscott Aug 25 '10 at 14:45

You're looking for a tar pipe.

share|improve this answer

I wrote an well working answer in another question. It uses SSH-Agent to move a mysql dump:

Combine this with the answer of jscott

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.