145

Is there any way to display a progress bar while copying from server to local (or vice versa) using scp?

4
  • Now i am getting the percentage.But i need a progress bar. May 20, 2011 at 10:13
  • there's a script around but i have no idea how to make it work though May 20, 2011 at 10:46
  • 1
    You might be able to alter this script for a progress bar for 'cp'`: chris-lamb.co.uk/2008/01/24/…
    – Rinzwind
    May 20, 2011 at 11:57
  • scp -r doesn't show progress bar but it gives a percentage of each file Jul 20, 2015 at 20:31

4 Answers 4

140

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/
11
  • 1
    I was going to post something similar but when I tested it, I just got 2741851 0% 700.39kB/s 0:17:21 and no graphical progress bar (what I think the OP wants).
    – Oli
    May 20, 2011 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, 2011 at 12:11
  • 1
    For 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 and man rsync explains the many, many options)
    – sage
    Jun 21, 2014 at 14:10
  • 2
    If 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, 2016 at 12:57
  • 8
    why use rsync while you just need to add -v to scp Apr 21, 2018 at 8:42
124

The -v switch works fine.

Example:

5% 9232KB 357.5KB/s 07:48 ETA

3
  • 4
    It doesn't seem to work when using -3.
    – fuero
    Jul 18, 2018 at 15:54
  • 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." Aug 23, 2019 at 14:42
  • This also doesn't work if you have many smaller files
    – Hakaishin
    Jun 8, 2021 at 8:04
33

As of 2018, progress and ETA are shown by default and could be disabled by -q

7
  • 4
    not on macos, lol! Apr 22, 2019 at 23:54
  • 1
    With 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, 2019 at 8:06
  • 2
    except when using -3 Jul 14, 2020 at 20:16
  • For some reason I can see the progress when I run scp in a terminal, but when it is running as part of a cloud-init script, I don't see any progress (with curl I did see progress)... any idea why? And how to show progress even in a cloud-init process?
    – drmrbrewer
    Dec 4, 2021 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 3, 2023 at 20:03
5

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...

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .