Just like any other Linux process, you can pause rsync by sending it a TSTP (polite) or STOP (forcible) signal. On the terminal you’ve run rsync in, pressing Ctrl+Z sends TSTP. Resume with the fg or bg command in the terminal or a CONT signal. To resume the rsync where it is interrupted, make sure to pass -P, otherwise rsync will check all files again and process the file it was interrupted on from scratch.
Ex:-
01) execute rsync command with “-P”
1 |
rsync -avhP large-file.tar.gz root@<destination ip>:</tmp/destination_path/> |
more about “-P” option from man page of rsync :
-P
The -P option is equivalent to –partial –progress. Its purpose is to make it much easier to specify these two options for a long transfer that may be interrupted.There is also a –info=progress2 option that outputs statistics based on the whole transfer, rather than individual files. Use this flag without outputting a filename (e.g. avoid -v or specify –info=name0) if you want to see how the transfer is doing without scrolling the screen with a lot of names. (You don’t need to specify the –progress option in order to use –info=progress2.)
Finally, you can get an instant progress report by sending rsync a signal of either SIGINFO or SIGVTALRM. On BSD systems, a SIGINFO is generated by typing a Ctrl+T (Linux doesn’t currently support a SIGINFO signal). When the client-side process receives one of those signals, it sets a flag to output a single progress report which is output when the current file transfer finishes (so it may take a little time if a big file is being handled when the signal arrives). A filename is output (if needed) followed by the –info=progress2 format of progress info. If you don’t know which of the 3 rsync processes is the client process, it’s OK to signal all of them (since the non-client processes ignore the signal).
CAUTION: sending SIGVTALRM to an older rsync (pre-3.2.0) will kill it.
02) pause rsync
Press Ctrl+Z to stop the process.
1 |
1]+ Stopped rsync -avhP large-file.tar.gz root@<destination ip>:</tmp/destination_path/> |
If you kill rsync with Ctrl+C it does stop it mid transfer but it will not keep any temporary files there unless running with the –partial option.
For those also interested in just pausing rsync, if you press Ctrl+Z it pauses the program. When you resume it by running fg or bg rsync will reiterate over the file that it didn’t finish and continue downloading the rest of the files. To see all currently paused programs run jobs
03) To view the jobs
1 2 3 |
-bash-4.2$ jobs [1]+ Stopped rsync -avhP large-file.tar.gz root@: -bash-4.2$ |
so job id is “1”
04) resume rsync process
to resume the job, you may need to pass jobs id as fg command.
1 2 3 4 5 |
-bash-4.2$ fg 1 rsync -avhP large-file.tar.gz root@<destination ip>:</tmp/destination_path/> 18.41G 80% 12.27kB/s 102:05:36 21.43G 93% 4.35MB/s 0:05:36 21.45G 93% 5.48MB/s 0:04:23 |
The general job control commands in Linux are:
- jobs – list the current jobs
fg – resume the job that’s next in the queue
fg %[number] – resume job [number]
bg – Push the next job in the queue into the background
bg %[number] – Push the job [number] into the background
kill %[number] – Kill the job numbered [number]
kill -[signal] %[number] – Send the signal [signal] to job number [number]
disown %[number] – disown the process(no more terminal will be owner), so command will be alive even after closing the terminal.