
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
. 디렉토리 접두어는 다른 모든 파일과 하위 디렉토리가 저장될 디렉토리, 즉 검색 트리의 상단입니다. 기본값은.
(현재 디렉터리)입니다.
다운로드 디렉터리에 단일 파일을 저장하는 예:
wget -p $(cygpath -u "C:\Users\Brenton\Downloads") http://host.name/setup.exe
파일 권한
내 시스템에서는 Cygwin 홈 디렉터리에 파일을 다운로드하는 데 사용할 때 예상대로 파일에 권한이 있도록 umask
설정되어 있습니다 .0022
wget
-rw-r--r--
그러나 Windows Downloads
디렉터리에 다운로드하면 실행 권한이 설정됩니다. 이유는 잘 모르겠지만 권한이 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