編集時間がローカルで抽出されたコンテンツよりも最新の場合にのみ、「wget」を使用してタールボールをダウンロードしてください。

編集時間がローカルで抽出されたコンテンツよりも最新の場合にのみ、「wget」を使用してタールボールをダウンロードしてください。

リモートサーバーに.tgzアーカイブがあります。ファイルがローカルコピーよりも最新の場合にのみファイルをダウンロードしたいと思います。コンテンツ私は持っています。 .tgzの以前のコピーをアーカイブすると使用できますが、wget -N代わりに抽出されたコンテンツのみをアーカイブします。wget -Nコンテンツのコピーのみを保持しながら、同等のアイテムをどのように使用できますか?ソリューションはできるだけクロスプラットフォームでなければなりません。

私が試したことの1つは次のとおりです。

  • 抽出されたコンテンツを一意のディレクトリに保存する
  • ディレクトリのアクセス/変更タイムスタンプをtarballと同じに設定します。
  • 新しいバージョンを確認するときは、touch -r <directory> <tarball>適切なタイムスタンプを使用してターゲットファイルの偽バージョンを作成してください。
  • wget -N

wget -Nしかし、ファイルサイズとタイムスタンプを確認し、私の偽のターボールのサイズが正確ではなかったので失敗しました。

答え1

以前のタールボールを維持したくない理由はありますか?これは本当に最も簡単で確実な方法です。

Linuxでは、dd正しいサイズのファイルを非常に簡単に作成し、それを使用してtouchタイムスタンプを変更できます。


タールボールを削除する前に、タイムスタンプとサイズを保存してください。

wc -c tar.tgz | awk ‘{ print $1 }’ > ref_file
touch -r tar.tgz ref_file

ダミーを正しいサイズに戻します。

dd of=tar.tgz seek=$(cat ref_file) count=0
touch -r ref_file tar.tgz

答え2

wgetの代わりにカールを試すことはできますか?

$ curl --time-cond <directory> --remote-time --output <tarball> <download_url>

--time-cond時間文字列またはファイル名にすることができます。

--remote-timeファイルのダウンロード時間をリモコンと同じに設定してください。

関連情報