You should be using rsync to do this.
Directly from their site:
rsync is a file transfer program for Unix systems. rsync uses the "rsync
algorithm" which provides a very fast method for bringing remote files into
sync. It does this by sending just the differences in the files across the
link, without requiring that both sets of files are present at one of the
ends of the link beforehand.
Some features of rsync include
* can update whole directory trees and filesystems
* optionally preserves symbolic links, hard links, file ownership,
permissions, devices and times
* requires no special privileges to install
* internal pipelining reduces latency for multiple files
* can use rsh, ssh or direct sockets as the transport
* supports anonymous rsync which is ideal for mirroring