![是否可以看到 dropboxd 现在正在同步什么?](https://linux22.com/image/1542762/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%20dropboxd%20%E7%8E%B0%E5%9C%A8%E6%AD%A3%E5%9C%A8%E5%90%8C%E6%AD%A5%E4%BB%80%E4%B9%88%EF%BC%9F.png)
Linux 上 dropboxd 的 dropbox.py 脚本将提供当前状态:
$ dropbox.py status
Syncing (2,656 files remaining)
Uploading 2,656 files...
或者特定文件或当前文件夹的状态:
$ dropbox.py filestatus
Camera Uploads: up to date
Customer Shares: syncing
但是有没有办法查看现在正在传输的文件是什么?
我之所以问这个问题,是因为 Dropbox 已经卡住了好几天,无法同步,但没有任何进展。我怀疑它卡在了某个异常大或损坏的文件上,如果我能识别它,我就可以删除/忽略它。
笔记
$ ls -l /proc/7857/fd
其中 7857 是 dropbox 的 pid,同步路径中没有显示任何文件。
请注意,要求停止 dropboxd 并使用调试器重新执行不会显示正在传输的内容现在。停止并启动守护进程会导致重新索引并重新开始同步。这可能会导致传输一组不同的文件。
有什么建议么?
答案1
如果你使用的是 Linux,那么这很容易。在同步过程中,你可以执行以下操作:
find $HOME/dropbox_sync_dir -type f -exec dropbox.py file status -a '{}' \; | grep 'syncing'
解释细节:
find <path> -type f -exec dropbox.py ... '{}' \;
dropbox.py
在每个文件上或当前目录下 运行。
请注意,括号括在单引号中,以防止它们被解释为 shell 脚本标点符号。分号也同样使用反斜杠进行保护,尽管在这种情况下也可以使用单引号。
更多关于男人找到页面
dropbox.py file status -a
来自dropbox Linux 客户端手册:dropbox file status [-l] [-a] [FILE]… Prints the current status of each FILE. Options: -l or --list prints out information in a format similar to the native Linux command ls. -a or --all do not ignore entries starting with "."
别名包括 stat。
| grep 'syncing'
搜索“同步”字符串。
注意:.py 结尾不是强制性的,应该有一个别名,所以只写就dropbox
足够了。
第一次编辑- 根据 Paul 关于 dropboxd(守护进程)与 dropbox.py 的评论重新编辑。
这仍然是查明正在传输什么内容的最可能的方法。
当我完成未完成的任务时,我会尝试自己调试它。
应该通过(python 调试器)dropbox.py
进行调试,更多信息请见pdb
python 调试器。
最后,在保罗的评论之后,我明白了问题的核心在哪里。他想看到当前访问的文件甚至更好被转移的通过 dropbox 同步客户端。
您可以找到当前使用的 dropbox 客户端使用的所有文件:
ls -thal /proc/`pgrep dropbox`/fd | egrep -v 'socket:|pipe:|anon_inode|/dev/'
如果你什么都看不到,那就意味着客户端可能有问题。我建议执行斯特拉斯。
To monitor your dropboxd script with output save into output.txt file: `strace -o output.txt dropboxd` To monitor only system calls you could enter: `strace -e open dropboxd`
如果你想更深入地了解,你可以附加一个调试器例如
gdb
您的strace
会话。如果你不熟悉这个过程,你可以检查一下,例如,这个不错的邮政关于 unix
strace
和gdb
。
只是一个快速帮助:
当您使用以下命令开始跟踪时:(strace dropboxd
运行 pid 为 501)然后您按以下方式附加到它:
$ gdb --quiet
(gdb) attach 501
- 如果其他所有方法都失败了,您可以使用其他方式同步您的 Dropbox:
例如,使用不同的 CLI 客户端,如命令行工具。
第二次编辑和第四次编辑- 直到 dropbox 支持自己的私钥时才起作用。
Dropbox 支持人员的回答:
Dropbox 不支持创建您自己的私钥。
我突然想到,甚至可以通过像这样的网络监控工具来检查传输的内容wireshark
。
由于 Dropbox 客户端使用 SSL/TSL(或 AES)Dropbox 安全架构你应该有钥匙可以检查。
有关如何使用的详细信息,wireshare
您可以查看https://wiki.wireshark.org/SSL
或调整此示例以适合您的情况分析 SSL/TLS 客户端 Hello 流量。如果您有 Dropbox 证书,您可以将其导入 wireshark 以查看发生了什么。(有关 Dropbox 安全详细信息,您可以查看Dropbox 安全白皮书。
第三次编辑和第四次编辑- 有关 SSL/TSL 解密的详细信息。(直到 Dropbox 支持自己的私钥时才起作用。)
Dropbox 支持人员的回答:
Dropbox 不支持创建您自己的私钥。
在第二个编辑部分,我建议你可以通过 wireshark 查看 SSL 流量。由于 Paul 认为我建议你实际上应该破解DH key exchange
,而就目前的知识而言这是不可能的,所以我想纠正它。
我想建议的是,如果你使用Dropbox 业务 RSA和 RSA 身份验证,您可以尝试使用dropboxd with RSA key
(守护进程 dropboxd 是闭源的,我无法检查源代码是否存在该功能,可能最好的解决方案是直接询问 dropbox.com)。
如果可能的话,才RSA key
导入wireshark查看当前正在传输的内容。