Чи покаже термінал смужки прогресу, коли я копіюю з "cp"?


33

Чи можливо відображати панель прогресу під час копіювання файлів у Terminal за допомогою cp?


2
… Ви також можете використати rsyncнатомість.
Асмус

Чи є спосіб зробити це за допомогою загальної панелі прогресу без встановлення будь-яких сторонніх інструментів? Може, сценарій чи щось таке?
rraallvv

Відповіді:


49

Ви можете використовувати rsync замість цього.

rsync --progress /copy/from /copy/to

1
Швидкість, яка швидше, rsync чи cp?
daviesgeek

Якщо всі файли, що копіюються, не існують у пункті призначення, я не думаю, що буде помітна різниця. Якщо деякі файли існують у пункті призначення, він буде відрізнятися, оскільки rsync здійснює деяку перевірку. Rsync зазвичай (але не завжди) буде швидшим у такому випадку.
bahamat

2
Використання rsync -P /copy/from /copy/toеквівалентно rsync --partial --progress /copy/from /copy/toвідображенню ходу копіювання, а також відновлення передачі, якщо вона від'єднана.
gh0st

І як CP, йому потрібен -rпрапор, щоб він не пропускав каталоги
Олександр - Відновіть Моніку

21

Під час cp, CtrlTвідображає поточний відсоток (по крайней мере , MacOS)


це круто!
felix021

1
Причина цього працює в тому, що Ctrl-tнадсилає SIGINFOсигнали так само, як і Ctrl-cпередає SIGINTсигнали. Наприклад, ви можете використовувати цикл в іншій оболонці для повторного kill -INFOрозгляду питання, якщо ви не хочете продовжувати натискати клавіші. Оскільки це сигнал, він працює і з іншими утилітами, наприклад dd. Ctrl-tі SIGINFOуспадковуються від BSD.
HTNW

1

Якщо ви копіюєте великі файли або каталоги за допомогою cp, ви можете відкрити "Монітор активності", перейти на вкладку "Диск" і шукати процес "cp". Тут ви можете відстежувати, скільки байтів було написано з моменту останнього завантаження, що дає вам приблизне уявлення про хід. (ОС X 10.10).

Сподіваюся, що це допомагає!


0
#!/bin/sh
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
      | awk '{
        count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]\r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0

Це не ідеально, але це працює ... викиньте його в шлях до каталогу і назвіть його щось подібне ..


Зачекайте ... як я змушу це запустити ???
daviesgeek

2
Я не пам'ятаю, чи мала straceкоманда OS X в той час, коли ця відповідь була написана (липень 2011 року), але це, безумовно, сьогодні.
Тім Руддік

Будь-які ідеї, як запустити це на macOS?
rraallvv
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.