Push:

( cd SOURCEDIR && tar cf - . ) | ssh target_address "(cd DESTDIR && tar xpf - )"

 

Pull:

ssh user@source_address "(cd /SOURCEDIR && tar cf - . )" |(cd DESTDIR && tar xpf - )