Czy Terminal pokaże pasek postępu, gdy kopiuję z „cp”?

33

Czy można wyświetlić pasek postępu podczas kopiowania plików w Terminalu przy użyciu cp?

daviesgeek
źródło
2
… Możesz również rozważyć użycie rsynczamiast tego.
Asmus
Czy można to zrobić za pomocą ogólnego paska postępu bez instalowania narzędzi innych firm? Może scenariusz czy coś takiego?
rraallvv

Odpowiedzi:

49

Zamiast tego możesz użyć rsync.

rsync --progress /copy/from /copy/to
bahamat
źródło
1
Speedwise, co jest szybsze, rsync lub cp?
daviesgeek
Jeśli wszystkie kopiowane pliki nie istnieją w miejscu docelowym, nie sądzę, że będzie zauważalna różnica. Jeśli niektóre pliki istnieją w miejscu docelowym, będzie się różnić, ponieważ rsync wykonuje pewne sprawdzanie. W takim przypadku Rsync zwykle (ale nie zawsze) będzie szybszy.
bahamat
2
Użycie rsync -P /copy/from /copy/toodpowiada ekwiwalentowi, rsync --partial --progress /copy/from /copy/toktóry wyświetli postęp kopiowania, a także wznowi przesyłanie, jeśli zostanie odłączone.
gh0st
I podobnie jak CP, potrzebuje -rflagi, aby nie pomijać katalogów
Alexander - Przywróć Monikę
21

Podczas cp, CtrlTwyświetla bieżący Odsetek (na Macos przynajmniej)

Vamos
źródło
to cudownie!
felix021
1
Powodem tego jest to, że Ctrl-twysyła SIGINFOsygnały w taki sam sposób, jak Ctrl-cwysyła SIGINTsygnały. Możesz np. Użyć pętli w innej powłoce, aby wielokrotnie powtarzać kill -INFOdany proces, jeśli nie chcesz ciągle naciskać klawiszy. Ponieważ jest to sygnał, działa również z innymi narzędziami, np dd. Ctrl-ti SIGINFOsą dziedziczone z BSD.
HTNW
1

Jeśli kopiujesz duże pliki lub katalogi za pomocą cp, możesz otworzyć „Monitor aktywności”, przejść do zakładki „Dysk” i poszukać procesu „cp”. Tutaj możesz śledzić, ile bajtów zostało napisanych od ostatniego rozruchu, co daje ogólny obraz postępu. (OS X 10.10).

Mam nadzieję, że to pomaga!

Franz
źródło
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

To nie jest idealne, ale działa ... upuść to w ścieżce katalogu i nazwij to coś podobnego ...

Essobi
źródło
Zaraz ... jak mogę to uruchomić?
daviesgeek
2
Nie pamiętam, czy OS X miał stracepolecenie w momencie pisania tej odpowiedzi (lipiec 2011 r.), Ale na pewno tak nie jest dzisiaj.
Tim Ruddick,
Wszelkie pomysły, jak uruchomić to na macOS?
rraallvv