0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

追記型のファイルの新しい部分だけダウンロードする

Posted at

課題

例えば、計測機器はデータを同一ファイル(CSV等)へ追記していくものが多い。この場合、機器から定期的にデータを取り出すには、繰り返してそのファイルをダウンロードする必要がある。しかしこの時ファイルの上部、つまり取得済み部分は毎回送って欲しくない。なぜなら、ムダな通信にあたるから。

対策

wget では "-c" を付ければ、新しい追加部分だけのダウンロードが可能で、通信量を減らすことができる。(注意点あり)

説明

オプション -c(--continue) は、ダウンロード中断の再開時に使用されるが、
https://www.gnu.org/software/wget/manual/wget.html
にも詳しく記述されているように、「受け入れディレクトリにリモートファイルと同じ名前のローカルファイルが存在するなら、それをリモートファイルの上部であるとみなして、そのバイトサイズだけオフセットさせた部分のみをダウンロードしてローカルファイルの後方へ追加させる」という動作をするオプションである。
つまり「追記されたデータやログの新しい部分だけ取得できる。」
fig1.png

もちろん、ファイルサイズが意図せず変化するとズレるので、

  1. ダウンロードしたファイルを移動、変更しないこと
  2. ダウンロード元のファイルの上部が変更されないこと
  3. 転送中断時にそのシグナルをファイルに挿入(未確認)されるケースがあること

が注意点である。

追記

一方 curl は、"-C -"を付ける。なお、こちらはオフセット量を変更することもできるそうです。両方知りませんでしたのでメモ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?