Linux가 아닌 파일 시스템에서 파일을 복사할 때 특정 파일 형식에 대한 올바른 권한을 자동으로 설정합니다.

Linux가 아닌 파일 시스템에서 파일을 복사할 때 특정 파일 형식에 대한 올바른 권한을 자동으로 설정합니다.

내가 이것을 원하는 주된 이유는 내가 그것을 많이 사용하기 때문입니다 dircolors. 예를 들어 NTFS에서 파일을 복사 ls --color=auto할 때마다 대부분의 최신 배포판에서 표준 값이 되어야 하는 .mp3권한이 설정됩니다 . umask 022그러나 오디오 파일의 경우 이는 의미가 없습니다. 권한이 755( rwxr-xr-x)로 설정되어 있으므로 오디오 파일과 동일한 색상을 갖게 됩니다.실행 가능한 쉘 스크립트, 실제 실행 파일에 대해서는 이 색상을 유지하고 싶습니다. 이것은아니요창; 심지어그리고x./track1.mp3소유자/그룹/기타에 대해 설정된 권한은 터미널에서 작동할 것으로 기대할 수 없으므로 기본 콘솔 플레이어를 선택하려고 시도합니다.

그래서 나는 umask단지보컬파일, 즉 .mp3, .wav, .ogg 등과 같은 모든 파일의 모드는 항상 로 설정되어 있지만 644이 위치에 복사된 다른 모든 파일의 기본 모드는 umask입니다 022.

이를 수행할 수 있는 방법이 있습니까?
(참고: cp --preserveNTFS는 *NIX 권한 시스템에 대해 아무것도 모르기 때문에 NTFS에 대한 원래 권한도 보존되지 않습니다.)

답변1

사용자 정의 명령의 자체 스크립트를 사용하여 cp파일 확장자를 확인하고 chmod적절하게 사용할 수 있습니다.

다음과 같이 간단하게 수행할 수 있습니다. (@fd0에 따라 cp chmod 대신 install을 사용하십시오. 어쨌든 더 똑똑합니다.)

#!/bin/bash

args=("$@")
dest="${args[@]:(-1)}"
unset args[${#args[@]}-1]

if [ ! -d "$dest" ]; then
    echo "Please specify a destination directory as the final argument."
    exit 1
fi

for file in "${args[@]}"; do
    if [ "$file" == *".mp3" ] || [ "$file" == *".wav" ] || [ "$file" == *".ogg" ];  then
        install -m644 "$file" "$dest"
    else
        install -m755 "$file" "$dest"
    fi
done

exit 0

답변2

NTFS에서 복사하려면 설치 도구를 사용하겠습니다.

install -m644 file1 ... fileN destination_directory

관련 정보