Terminal affichera-t-il une barre de progression lorsque je copie avec "cp"?

33

Est-il possible d'afficher une barre de progression lors de la copie de fichiers dans Terminal à l'aide de cp?

daviesgeek
la source
2
… Vous pouvez également envisager d'utiliser à la rsyncplace.
Asmus
Existe-t-il un moyen de le faire avec une barre de progression globale sans installer d'outils tiers? Peut-être un script ou quelque chose?
rraallvv

Réponses:

49

Vous pouvez utiliser rsync à la place.

rsync --progress /copy/from /copy/to
bahamat
la source
1
Speedwise, qui est plus rapide, rsync ou cp?
daviesgeek
Si tous les fichiers copiés n'existent pas dans la destination, je ne pense pas qu'il y aura une différence notable. Si certains fichiers existent dans la destination, cela variera car rsync effectue une vérification. Rsync sera généralement (mais pas toujours) plus rapide dans ce cas.
bahamat
2
L'utilisation rsync -P /copy/from /copy/toéquivaut à celle rsync --partial --progress /copy/from /copy/toqui affichera la progression de la copie et reprendra le transfert s'il est déconnecté.
gh0st
Et tout comme cp, il a besoin du -rdrapeau pour ne pas ignorer les répertoires
Alexander - Reinstate Monica
21

Pendant cp, CtrlTaffiche le pourcentage actuel (sur macOS au moins)

Vamos
la source
c'est génial!
felix021
1
La raison pour laquelle cela fonctionne est parce que Ctrl-tenvoie des SIGINFOsignaux de la même manière que Ctrl-cenvoie des SIGINTsignaux. Vous pouvez par exemple utiliser une boucle dans un autre shell pour répéter kill -INFOle processus en question si vous ne voulez pas continuer à appuyer sur les touches. Parce que c'est un signal, il fonctionne également avec d'autres utilitaires, par exemple dd. Ctrl-tet SIGINFOsont hérités de BSD.
HTNW
1

Si vous copiez des fichiers ou des répertoires volumineux à l'aide de cp, vous pouvez ouvrir «Moniteur d'activité», allez dans l'onglet «Disque» et recherchez le processus «cp». Ici, vous pouvez garder une trace du nombre d'octets écrits depuis le dernier démarrage, vous donnant une idée approximative de la progression. (OS X 10.10).

J'espère que ça t'as aidé!

Franz
la source
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

Ce n'est pas parfait, mais cela fonctionne ... déposez-le dans un chemin de répertoire et nommez-le quelque chose de similaire ..

Essobi
la source
Attendez ... comment puis-je faire fonctionner ça ???
daviesgeek
2
Je ne me souviens pas si OS X avait une stracecommande au moment où cette réponse a été écrite (juillet 2011), mais ce n'est certainement pas le cas aujourd'hui.
Tim Ruddick
Des idées sur la façon de faire fonctionner cela sur macOS?
rraallvv