您如何监控 DejaDup 的进度?

Cer*_*rin 4 backup deja-dup

我有“备份”DejaDup 应用程序将我的主文件夹备份到加密的外部 USB 硬盘驱动器,但这需要几个小时。GUI 的“立即备份”按钮变灰,表示它正在运行,并且 Gnome 说“开始计划备份”。但是,我不知道需要多长时间。有没有办法从 DejaDup 获取进度信息?

顶部显示双重进程正在使用选项运行--log-fd=16。Duplicity 的联机帮助页表明这是它写入状态更新的日志文件的文件描述符。但是,如果我运行,则会tail -f 16收到错误消息tail: no files remaining。如何读取此日志文件描述符?

小智 8

我认为你可以像这样监控它:

使用 ps,获取 PID 和日志 fd,例如

$ 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
Run Code Online (Sandbox Code Playgroud)

PID 为 12345,文件描述符为 18。

然后/proc/PID/fd (/proc/12345/fd)使用 cat 或 grep,而不是尝试尾随文件描述符 18。

$ cat 18
Run Code Online (Sandbox Code Playgroud)

这对我来说显示了太多信息。其中 90% 是我的排除球。

$ grep "examining path" 18
Run Code Online (Sandbox Code Playgroud)

非常适合查看正在检查的文件。如果您查看输出,您还可以关注它何时发现文件匹配(并且不需要备份)或它们何时不同。


小智 5

根据@RichardSchwarting 提供的解决方案,我创建了以下命令,用于检查进程是否正在运行,并执行 cat on /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
Run Code Online (Sandbox Code Playgroud)