Cygwin での wget 権限とダウンロード ディレクトリの変更

Cygwin での wget 権限とダウンロード ディレクトリの変更

Windows 7 64 ビット PC に Cygwin をインストールしており、wget を使用して大きなファイルを頻繁にダウンロードします。ただし、wget は、Windows 実行可能ファイル (.exe または .msi) の場合、すべてのファイルを実行できない権限で保存します。これらのファイルを自動的に実行できるように権限を設定する方法はありますか? 保存先の既定のディレクトリを変更することもできますか? 現在、ファイルは cygwin フォルダーに保存されていますC:\cygwin64\home\Brentonが、 に保存したいと思いますC:\Users\Brenton\Downloads

わかりやすくするために、これらのファイルを保存した後、手動で目的のディレクトリに移動する方法を知っています(たとえば、次のようにします。

mv filename C:\Users\Brenton\Downloads

ここで、filename は転送する必要があるファイル名です)。また、次の方法で権限を手動で変更する方法も知っています。

chmod 755 filename

しかし、私が欲しいのは、今後 wget 経由でダウンロードされるすべてのファイルが、希望する権限で希望するディレクトリにダウンロードされるような自動的な方法です。

答え1

宛先ディレクトリ

-P prefix/--directory-prefix=prefixオプションを使用してwget 、特定のディレクトリに保存するように指示できます。

ディレクトリ プレフィックスを に設定しますprefix。ディレクトリ プレフィックスは、他のすべてのファイルとサブディレクトリが保存されるディレクトリ、つまり取得ツリーの最上位です。デフォルトは.(現在のディレクトリ) です。

ダウンロード ディレクトリに 1 つのファイルを保存する例:

wget -p $(cygpath -u "C:\Users\Brenton\Downloads") http://host.name/setup.exe

ファイルの権限

私のシステムでは、 Cygwin ホーム ディレクトリにファイルをダウンロードするときに、ファイルに期待どおりの権限が付与されるようumaskに設定されています。0022wget-rw-r--r--

ただし、WindowsDownloadsディレクトリにダウンロードすると、実行権限が設定されます。理由はわかりませんが、何らかの形で権限が NTFS ACL によって影響されているのではないかと思います。この動作は、システム上でも有利に働く可能性があります。その場合は、次のような単純なシェル エイリアスを使用できます。

alias wget-exe='wget -P $(cygpath -u "C:\Users\Brenton\Downloads") '

推奨シェルスクリプト/関数

wget-exeそれでも権限を変更する必要がある場合は、次のコードをシェル スクリプトまたは関数 ( のような名前)の基礎として使用できます。

#!/bin/sh
downloads=$(cygpath -u "C:\Users\Brenton\Downloads")
wget -P "$downloads" "$@"

dir="$PWD"
cd "$downloads"
chmod 755 *.exe *.msi
cd "$dir"
# Alternative version using find to change permissions of all .msi and .exe files
# downloaded in the last day.
# find "$downloads" -mtime -1 \( -name '*.exe' -o -name '*.msi' \) -print0 | xargs -0 chmod +w

関連情報