破損したファイルを探す

破損したファイルを探す

多数のファイルを含むディレクトリがあります。このディレクトリをコピーしようとすると、ファイルをコピーできない(破損していますか?)というメッセージが表示され、コピーが停止します。

そのディレクトリツリー内のすべてのファイルを確認してコピーできない、または破損したすべてのファイルを一覧表示するために端末に入力できるコマンドはありますか?今はファイルをコピーしたくありません。試してみると、ファイルをコピー/読み取りできないことを確認するためです。

私は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

関連情報