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?


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

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)


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é!


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 ..


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.