web-dev-qa-db-fra.com

Comment surveillez-vous les progrès de DejaDup?

J'ai l'application "Backup" DejaDup qui sauvegarde mon dossier personnel sur un disque dur externe USB crypté, mais cela prend des heures. Le bouton "Sauvegarder maintenant" de l'interface graphique est grisé, ce qui indique qu'il est en cours d'exécution et Gnome dit "démarrer la sauvegarde planifiée". Cependant, je ne sais pas combien de temps cela devrait prendre. Est-il possible d'obtenir des informations sur les progrès de DejaDup?

Le haut indique que le processus de duplicité est en cours d'exécution avec l'option --log-fd=16. La page de manuel de Duplicity indique qu'il s'agit du descripteur de fichier du fichier journal sur lequel il écrit les mises à jour de statut. Cependant, si je lance tail -f 16, j'obtiens l'erreur tail: no files remaining. Comment lire ce descripteur de fichier journal?

3
Cerin

Je pense que vous pouvez le surveiller comme ceci:

avec ps, obtenez le PID et le log fd, par ex.

$ ps aux | grep duplicity
username  12345 97.2  4.9 878235 345123 ?       Rsl  02:21  15:02 python2 /usr/bin/duplicity --exclude=/run/media/..... --tempdir=/home/username/.cache/deja-dup/tmp --log-fd=18

Le PID est 12345 et le descripteur de fichier est 18.

Ensuite, allez à /proc/PID/fd (/proc/12345/fd) et au lieu d'essayer de redéfinir le descripteur de fichier 18, utilisez cat ou grep.

$ cat 18

Cela montre beaucoup trop d'informations pour moi. 90% sont mes globs d'exclusion.

$ grep "examining path" 18

fonctionne bien pour voir quel fichier est en cours d’examen. Si vous regardez le résultat, vous pouvez également vous concentrer sur le moment où il trouve que les fichiers correspondent (sans avoir besoin de les sauvegarder) ou lorsqu'ils sont différents.

6
Richard Schwarting

Sur la base de la solution fournie par @RichardSchwarting, j’ai créé la commande suivante qui vérifie si le processus est en cours d’exécution et effectue le chat sur /proc/x/fd/y:

pid=$(pgrep -n duplicity); if [ $pid ]; then fd=$( ps -o cmd --no-headers $pid | sed -E 's/.+(log-fd=[0-9]+).?/\1/' | cut -f2 -d =); if [ $fd ]; then cat /proc/$pid/fd/$fd; else echo "fd not found"; fi else echo "pid not found"; fi
4
Clauds