손상된 파일 찾기

손상된 파일 찾기

수많은 파일이 포함된 디렉토리가 있습니다. 이 디렉터리를 복사하려고 하면 파일을 복사할 수 없다는(손상되었나요?) 메시지가 나타나고 복사가 중지됩니다.

해당 디렉토리 트리의 모든 파일을 확인하고 복사할 수 없거나 손상된 모든 파일을 나열하기 위해 터미널에 입력할 수 있는 명령이 있습니까? 지금은 파일을 복사하고 싶지 않습니다. 시도하면 파일을 복사/읽을 수 없는지 확인하기 위한 것입니다.

저는 OS X Mountain Lion을 사용하고 있지만 모든 UNIX 명령이 작동하길 원합니다.

감사해요.

참고: 손상은 읽거나 복사할 수 없는 파일을 의미합니다.

답변1

  1. rsync오류로 인해 종료가 발생하는 경우 종료 지점에서 복제를 다시 시작하는 기능을 사용하여 디렉터리를 복제하는 데 사용할 수 있습니다 rsync.

    rsync의 --dry-run옵션을 사용하면 실제로 아무것도 복사하지 않고도 복사될 내용을 확인할 수 있습니다. --stats옵션 --progress도 유용합니다. 또는 읽기가 --human-readable-h쉽습니다.

    예를 들어

    rsync --dry-run -avh --stats --progress /path/to/src/ /path/to/destination/

    Mac OS X에 rsync가 기본적으로 설치되어 있는지는 확실하지 않지만 Mac에서 사용해 본 적이 있어서 확실히 사용할 수 있다는 것을 알고 있습니다.

  2. 하위 디렉터리의 파일을 읽을 수 있는지 빠르게 확인하려면 grep -r XXX /path/to/directory/ > /dev/null출력이 삭제되므로 검색 정규식은 중요하지 않습니다.

    STDOUT은 /dev/null로 리디렉션되므로 오류만 표시됩니다.

    내가 여기를 선택한 유일한 이유 는 재귀 옵션 grep때문입니다 -r. 이 외에도 grep와 함께 사용할 수 있는 다른 명령이 많이 있습니다 find.

답변2

을 사용하는 프로그램을 작성했습니다 grep.

macOS가 및 옵션을 grep지원하지 않으면 GNU 를 설치하세요.-a-rgrep스스로 만든:

brew install grep

findCorruptedFilesIn기능:

findCorruptedFilesIn () {
    local grep=$(which ggrep 2>/dev/null || which grep)
    time $grep -a -r . "$@" > /dev/null
}

다음과 같이 사용할 수 있습니다.

$ findCorruptedFilesIn Videos/
/bin/grep: Videos/CHRIST/Joel_Osteen/Daily_Wisdom_TV/Positioning_Yourself_to_Prosper_TD_Jakes__18__sICQGp3iIfc__youtube_com.mp4: Input/output error

real    17m25.045s
user    0m0.654s
sys     1m46.749s

관련 정보