imz*_*hev 5 scripting wget webdav hosting-services protocols
如何使用 Unix 工具(如wget,命令行非交互式工具)将文件夹从http://public.me.com/(与iDisk或MobileMe相关的服务)复制到本地文件系统?
问题是 Web 界面实际上是一个复杂的基于 Javascript 的东西,而不是简单地公开文件。(连w3m都不能浏览,比如https://public.me.com/rudchenko。)
我的目标是不时以非交互方式更新本地副本,并将下载文件的命令放到脚本中,以便其他人可以运行该脚本并下载文件。
一个wget的样(rsync的样,混帐拉类似的)工具将适合我,或者安装孔熔丝网络文件系统,然后使用标准的Unix命令的组合来复制的目录就可以了。
我在维基百科文章(我在上面提到的)中读到 Apple 提供了对这些服务的WebDAV 访问,我也读过关于cadaver,一个类似wget的 WebDAV 客户端,但我不知道我是哪个地址应该用于访问http://public.me.com/ 上的文件夹,只读(匿名)。
也许 Gilles 的评论(当前未使用 WebDAV)是正确的,但幕后似乎仍有一些 WebDAV 内容:传递给浏览器的 URL 用于下载带有目录的存档(按下“下载选定的文件后” " 按钮位于 Web 界面顶部)如下所示:
https://public.me.com/ix/rudchenko/SEM%20Sep21%201%20TO%20PRINT.zip?webdav-method=ZIPGET&token=1g3s18hn-363p-13fryl0a20-17ial2zeu00&disposition=download
Run Code Online (Sandbox Code Playgroud)
-- 请注意,它提到了“WebDAV”。(如果你很好奇,我试图重新使用这个 URL 作为wget的参数,但它失败了:
$ LC_ALL=C wget 'https://public.me.com/ix/rudchenko/SEM%20Sep21%201%20TO%20PRINT.zip?webdav-method=ZIPGET&token=1g3s18hn-363p-13fryl0a20-17ial2zeu00&disposition=download'
--2011-11-21 01:21:48-- https://public.me.com/ix/rudchenko/SEM%20Sep21%201%20TO%20PRINT.zip?webdav-method=ZIPGET&token=1g3s18hn-363p-13fryl0a20-17ial2zeu00&disposition=download
Resolving public.me.com... 23.32.106.105
Connecting to public.me.com|23.32.106.105|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2011-11-21 01:21:48 ERROR 404: Not Found.
$
Run Code Online (Sandbox Code Playgroud)
)
(我使用的是 GNU/Linux 系统。)
该服务器显然正在运行部分或损坏的 WebDAV 实现。请注意,您需要连接到类似https://public.me.com/ix/rudchenko 的URL ,而不是普通的 URL https://public.me.com/rudchenko。我尝试了几个客户端:
\n\nwget https://public.me.com/ix/rudchenko/directory/filename),但无法获取目录列表。fusedav -D),但最终运行一些返回 \xe2\x80\x9cPROPFIND failed: 404 Not Found\xe2\x80\x9d 的请求并锁定。Cadaver运行良好,但缺少递归检索命令。您可以使用它来获取列表,然后如上所述检索单个文件。
\n\n它并不完美,并且在这种情况下特别存在一个问题:cadaver无法mget 处理带有扩展为带有空格的文件名的通配符的 args。
/etc/fstab.基于 FUSE 的wdfs -1.4.2- alt0.M51.1在这种情况下工作得很好,不需要 root(仅需要 的权限/dev/fuse)。
mkdir viewRemote\nwdfs https://public.me.com/ix/rudchenko/ viewRemote\nrsync -a viewRemote/SEM*TO\\ PRINT* ./\nfusermount -u viewRemote\nrmdir viewRemote\nRun Code Online (Sandbox Code Playgroud)(当然,在本示例中,使用简单的cp替代方案rsync效果很好;rsync选择它只是为了在更新副本时对差异进行额外诊断。)
(除了 wdfs 之外,我在 Debian squeeze 系统上尝试了这些命令。您的情况可能会有所不同。)
\n| 归档时间: |
|
| 查看次数: |
3759 次 |
| 最近记录: |