Je peux déplacer des fichiers avec cette commande:
mv -t /mnt/hdd /home/me/movies/movie1.avi /home/me/movies/movie2.avi
Le problème est que cela ne montre aucun progrès, alors je ne sais pas si l'opération est effectuée à 1% ou à 80%.
Je sais que rsync est capable de montrer des progrès.
Alors, à quoi ressemblerait une variante rsync de la commande ci-dessus, tout en montrant la progression de l'opération?
Je vous remercie
Vous pouvez utiliser Coreutils Progress Viewer progress
. Après l'avoir installé1, envoyez simplement votre processus mv
à l’arrière-plan et fournissez à progress
son PID:
mv -t /path/to/file1 /path/to/file2 & progress -mp $!
Utilisez progress -w
pour afficher une liste de tous les processus coreutils en cours d'exécution avec leur progression. Voir man progress
et ses page github pour plus d'options et d'exemples.
Lectures complémentaires avec beaucoup d'approches différentes:
Comment puis-je déplacer des fichiers et afficher la progression (avec une barre de progression, par exemple)?
1: Si vous utilisez Ubuntu 14.04, vous devrez malheureusement créer le logiciel vous-même, voir la page github liée ci-dessus.
mv
ne renomme que le lien en inode lors du déplacement d'un fichier/répertoire dans le même système de fichiers [partition]mv
copie le fichier/répertoire, puis supprime celui d'origine entre les systèmes de fichiers [partitions].Dans votre exemple, vous passez à un autre système de fichiers. rsync
fera le même travail (copie). Vous pouvez ajouter une commande pour supprimer ultérieurement l’arborescence de répertoires d’origine (lorsque vous êtes certain que la copie a réellement fonctionné). Cela peut être fait en shellscript (qui permet une inspection manuelle, au moins jusqu'à ce que vous vous sentiez en sécurité avec l'opération).
De man rsync
-P The -P option is equivalent to --partial --progress. Its pur‐
pose is to make it much easier to specify these two options for
a long transfer that may be interrupted.
There is also a --info=progress2 option that outputs statistics
based on the whole transfer, rather than individual files. Use
this flag without outputting a filename (e.g. avoid -v or spec‐
ify --info=name0) if you want to see how the transfer is doing
without scrolling the screen with a lot of names. (You don’t
need to specify the --progress option in order to use
--info=progress2.)
Exécutez la même ligne de commande rsync
et, si elle ne transfère rien, les fichiers sont copiés et vous pouvez supprimer les fichiers d'origine ou l'arborescence de répertoires.
Copier avec rsync
$ ls -l
totalt 2064196
-rw------- 1 sudodus sudodus 1921843200 apr 26 18:44 orig.iso
-rw-rw-r-- 1 sudodus sudodus 191889408 maj 23 2016 test.iso
$ rsync --info=progress2 -Ha *.iso /tmp
2,113,732,608 100% 171.10MB/s 0:00:11 (xfr#2, to-chk=0/2)
Chèque (si vous le souhaitez)
$ rsync --info=progress2 -Ha *.iso /tmp
0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=0/2)
Supprimer des fichiers et des répertoires avec
rm -r *.iso # remove the same as the source in the rsync command line
Cela ressemblerait à:
rsync -aP /home/me/movies/movie1.avi /home/me/movies/movie2.avi /mnt/hdd
Exemple:
~ rsync -aP /usr/bin/{free,man} /tmp
sending incremental file list
free
18,808 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=1/2)
man
107,008 100% 102.05MB/s 0:00:00 (xfr#2, to-chk=0/2)