リモートサーバーに.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
ファイルのダウンロード時間をリモコンと同じに設定してください。