15

I was transferring several thousand files each ~1MB via scp and my connection was broken after the first 2k files or so. I wanted to know if there was a way to resume the recursive transfer w/o starting over. Something like

$ scp -r me@host.com:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P me@host.com:/datafiles/ ./
... Continue transf...

The problem is I can't seem to get the syntax correct if it is possible. Can anyone shed some light on if/how it can be done?

PS. If you specify the slash after "datafiles" in the rsync line, does that transfer the directory or its contents? I saw conflicting comments when I googled.

4 Answers4

12

The following line should do the trick for that:

rsync --partial --progress --rsh=ssh -r me@host.com:/datafiles/ ./

I've never used this for recursive directories before, but when I texted it just now it seemed to work as expected.

Tyler
  • 221
12

if you are rsyncing from a local machine to a remote host, this would work:

rsync -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/
kibitzer
  • 236
2

Merging kibitzer's and Tyler's answers worked best for me:

rsync --partial --progress -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

(rsyncing recursively and showing progress of each file)

Tarc
  • 181
1

The rsync command you listed would work, if you only added "-r". but you would also most likely want "-a" and "-v".

And about the trailing slash, me@site.com:/data/ is equivalent to /data/*, in other words, if you add a slash, it copies all the contents. but me@site.com:/data would be the directory itself [and naturally, its subfolders]

Matt
  • 787