Linux копирование файлов прогресс

How can I make a progress bar while copying a directory with cp?

I suppose I could compare the number of files in the source directory to the number of files in the target directory as cp progresses, or perhaps do it with folder size instead? I tried to find examples, but all bash progress bars seem to be written for copying single files. I want to copy a bunch of files (or a directory, if the former is not possible).

11 Answers 11

You can also use rsync instead of cp like this:

rsync -Pa source destination

Which will give you a progress bar and estimated time of completion. Very handy.

Right, rsync —progress /path/to/origin /path/to/destination is awesome and is available on all systems.

@Allasso Tough to say because there’s so many options and situations which affect it. It can be slower for certain sets files, especially with a small CPU, because it’s analyzing/syncing not copying, and encrypting files (when over a network, iirc). For example see superuser.com/questions/109780/how-to-speed-up-rsync or superuser.com/questions/153176/…

To show a progress bar while doing a recursive copy of files & folders & subfolders (including links and file attributes), you can use gcp (easily installed in Ubuntu and Debian by running «sudo apt-get install gcp»):

Here is the typical output while copying a large folder of files:

Copying 1.33 GiB 73% |##################### | 230.19 M/s ETA: 00:00:07 

Notice that it shows just one progress bar for the whole operation, whereas if you want a single progress bar per file, you can use rsync :

rsync -ah --progress SRC DEST 

gcp is Python-based. PLEASE DO NOT USE IN PRODUCTION. I did not check, but it seems does not support hardlinks, special attributes and so on .

You may have a look at the tool vcp . Thats a simple copy tool with two progress bars: One for the current file, and one for overall.

Most distributions have a package for it.

I was hoping for something that doesn’t require compiling external tools. I just want to see my directory get copied. Is it really so difficult?

@Anonymouse added a second answer, maybe this would be an alternative for you. But thats my last idea 🙁

The members.iinet.net.au/~lynx/vcp link is broken. There seems to be a current fork at github.com/gdm85/curses-vcp with a last commit of May 29, 2016. I was able to compile it just fine on Fedora 23. An independent vcp with a similar concept is at github.com/lynix/vcp but I have not tried it.

Here another solution: Use the tool bar

You could invoke it like this:

#!/bin/bash filesize=$(du -sb $ | awk '< print $1 >') tar -cf - -C $ ./ | bar --size $ | tar -xf - -C $

You have to go the way over tar, and it will be inaccurate on small files. Also you must take care that the target directory exists. But it is a way.

Читайте также:  Connect to linux server terminal

Early on, I thought about tarring the folder before moving it, but thought it would lack too much in elegance. I was wrong. It works as expected and might actually be a better solution in some cases. Thanks!

My preferred option is Advanced Copy, as it uses the original cp source files.

$ wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz $ tar xvJf coreutils-8.21.tar.xz $ cd coreutils-8.21/ $ wget --no-check-certificate wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.8-8.32.patch $ patch -p1 -i advcpmv-0.8-8.32.patch $ ./configure $ make 

The new programs are now located in src/cp and src/mv. You may choose to replace your existing commands:

$ sudo cp src/cp /usr/local/bin/cp $ sudo cp src/mv /usr/local/bin/mv 

Then you can use cp as usual, or specify -g to show the progress bar:

The link to the patch at zwicke.org is broken but it’s on github at github.com/atdt/advcpmv. Perhaps someone with more skills than I will update @elboletaire’s steps.

This should be selected answer. Better progress bar than rsync if copying several files. Better than gcp because reusing standard cp code from coreutils. Advantage of gcp is that it is distributed as a standard package.

Would be worth mentioning that you need to use -g option with this patched cp in order to get the progress bar.

A simple unix way is to go to the destination directory and do watch -n 5 du -s . Perhaps make it more pretty by showing as a bar . This can help in environments where you have just the standard unix utils and no scope of installing additional files . du-sh is the key , watch is to just do every 5 seconds. Pros : Works on any unix system Cons : No Progress Bar

To add another option, you can use cpv . It uses pv to imitate the usage of cp .

It works like pv but you can use it to recursively copy directories

There’s a ubuntu version in apt

pv is not an option because it won’t save permissions or any other file attributes. pv source > dest will give you a nice progress bar but the file dest is not going to be what you want.

find . -type f | pv -s $(find . -type f | wc -c) | xargs -i cp <> --parents /DEST/$(dirname <>) 

It finds all the files in the current directory, pipes that through PV while giving PV an estimated size so the progress meter works and then piping that to a CP command with the —parents flag so the DEST path matches the SRC path.

One problem I have yet to overcome is that if you issue this command

find /home/user/test -type f | pv -s $(find . -type f | wc -c) | xargs -i cp <> --parents /www/test/$(dirname <>) 

the destination path becomes /www/test/home/user/test/. FILES. and I am unsure how to tell the command to get rid of the ‘/home/user/test’ part. That why I have to run it from inside the SRC directory.

Источник

🐧 Альтернативы команды cp на Linux для демонстрации прогресса и скорости

Вы когда-нибудь хотели увидеть скорость и прогресс при копировании файлов с помощью командной строки?

Читайте также:  Remove directory linux command

Для копирования файлов, папок и других данных вы, вероятно, использовали бы команду ditto или «cp», если вы знакомы с командной строкой операционных систем Linux или Unix.

Хотя команды ditto и «cp» полезны, иногда использование простой команды «cp» может занять много времени и утомить.

Параметр «-v» (подробный) в команде «cp» может предоставить вам дополнительную информацию о процессе копирования.

Однако недостатком является то, что эта команда не включает индикатор хода процесса копирования.

