Sinon, existe-t-il un autre utilitaire de ligne de commande capable d’atteindre cet objectif?
la source
Sinon, existe-t-il un autre utilitaire de ligne de commande capable d’atteindre cet objectif?
Bien que cp
vous n'ayez pas cette fonctionnalité, vous pouvez utiliser pv
ceci:
pv my_big_file > backup/my_big_file
Remarque: cette méthode perd 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 appartiendraient.
Dans cet exemple, pv
le fichier est simplement sorti sur stdout *, que vous redirigez vers un fichier à l'aide de l' >
opérateur. Simultanément, il imprime des informations sur la progression sur le terminal lorsque vous le faites.
Voici à quoi ça ressemble:
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
138MB 0:00:01 [73.3MB/s] [=================================>] 100%
Vous devrez peut-être installer pv (alternativement, taper 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. L' >
opérateur de redirection redirige la sortie du programme vers un fichier. Sans arguments, comme vous le voyez ci - dessus, >
réoriente d'un programme sur la sortie standard dans un fichier. cp
fondamentalement ne fait rien de plus chic que
cat source > destination
(où cat
juste lit un fichier et l’imprime sur stdout). pv
est comme cat, mais si vous redirigez son flux de sortie ailleurs, il affichera les informations de progression sur stdout.
Jetez un coup d'oeil man pv
pour en savoir plus à ce sujet.
Une autre option, comme le suggère DoR dans cette réponse , consiste à utiliser rsync à la place:
$ rsync -ah --progress source-file destination-file
sending incremental file list
source-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.
pv
ne la même manière que gère pas les autorisationscp
ne ... (basé sur un test rapide j'ai essayé:pv
ne pas copier le bit d' exécution à travers ..rsync
. A faitalias cp="rsync -avz"
cp est obsolète.pv
ça, vous pouvez aller fouiner/proc/PID of cp/fd
et/proc/PID of cp/fdinfo
comprendre le progrès. (C'est à vous d'inférer la vitesse.) J'utilise cette technique pour regarderupdatedb
.-z
ne devrait probablement être utilisé que pour les copies réseau; la compression et la décompression des données pour une copie locale est une simple surcharge.rsync
ne pas ajouter de fin/
au chemin source (ou de le supprimer si, par exemple, l'achèvement de bash le met là automatiquement). Sinon, vous obtiendrez des résultats différents de ceux obtenus aveccp
(ougcp
).Il n'y a pas. Voir ici pour savoir pourquoi. Bien qu'il fasse plus que ce dont vous avez besoin, il
rsync
possède un--progress
paramètre. Le-a
conservera les autorisations, etc., et-h
sera lisible par l'homme.La sortie ressemblera à ceci:
la source
-r
drapeau pour recurse répertoires. Il peut même être aliasé en remplacement direct de cp:alias cp="rsync -ah --progress"
--progress
me fait tourner la tête, je regarde tout l’affichage de la sortie dans le terminal. Donc, ceux qui viennent ici à partir de recherches par mot-clé AOLrsync -ah --info=progress2 [source] [destination]
présentent la sortie de manière un peu plus saine, à mon humble avis.Si vous voulez voir si vos fichiers sont correctement transférés, vous pouvez utiliser
gcp
etgcp
ressemble à cp, mais vous obtiendrez par défaut une barre de progression vous permettant de voir ce qui est copié. Comme le note le wiki du programme ,gcp
a plusieurs fonctionnalités utiles telles queCependant, même lorsque la barre de progression a atteint 100% lors de l'utilisation de l'outil, vous devez attendre que votre invite de terminal réapparaisse avant de retirer votre média en toute sécurité pour pouvoir vous assurer que le processus de transfert s'est terminé avec succès.
gcp
est utilisé pour copier des fichiers et comporte des options--preserve
permettant, par exemple, de conserver divers attributs et autorisations et de copier--recursive
des répertoires entiers. Pour plus d’informations sur ses options, consultezman gcp
ou en consultant les pages de manuel Ubuntu en ligne . Un tutoriel est également disponible sur ce site .Installer à
gcp
partir des référentiels avec( Remarque : 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
et copier un dossier sur votre support avec
Exemple de sortie
gcp
avec la barre de progression:Vous pouvez bien sûr spécifier plusieurs fichiers ou dossiers à copier sur votre disque, et de nombreuses autres options sont couvertes dans
man gcp
.la source
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
export DISPLAY=:0.0
avant de démarrer gcp. Si la machine est sans tête, vous devrez alors démarrer une xsession dans un framebuffer virtuel ou quelque chose dugcp
est assez décent, mais l’exigence DBUS / X est étrange. J'ai géré cela sur SSH en utilisant le transfert ssh:ssh -X user@host
et cela m'a permis de l'exécuter.J'adore utiliser cURL dans ce but précis. La page de manuel répertorie le protocole "FILE" comme supporté, donc utilisez-le comme n'importe quel autre protocole dans une URL:
Vitesse, progrès, temps restant et plus encore - le tout dans un format familier.
la source
pv
ne pas enregistrer les autorisations.Bien qu’elle n’affiche pas la vitesse, lors de la copie de plusieurs fichiers, l’
-v
option de lacp
commande vous fournira des informations sur la progression. par exemplela source
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.
showspeed à partir de https://github.com/jnweiger/showspeed utilise ces informations. Il peut s'attacher aux programmes en cours d'exécution et donner des mises à jour périodiques comme ceci:
la source
pkill -USR1 dd
pour fairedd
montrer son statut, une autre option seraitwatch -n 1 pkill -USR1 dd
de le faire montrer ses progrès périodiquement (chaque seconde).Il existe
progress
dans les référentiels un outil capable d’examiner diverses commandes et d’afficher des informations sur leur progression.Installez-le en utilisant la commande
Cet outil peut être utilisé comme ça:
Sortie:
la source
Alors que
pv
peut traiter descp
tâches locales , utiliserdd
avecpv
peut traiter à la fois les tâches locales (cp
) et distantes (scp
).S'il vous plaît assurer les
path/to/dest.mkv
sorties partouch path/to/dest.mkv
Cela peut montrer la progression, mais si vous voulez les informations de pourcentage,
Remplacez
100M
ci-dessus par la taille réelle de votre fichier source.Voici la partie distante
Alors que
scp
peut difficilement montrer les progrès actuels, utiliserdd
avecpv
est un morceau de gâteau.la source
dd
astatus=progress
: askubuntu.com/a/824895/52975Il existe un nouvel outil appelé cv qui peut rechercher n’importe quel descripteur associé à une commande en cours et afficher les progrès et la vitesse: https://github.com/Xfennec/cv.
affiche les statistiques pour toutes les opérations en cours de cp, mv, etc.
la source
watch cv -q
est encore plus proprecp
un répertoire est copié de manière récursive ou non.Comme beaucoup l'ont dit, cp n'inclut pas cette fonctionnalité.
Juste pour lancer mon 0,02 $, ce que je fais habituellement avec des situations de copie triviales (c'est-à-dire non
-R
):Voyez la taille du fichier et rappelez-vous
Commencer à copier
Ouvrir un autre terminal
Exécuter
watch ls -lh DIR
sur le répertoire où se trouve la cibleCela peut me tenir au courant de la taille du fichier cible, avec un minimum de tracas.
Comme alternative aux situations moins triviales, telles que la copie récursive de répertoires, vous pouvez utiliser
watch du -hs DIR
pour afficher un résumé de la taille du répertoire DIR. Cependant, la durée de calcul peut être longue et peut même ralentir la copie. Vous pouvez donc utiliser un-n INTERVAL
argument pour observer les compromis, afin que le compromis soit acceptable.Mise à jour: Si vous utilisez des wild-cards avec la commande utilisée avec watch, par exemple
watch du -hs backup/*
, n'oubliez pas de citer:sinon les cartes sauvages seront étendues qu'une seule fois , lorsque la montre est commencé si du ne regardera pas de nouveaux fichiers / sous - répertoires.
la source
dd status=progress
Option ajoutée dans GNU Coreutils 8.24+ (Ubuntu 16.04):
Le terminal affiche une ligne de type:
Voir aussi: Comment surveillez-vous la progression de jj?
la source
Si vous avez rsync 3.1 ou supérieur (
rsync --version
), vous pouvez copier (cp-RPN) tout en préservant les autorisations et les droits de propriété, les répertoires récursifs, "aucun éclatement" et afficher la progression générale très approximatif) le temps restant restant avec:Notez que sudo n’est nécessaire que s’il s’agit de répertoires / fichiers qui ne vous appartiennent pas. En outre, sans le
--no-i-r
, le pourcentage peut être réinitialisé à un nombre inférieur à un moment donné pendant la copie. Peut-être que les versions ultérieures de rsync utiliseront par défaut no-ir 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 étaient largement surestimés lors de la copie dans un répertoire contenant déjà des fichiers (c'est-à-dire comme lorsque vous utiliseriez généralement cp -n "no clobber").
la source
Utilisez un script shell:
Cela ressemblera à:
La source
la source
Selon ce que vous voulez faire, Midnight Commander (
mc
) peut être la solution. Je suis surpris que cela n'ait pas encore été mentionné.Des outils tels que
pv
oursync
sont utiles pour afficher la progression du transfert d’un fichier volumineux, mais lorsqu’il s’agit de copier des répertoires / arbres entiers,mc
calcule la taille puis affiche très bien la progression. De plus, il est disponible immédiatement sur la majorité des systèmes.la source
une option supplémentaire pour préserver les attributs pourrait être (si
source
c'est un dossier, il sera créédestination
)espérons que cela pourra être utile à quelqu'un. Pour avoir une estimation du temps de transfert, cela peut être obtenu en le faisant
do -s source
à l’avance et en le passant comme-s <size>
paramètre àpv
.la source
-f -
est redondant.tar
La sortie par défaut pourc
et l'entrée pourx
sont stdout et stdin.Vous pouvez copier utiliser n'importe quel programme. Dans le même temps, vous pouvez démarrer
sudo iotop
et voir la vitesse de lecture / écriture du disque, mais sans progrès.la source
Vérifiez le code source de progress_bar dans le référentiel git ci-dessous
https://github.com/Kiran-Bose/supreme
Essayez également le package de script bash personnalisé suprême
Téléchargez le fichier deb et installez-le dans une distribution debian ou téléchargez les fichiers source, modifiez-le et utilisez-le pour d'autres distributions
Aperçu de la fonctionnalité
(1) Ouvrez les applications ---- Firefox ---- Calculatrice ---- Paramètres
(2) Gérer les fichiers ---- Rechercher ---- Naviguer ---- Accès rapide
(3) Gérer le téléphone ---- Déplacer / Copier depuis le téléphone ---- Déplacer / Copier vers le téléphone ---- Synchroniser les dossiers
(4) Gérer l'USB ---- Déplacer / Copier depuis l'USB ---- Déplacer / Copier vers l'USB
la source
pv sait comment regarder les descripteurs de fichier avec un pid, que ce soit cp ou autre chose
De la documentation:
Exemple:
la source