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