Comment afficher la progression et la vitesse du transfert lors de la copie de fichiers avec cp?

Sinon, existe-t-il un utilitaire de ligne de commande alternatif qui peut y parvenir?

Alors cp n'a pas cette fonctionnalité, vous pouvez utiliser pv pour ce faire,:

pv my_big_file > backup/my_big_file

Remarque: cette méthode perdra les autorisations et la propriété du fichier. Les fichiers copiés de cette manière auront les mêmes autorisations que si vous les aviez créés vous-même et vous appartiendront.

Dans cet exemple, pv fondamentalement, affiche simplement le fichier sur stdout*, que vous redirigez vers un fichier en utilisant le > opérateur. Simultanément, il imprime des informations sur la progression vers le terminal lorsque vous faites cela.

Voici à quoi ça ressemble:

stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file 138MB 0:00:01 [73.3MB/s] [=================================>] 100% 

Vous pourriez avoir besoin de & nbsp;Installer pv (alternativement, tapez sudo apt-get install pv) sur votre système.


*: Le bit technique

Il existe trois flux de données importants dans un système de type Unix: stdout (sortie standard), stderr (erreur standard) et stdin (entrée standard). Chaque programme a les trois, pour ainsi dire. Le > l'opérateur de redirection redirige la sortie du programme vers un fichier. Sans arguments, comme vous le voyez ci-dessus, > redirige un programme sortie standard vers un fichier. cp fondamentalement, ne fait rien de plus chic que

cat source > destination

