I am regularly copying big files over the internet via rsync
, and since I am travelling a lot, I don't generally have access to stable internet connection, so I end-up rerunning the command multiple times until it succeeds.
Turns out there is a better way. Of course you could use while
and test the return of the command, but that sounds like a lot of work for a ad hoc command. But I am lazy and I recently discovered that an until
command exists!
Pretty straightforward to use:
$ until <put your command here>; do echo "Retrying at `date -Iminutes`"; done
So with rsync
you get:
$ until rsync -aP src:/path/to/src dest/; do echo "Retrying at `date -Iminutes`"; done
And if you are really lazy, just create an alias (left as an exercise ;) ).
This post was originally published on mayeu.me.
Top comments (4)
To maximize laziness, you can make it into a function called
retry()
and have the rsync command as the first argument.Yup, but I'm too lazy to maximize my laziness :D
Anyway, if somebody is wondering, something like that should do it (ugly, may be unsafe, you are warned):
How about this CLI tool - github.com/nvbn/thefuck
Hey, thank you for your reply :)
This is not really the same,
thefuck
correct spelling errors of the previous command you do. While usinguntil
will perpetually re-run the command until the exit code is0
(i.e.: until it is a success).In the case of
rsync
that allow you to continue the download until it succeed :)