scp resume after got disconnected or timeout

I often use the UNIX command line tool scp (secure copy) to copy a file to a remote server. However, scp has one major drawback: It doesn’t support resuming a transfer. So whenever I’m transferring a file and something comes up which interrupts my transfer–which is bound to happen–I’m cursing away at scp. The solution? Use rsync. It is overkill for most things I do, but when a transfer is interrupted, it is handy. Now, on to the doing.

I want to transfer the file “myFile” to the server “remoteMachine”, which I do with scp:

scp myFile remoteMachine:dirToPutIn/

(You should know this already if you’re reading this in the first place.)

(Muzak while the transfer is in progress; a loud wail and the sound of hair being torn out by its roots as the transfer comes to a grinding halt.)

Time to resume the file with rsync, which I do thusly:

rsync --partial --progress myFile remoteMachine:dirToPutIn/

The “–partial” argument is what does the trick. I added “–progress” because I like to see how the transfer is going; rsync understandably doesn’t show this by default as it is mostly used for purposes which don’t require live progress reporting (e.g. scheduled backups).

Because I know I’ll have this problem again at some point, I have created an alias in my shell’s (zsh) configuration file (~/.zshrc):

alias scpresume="rsync --partial --progress"

I know that rsync and scp are not necessarily related, but the name “scpresume” reflects the purpose of the task I wish to do. And getting it done is what matters the most after all.

Jan pointed out in a comment that rsync communication is not secure by default, and that you should use tunneling to achieve secure communication. Andi provides the solution which is quite simple: Use --rsh=ssh (use ssh as the remote shell). Thus, our alias from before would look like this:

alias scpresume="rsync --partial --progress --rsh=ssh"
  • 33 Users Found This Useful
Was this answer helpful?

Related Articles

Setup & disable unused services on CentOS

Step 1: Now we will remove all software groups, to get Centos to a minimum Step 1.1: Run...

install g++ on CentOS

g++ is often necessary for building various packages. But It’s quite hard to install it in...

How to Compress and Uncompress Files with SSH

Login to SSH: 1) To compress files: Examples: tar cvf abc.tar a2.tex adir/* # compress...

Repair all tables on server with SSH

Login to SSH. Try to run this command: mysqlcheck -A -h localhost -u root -r -p It asks mysql...

Search file theo dung lượng

Use this: find / -size +10000 Dùng lệnh trên để tìm các file có dung lượng >= 10MB