В Linux есть другие альтернативные команды, которые могут копировать файлы и папки, показывая ход и скорость процесса копирования. Ниже приведены альтернативные команды:

«Rsync» – одна из лучших команд, которая помогает копировать файлы через терминал.

Объем данных, копируемых из удаленного места назначения, уменьшается при использовании этой утилиты.

Он также используется для создания резервных копий данных, копирования данных между компьютерами и зеркалирования.

Команда «rsync» имеет следующий синтаксис:

$ rsync options Source Destination

Использование опции «-av» с «rsync» – самая простая форма этой команды.

Как показано ниже, данная команда скопирует все файлы, находящиеся в «testfolder», в целевую папку с именем «Downloads»:

$ rsync -av testfolder/ Downloads/

Вывод покажет вам имена файлов, размер отправленного и полученного файла, общий размер файла и скорость процесса копирования.

«–progress» – это флаг, используемый в команде «rsync» для получения общего прогресса скопированного содержимого.

$ rsync -av --progress testfolder/ Downloads/

Еще один флаг, который можно включить в команду «rsync», – «–stats».

Параметр –stats предоставляет более подробную информацию о передаче файлов, такую как количество созданных, удаленных или регулярно передаваемых файлов, общее количество отправленных байтов и общее количество полученных байтов. Запишите приведенную ниже команду, чтобы получить всю информацию, относящуюся к процессу копирования файла.

$ rsync -av --progress --stats testfolder/ Downloads/

2. Команда pv

Вы можете использовать команду «pv» для копирования одного файла, поскольку она предоставляет статистику, относящуюся к прогрессу и скорости.

В следующем случае «pv» выведет «входной файл» в «stdout», который затем перенаправляется в «выходной файл» с помощью оператора «>».

Когда вы это сделаете, он одновременно выведет всю информацию о скорости и прогрессе на терминал.

Файл, скопированный таким образом, будет иметь такие же права, как если бы вы его создали.

3. Команда tar

Если вы хотите скопировать несколько файлов или каталогов, то лучше использовать команду tar в терминале.

Укажите исходную и целевую папки в команде «tar» с параметром «-C» в сочетании с «pv», чтобы просмотреть скорость и ход процесса.

$ tar c testfolder | pv | tar x -C Downloads

4. Команда dd

В терминале команда «dd» используется для копирования или конвертации файлов.

Это свободно доступный инструмент командной строки с открытым исходным кодом.

В приведенной ниже команде мы покажем вам, как использовать команду «dd» для получения статистики копирования файла:

Определите исходную папку в «if» и целевую папку в «of» и установите «progress» в качестве параметра статуса.

$ sudo dd if=inputfile of=/Downloads status=progress

Заключение

В Linux существует несколько альтернатив команде cp для отображения скорости и прогресса процесса копирования файлов или папок.

В этой статье обсуждались команды rsync, pv, tar и dd, которые копируют статистику данных при передаче больших файлов.

Источник

Читайте также:  Astra linux домен недоступен

How to Use DD Show Progress Command in Linux?

Home » SysAdmin » How to Use DD Show Progress Command in Linux?

The dd command-line utility is used to convert and copy files on Unix and Unix-like operating systems. By default, the dd command doesn’t show any output while transferring files.

This could be problematic when copying large files since you cannot monitor the process.

In this tutorial, you will learn how to use the dd command to show progress.

How to Use dd show progress command in linux

  • A system running Linux
  • A user account with sudo or root privileges
  • Access to a terminal window / command line
  • GNU Coreutils version 8.24 or above

Check dd Version

To see the progress bar while copying files and directories with the dd command, you need a version of dd (coreutils) no older than 8.24. Check the version with the command:

Check Coreutils version.

At the time of writing, the latest version of dd (coreutils) is 8.30 as seen in the image above.

Note: If you need to install coreutils, run: sudo apt-get install -y coreutils .

Option 1: Use the dd Command to Show Progress

The basic syntax for using the dd command is:

dd if=/path/to/input of=/path/to/output

However, the default settings do not show a progress bar or any output while the process is taking place.

To see the progress bar, add the status=progress attribute to the basic command:

dd if=/path/to/input of=/path/to/output status=progress

While the system is copying the specified file, it shows the amount of data that has been copied and the time elapsed.

dd command showing progress while copying a file.

Once the process is complete, the terminal displays the total amount of data transferred and the time duration of the process.

Output from dd command showing the process has completed.

Option 2: Use dd Command with pv to Show Progress

The pv command allows a user to see the progress of data through a pipeline. You can use it with the dd command to show the progress of a specified task.

To do so, you need to install pv.

On Ubuntu/Debian systems run:

On CentOS/Redhat systems run:

Install pv on Ubuntu.

To use pv with the dd command follow the syntax:

dd if=/path/to/input | pv | dd of=/path/to/output

After reading this article, you should know how to show progress while running the dd command, with or without the pv command.

Download a free copy of Linux Commands Cheat Sheet to help you with managing your instance of Linux.

Sofija Simic is an experienced Technical Writer. Alongside her educational background in teaching and writing, she has had a lifelong passion for information technology. She is committed to unscrambling confusing IT concepts and streamlining intricate software installations.

Setting file and directory permission properly is important in multi-user systems such as Linux. You can set.

If you want to keep your filesystems clean and without errors, you need to scan it on regular basis. In this.

Want to learn how to copy files in Linux OS? This guide will show you how to use the Linux commands to copy.

Tutorial on securely transferring files between Unix or Linux systems using the SCP command. The SCP or.

Источник

Оцените статью
Adblock
detector