읽기 전용 디렉터리가 포함된 디렉터리 트리 삭제

읽기 전용 디렉터리가 포함된 디렉터리 트리 삭제

읽기 전용 디렉터리를 실행 rm -rf dir하고 dir포함하면 해당 디렉터리의 파일을 삭제할 수 없습니다.

우선 rm이 디렉토리를 인식하고 쓸 수 있게 만드는 방법이 있습니까 ?chmod

먼저 할 수도 있지만 chmod -R o+w dir필요할 때만 하는 것보다는 속도가 느릴 것입니다.

답변1

우선 rm이 디렉토리를 인식하고 쓸 수 있게 만드는 방법이 있습니까 ?chmod

rm명령을 사용하려면 디렉터리에서 파일과 디렉터리를 삭제하기 위해 디렉터리에 대한 쓰기 권한이 필요합니다.

당신의 선택은

  • 쓸 수 없는 디렉터리에 쓸 수 있도록 권한 수정( chmod -R u=rwx {toplevel_directory}; rm -rf {toplevel_directory})
  • 암시적 쓰기 액세스 권한을 얻으려면 루트 권한을 사용하십시오(실제로 권장되지는 않습니다 sudo rm -rf {toplevel_directory}).

rm속도 최적화에 많은 관심을 갖고 있다면 첫 번째 실패 시에만 재시도하는 스크립트나 함수를 작성할 수 있습니다 .

rm-rf() {
    local item rs=0 ss=0

    for item in "$@"
    do
        if [ -e "$item" ]
        then
            rm -rf "$item"
            rs=$?

            if [ $rs -gt 0 ]
            then
                # Try again
                chmod -R u=rwx "$item" 2>/dev/null
                rm -rf "$item" 2>/dev/null && rs=0
            fi

            [ $rs -eq 0 ] && echo "Removed: $item" >&2
        else
            echo "Skipping: $item" >&2
            rs=1
        fi

        # Count the number of failed arguments
        [ $rs -gt 0 ] && ((ss++))
    done
    return $ss
}

관련 정보