Is there any way to display a progress bar while copying from server to local (or vice versa) using scp?
- 70,465
- 1,825
-
Now i am getting the percentage.But i need a progress bar. – Abdul Shajin May 20 '11 at 10:13
-
there's a script around but i have no idea how to make it work though – Uri Herrera May 20 '11 at 10:46
-
1You might be able to alter this script for a progress bar for 'cp'`: http://chris-lamb.co.uk/2008/01/24/can-you-get-cp-to-give-a-progress-bar-like-wget/ – Rinzwind May 20 '11 at 11:57
-
scp -r doesn't show progress bar but it gives a percentage of each file – spyderman4g63 Jul 20 '15 at 20:31
4 Answers
I don't think that this can be done with scp. Last time I needed something like this i.e. progress shown, I used rsync instead. It shows progress in a bar-like manner. See if it works for you.
You will need to use the --progress option of rsync. You can use the following command:
rsync -r -v --progress -e ssh user@remote-system:/address/to/remote/file /home/user/
-
1I was going to post something similar but when I tested it, I just got
2741851 0% 700.39kB/s 0:17:21and no graphical progress bar (what I think the OP wants). – Oli May 20 '11 at 11:58 -
1@Oli: I think its because you are copying a very small file. Copying ends before rsync can show progress. If you copy a bigger file then you should get a progress bar. – binW May 20 '11 at 12:11
-
5341184 7% 301.09kB/s 0:03:42
I am getting like this.But it showing the remaining time..really helpful – Abdul Shajin May 20 '11 at 12:17 -
1For anybody who was looking for cp with progress bar, rsync works great locally, so this answers that question also! (Just leave off the
-e ssh user@remote-system:for a local copy andman rsyncexplains the many, many options) – sage Jun 21 '14 at 14:10 -
rsync works great and I use it for such things. If you get
protocol version mismatch, make sure the target machine's .bashrc isn't printing anything to stdout. – Sridhar Sarnobat Jan 09 '16 at 01:58 -
2If you want to connect to a different SSH port than the default, you can use something like
rsync -avz --progress -e 'ssh -p 1223' [email protected]:/foobar.txt ./my-local-copy.txt– damd Aug 23 '16 at 12:57 -
rsync -Pave "ssh -p 1223" [email protected]:/foobar.txt ./my-local-copy.txt – David Okwii Mar 14 '17 at 13:13
-
From man
Typically, rsync is configured to use ssh by defaultso i guess no need for-e ssh– To Kra Mar 22 '17 at 11:19 -
8
-
@SamirSabri, adding
-vtoscpshows the SSH debug messages too. That might be too much information for OP. – user38537 Mar 17 '19 at 02:55 -
FWIW,
rsyncoutputs the progress to/dev/stderr, with each update to the progress being "overwritten" with\r. In my backup script where I have XFS dumps SCP to the backup host, I use2>&1to write the progress to the log file.cating orlessing the log file doesn't display the progress correctly, so usingsed 's_\r_\n_g' XfsBackup.logshows each progress update on its own line. – user38537 Mar 17 '19 at 03:03
The -v switch works fine.
Example:
5% 9232KB 357.5KB/s 07:48 ETA
- 1,383
- 1
- 8
- 11
-
4
-
9@fuero
man scp: "-3 Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote hosts. Note that this option disables the progress meter." – The Guy with The Hat Aug 23 '19 at 14:42 -
As of 2018, progress and ETA are shown by default and could be disabled by -q
- 420
- 4
- 4
-
4
-
1With this, do you mean overall progress or on a per-file basis? I only see it on a per-file basis in my freshly installed Debian 9. – mazunki May 15 '19 at 08:06
-
2
-
For some reason I can see the progress when I run
scpin a terminal, but when it is running as part of acloud-initscript, I don't see any progress (withcurlI did see progress)... any idea why? And how to show progress even in acloud-initprocess? – drmrbrewer Dec 04 '21 at 14:41 -
@Drachenfels at least as of the latest macOS (Ventura at the moment), it does show the progress and ETA by default. – Ben Baron Jan 03 '23 at 20:03
-
-
Xubuntu 20.04, copying locally from USB to USB device, with -pr and -l for rate limiting => no it doesn't, there's no progress displayed. – Don Joe Aug 08 '23 at 16:00
I don't know how to do this in a command line. I'm sure it's possible but there is a graphical method for doing this.
Nautilus (the default file browser in Ubuntu) can mount ssh/sftp servers. They act like a local filesystem after that and you can copy files around like you normally would. And you get the usual progress bar that you would with a normal copy.
Look under the File menu for Connect to server...
- 293,335