route127の日記: 空ディレクトリを除くフォルダツリーのコピー 6
年度が改まって、複数の自治体HPから一揃いずつPDF書類をダウンロードしてくる必要があったが、ダウンロードページから右クリック保存を繰り返すのも面倒で、wgetを利用して再帰ダウンロードをかけていた。
コマンドの投入としてはこんな感じ。
wget URL -r -l1 -Apdf
とりあえず必要な書類は集まったのだが、ページの構成によってはメニューからあさっての方向へリンクを辿って行ってしまう。
ただ再帰のレベル設定とファイル種別をPDFのみとすることで余計なファイルの保存が抑制されてはいる。
リモートのディレクトリ構造は保持したかったので-ndオプションは利用せず、また動作後に空のディレクトリの削除まではしてくれないのでどうしたものかと考えていた。
自前でスクリプトを書いてディレクトリ削除しようかと思ったが自治体ドメインごとに異なるディレクトリ構造について間違いなく動作するスクリプトを書くのも手間がかかるなと思い尻込みしていた。
xcopyコマンドにそんなオプションがないかと見ていたら、ヘルプメッセージにxcopyは非推奨だからrobocopyを使えとの指示があった。
いつの間にそんな前頭葉切除みたいなコマンドが出来ていたのか。
robocopyの/Sスイッチで空ディレクトリはコピーしないことを選択できるので、ディレクトリツリーをこのコマンドでコピーすればコピー先には空ディレクトリのないツリーが複製されるという寸法のようだ。
ところでwgetの動作を見ていて、同一ドメインで複数ファイルをダウンロードする時にはコネクションを再利用する旨メッセージを出していた。
ちょくちょく使ってはいたがそんな賢い動作をするようになってたんだ。
2013年にHTTP/1.0でもコネクションを再利用しにいくというバグ報告がされてるのでだいぶ前からか。
今後HTTP/2.0にも対応していくんだろうか。
Robust File Copy (スコア:1)
確か最初はWindows Server 2003向けのリソースキットとして別途配布されてたんですよね。
サーバーOS限定ではなかったからXPにもインストールすれば使えた。
標準搭載されるようになったのはVistaからかな? いつの間にかクライアントOSでも普通に使えるようになってて驚いた記憶が。
Re:Robust File Copy (スコア:1)
VPN経由での(通信路に信頼性がない)遠隔地へのファイルバックアップに愛用してます。
コピー中はタイムスタンプが1980年になっていて、コピー完了後にタイムスタンプをコピー元に合わせるという挙動なので、
ファイルのコピー途中で強制中断してしまった場合には1980年のファイルが残るから
リトライした時に、「コピー先が古いので上書き更新」してくれるのが便利。
xcopy だと、コピー中は現在のタイムスタンプになるので安心できない。
#robust file copy の略で、robocopyの真ん中のoはどこから来たのかが一番の疑問。
Re:Robust File Copy (スコア:1)
>真ん中のoはどこから来たのか
色々考えてたんですが、robucopyだと強勢が連続して言いづらいから、robustのuがcopyのoに負けてoになったような気がします。
ロシア語のхорошоがハラショーになるみたいな…違うか?
実際のところ英語のストレスルールにはゲルマンとロマンスの2種類あってロマンスストレスルール [keio.ac.jp](RSR)は強勢が右寄りになるようです。
このルールに則って強勢が右にずれ込むと弱化したuではあいまい母音を担えず、綴字もoに変化した…と考えて他の複合語にも似た例がないかと探してみましたが見付けられなかった。
Re:Robust File Copy (スコア:1)
サポート終了OSを使ってる後ろめたさから言いませんでしたがVistaです。
それにしても10年以上前からのコマンドだったのか。
robot copyかと思ってたらrobustなんだな。
前頭葉切除とは新しい (スコア:0)
それlobocopy。(コピーしてるのに切除かよ
route127らしくない (スコア:0)
ExcelファイルいじるにもマクロスルーでわざわざPerl使う人がどうした?
そこはWWW::Curl::Multiじゃねーの?
てか最新版の1.20.2でもHTTP/2未対応な時点で、curl派とwget派の戦いはとっくに決着ついてると思ってたは