フォルダをコピーする方法http://public.me.com/(関連サービスディスクまたは私を動かす) 次の Unix ツールを使用して得る、コマンドライン非対話型ツール)?
問題は、Webインターフェイスが実際には単にファイルを公開するのではなく、複雑なJavaScriptベースであることです。 (でもw3m移動できません。https://public.me.com/rudchenko.)
私の目標は、ローカルコピーを非対話的に更新し、ファイルをダウンロードするコマンドをスクリプトに入れて、他の人がスクリプトを実行してファイルをダウンロードできるようにすることです。
ㅏ得る-良い(同期-良い、子供を引っ張る-like)ツールが私に適しているか、FUSEを介してネットワークファイルシステムをマウントしてから、標準のUnixコマンドを使用してディレクトリをコピーする組み合わせも機能します。
Appleが提供したWikipediaの記事(上記の内容)を読みました。WebDAVアクセス私もこれらのサービスについて読んだ。死体、ㅏ得る- WebDAVクライアントと似ていますが、フォルダにアクセスするためにどのアドレスを使用するのかわかりません。http://public.me.com/読み取り専用(匿名)。
WebDAVが現在使用されていないというGillesの意見は正しいかもしれませんが、まだ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
- 「WebDAV」が言及されています。 (気になる場合は、このURLをパラメータとして再利用してみました。得る、しかし失敗しました:
$ 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.
$
)
(私はGNU / Linuxを使用しています。)
答え1
サーバーがWebDAVの部分的または破損した実装を実行しているようです。次のようなURLにリンクする必要があります。https://public.me.com/ix/rudchenko、通常の URL ではありません。https://public.me.com/rudchenko。複数のクライアントを試してみました。
wget https://public.me.com/ix/rudchenko/directory/filename
通常のHTTPダウンローダ(wgetやカールなど)を使用して名前を知っているファイル(たとえば)をダウンロードできますが、ディレクトリリストを取得することはできません。- ヒューズ DAV私の最初の選択でした、いくつかの欠けているコマンドに対処することができませんでした。明らかにルートディレクトリ(出力に表示されています
fusedav -D
)を一覧表示しましたが、最終的には「PROPFIND failed:404 Not Found」を返し、ロックされるいくつかの要求を実行します。 - ネオジムリストコマンドがありません。
死体うまくいきますが、再帰検索コマンドがありません。これを使用してリストをインポートし、上記のように個々のファイルを検索できます。
完璧ではなく、特にこの場合には1つの問題があります。死体~の
mget
スペースを含むファイル名に拡張されたワイルドカードを持つ引数は処理できません。。- DAFファイルシステム2良い結果。共有をマウントし、ここからファイルをコピーできます。唯一の欠点は、これがFUSEファイルシステムではないため、マウントするにはrootが必要です
/etc/fstab
。 FUSEベースデータファイルシステム-1.4.2-0.M51.1を置き換えます。この場合はうまくいきます。ルートは必要ありません(権限のみが必要です
/dev/fuse
)。mkdir viewRemote wdfs https://public.me.com/ix/rudchenko/ viewRemote rsync -a viewRemote/SEM*TO\ PRINT* ./ fusermount -u viewRemote rmdir viewRemote
(もちろん、この例では単純なcp
代替方法を使用するrsync
ことをお勧めします。rsync
レプリカを更新するときに違いをさらに診断するために選択しました。)
(私はwdfsに加えてDebian squeezeシステムでこのコマンドを試しました。状況は異なる場合があります。)
答え2
コンテンツをダウンロードするための特別なスクリプトとツール(wget-warc
)もあります。https://public.me.com/ユーザーフォルダー——https://github.com/ArchiveTeam/mobileme-grab/blob/master/dld-me-com.sh(そして含まれているリポジトリを確認してください)。 (発見を通じてhttp://archiveteam.org/index.php?title=MobileMe#How_to_help_archiving.)
内部的には、スクリプトはWebDAV要求を作成し、応答を使用しているように見えます。たとえば、次のようになります。
# step 1: download the list of files
if [[ "$domain" =~ "public.me.com" ]]
then
# public.me.com has real WebDAV
# PROPFIND with Depth: infinity lists all files
echo -n " - Discovering urls (XML)..."
curl "https://public.me.com/ix/${username}/" \
--silent \
--request PROPFIND \
--header "Content-Type: text/xml; charset=\"utf-8\"" \
--header "Depth: infinity" \
--data '<?xml version="1.0" encoding="utf-8"?><DAV:propfind xmlns:DAV="DAV:"><DAV:allprop/></DAV:propfind>' \
--user-agent "${USER_AGENT}" \
> "$userdir/webdav-feed.xml"
result=$?
if [ $result -ne 0 ]
then
echo " ERROR ($result)."
exit 1
fi
echo " done."
# grep for href, strip <D:href> and prepend https://public.me.com
grep -o -E "<D:href>[^<]+" "$userdir/webdav-feed.xml" | cut -c 9- | awk '/[^\/]$/ { print "https://public.me.com" $1 }' > "$userdir/urls.txt"
count=$( cat "$userdir/urls.txt" | wc -l )
elif
はい、彼らもhttps://public.me.com/ix/${username}/", 注 "/9/「URLに挿入してください。通常のURLではありません。 -Gilesは彼の答えで同じことを見つけました。。