Is there any way to display a progress bar while copying from server to local (or vice versa) using scp?
- 69,223
- 56
- 216
- 327
- 1,775
- 3
- 14
- 16
-
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:21` and 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 and `man rsync` explains 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' root@google.com:/foobar.txt ./my-local-copy.txt` – damd Aug 23 '16 at 12:57
-
rsync -Pave "ssh -p 1223" root@google.com:/foobar.txt ./my-local-copy.txt – David Okwii Mar 14 '17 at 13:13
-
From man `Typically, rsync is configured to use ssh by default` so i guess no need for `-e ssh` – To Kra Mar 22 '17 at 11:19
-
8
-
@SamirSabri, adding `-v` to `scp` shows the SSH debug messages too. That might be too much information for OP. – user38537 Mar 17 '19 at 02:55
-
FWIW, `rsync` outputs 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 use `2>&1` to write the progress to the log file. `cat`ing or `less`ing the log file doesn't display the progress correctly, so using `sed 's_\r_\n_g' XfsBackup.log` shows 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,323
- 1
- 8
- 11
-
4
-
8@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
- 400
- 3
- 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 `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 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...
- 289,791
- 117
- 680
- 835