(où cat lit simplement un fichier et l'imprime sur stdout). pv c'est comme cat, mais si vous redirigez son flux de sortie ailleurs, il imprimera les informations de progression sur stdout à la place.

Jetez un oeil à man pv pour en savoir plus à ce sujet.


Une autre option, comme alt textPar suggère dans cette réponse, est d'utiliser rsync à la place:

$ rsync -ah --progress source-file destination-filesending incremental file listsource-file        621.22M  57%  283.86MB/s    0:00:01

Cela préservera les autorisations/la propriété des fichiers tout en affichant la progression.

Il n'y en a pas. Voir ici quant à savoir pourquoi. Bien qu'il fasse plus que ce dont vous avez besoin, rsync a un --progress paramètre. Le -a conservera les autorisations, etc., et -h sera lisible par l'homme.

rsync -ah --progress source destination

La sortie ressemblera à ceci:

Pictures/1.jpg      2.13M 100%    2.28MB/s    0:00:00 (xfr#5898, to-chk=1/5905)Pictures/2.jpg      1.68M 100%    1.76MB/s    0:00:00 (xfr#5899, to-chk=0/5905)

Si vous voulez voir si vos fichiers sont transférés correctement, vous pouvez utiliser gcp et gcp est comme cp mais par défaut vous donne une barre de progression afin que vous puissiez voir ce qui est copié. Comme le programme notes du wiki, gcp possède plusieurs fonctionnalités utiles telles que

  • indication de progression de transfert
  • copie continue en cas d'erreur (passer au fichier suivant)
  • journalisation de l'état de copie: gcp enregistre toutes ses actions afin qu'il soit possible de savoir quels fichiers ont été copiés avec succès
  • modification du nom pour gérer les limitations du système de fichiers cible (par exemple, suppression des caractères incompatibles " * " ou "?"sur la GRAISSE)

Cependant, même lorsque la barre de progression a atteint 100% lors de l'utilisation de l'outil, vous devez attendre que l'invite de votre terminal réapparaisse avant de retirer votre support en toute sécurité afin de vous assurer que le processus de transfert est terminé avec succès.

gcp est utilisé pour copier des fichiers et a des options telles que --preserve afin que divers attributs et autorisations puissent être préservés et --recursive pour que des répertoires entiers puissent être copiés. Plus d'informations sur ses options peuvent être trouvées en entrant man gcp ou en allant au Pages de manuel Ubuntu en ligne. Un tutoriel est également disponible sur ce site.

Installer gcp à partir des dépôts avec

sudo apt-get install gcp

(Note: dans Ubuntu 12.10, le nouveau point de montage automatique est, par exemple, /media/user/usbdisk)

Vous pouvez copier un fichier sur votre support en entrant

gcp /home/mike/file.mp4 /media/usb

et copiez un dossier sur votre support avec

gcp -rv ~/Podcasts /media/Mik2

Échantillon de sortie de gcp avec la barre de progression:

gcp ~/Videos_incIplayer/mars.flv /media/Mik2Copying 168.57 MiB 100% |########################################################|   7.98 M/s Time: 00:00:22

Vous pouvez bien sûr spécifier plusieurs fichiers ou dossiers à copier sur votre disque, et il existe de nombreuses autres options couvertes dans man gcp.

Je reçois un coup de pied d'utiliser cURL dans ce but précis. La page de manuel répertorie le protocole "FICHIER" comme pris en charge, il suffit donc de l'utiliser comme n'importe quel autre protocole dans une URL:

curl -o destination FILE://source

Vitesse, progression, temps restant, et plus encore all le tout dans un format familier.

Il existe un outil appelé progress dans les référentiels, il est capable d'examiner différentes commandes et d'afficher les informations de progression pour elles.

Installez-le à l'aide de la commande

sudo apt-get install progress

Cet outil peut être utilisé comme ça:

cp bigfile newfile & progress -mp $!

Sortie:

[11471] cp /media/Backup/Downloads/FILENAME.file         29.9% (24.2 MiB / 16 MiB)

Bien qu'il n'affiche pas la vitesse, lors de la copie de plusieurs fichiers, le -v option pour le cp la commande vous fournira des informations sur la progression. par ex.

cp -rv old-directory new-directory

Le noyau connaît la plupart des données telles que la vitesse, et souvent aussi le pourcentage. Les noyaux modernes l'exposent via leur système de fichiers /proc.

afficher la vitesse à partir de https://github.com/jnweiger/showspeed utilise cette information. Il peut s'attacher à des programmes déjà en cours d'exécution et donner des mises à jour périodiques comme celle-ci:

$ dd if=bigfile of=/tmp/otherbigfile &$ showspeed dddd looks like a process name. pid=4417 matches av0=dd.p/4417/fd/0r /home/jw/bigfile 113MB/s (12%, 2.3GB)  9m:35p/4417/fd/1w /tmp/otherbigfile 182MB/s (2.6GB)p/4417/fd/0r /home/jw/bigfile 285MB/s (15%, 3.0GB)  8m:08p/4417/fd/0r /home/jw/bigfile 115MB/s (16%, 3.2GB)  8m:01p/4417/fd/0r /home/jw/bigfile 107MB/s (17%, 3.4GB)  7m:39p/4417/fd/1w /tmp/otherbigfile 104MB/s (3.5GB)p/4417/fd/0r /home/jw/bigfile 139MB/s (19%, 3.7GB)  7m:37p/4417/fd/0r /home/jw/bigfile 116MB/s (20%, 3.9GB)  7m:18p/4417/fd/1w /tmp/otherbigfile  67MB/s (4.0GB)p/4417/fd/1w /tmp/otherbigfile 100MB/s (4.1GB)...

Alors pv peut traiter avec les locaux cp tâches, en utilisant dd avec pv peut traiter à la fois local (cp) et à distance (scp) tâche.

dd if=path/to/source.mkv | pv | dd of=path/to/dest.mkv

Veuillez vous assurer que le path/to/dest.mkv sorties par touch path/to/dest.mkv

Cela peut montrer la progression, mais si vous voulez les informations de pourcentage,

dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv

Remplacer 100M ci-dessus avec la taille réelle de votre fichier source.

Voici la Partie Distante

Alors scp peut difficilement montrer les progrès actuels, en utilisant dd avec pv c'est un morceau de gâteau.

ssh onemach@myotherhost dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv

Si vous avez rsync 3.1 ou supérieur (rsync --version), vous pouvez copier (cp-Rpn) tout en préservant les autorisations et la propriété, récurser les répertoires, "pas de clobber" et afficher la progression globale( au lieu de simplement progresser par fichier), le taux de copie et le temps restant estimé (très approximatif) avec:

sudo rsync -a --info=progress2 --no-i-r /source /destination

Notez que sudo n'est nécessaire que si vous traitez des répertoires/fichiers que vous ne possédez pas. Aussi, sans le --no-i-r, le pourcentage peut être réinitialisé à un nombre inférieur à un moment donné au cours de la copie. Peut-être que les versions ultérieures de rsync auront par défaut no-i-r avec info=progress2, mais ce n'est pas le cas dans la version actuelle de 3.1.2.

J'ai constaté que le pourcentage et le temps restant sont largement surestimés lors de la copie dans un répertoire contenant déjà des fichiers (ie. comme lorsque vous utiliseriez généralement cp-n "no clobber").

Il existe un nouvel outil appelé cv qui peut trouver n'importe quel descripteur lié à une commande en cours d'exécution et afficher la progression et la vitesse:https://github.com/Xfennec/cv

cv -w

affiche les statistiques de tous les cp,mv en cours d'exécution, etc. opérations

Question en double: Is it possible to see cp speed and percent copied? - Unix & Linux Stack Exchange

Dans le cas où vous avez déjà commencé la commande “cp” et que vous ne voulez pas l’arrêter maintenant, vous pouvez “regarder” la taille de la destination augmenter comme ceci: command line - How to show the transfer progress and speed when copying files with cp? - Ask Ubuntu (“regardez” du-hs"), pour savoir que ça grandit vraiment et que la copie fonctionne.