phpのscandirは、結果に.
や..
が含まれる。
ディレクトリをコピーした後、正しくコピーされたかをコピー元とコピー先の内容のサイズ比較によって確認する場合、.
や..
を除いて比較する必要がある。
function getSizeArray($somepath) {
$sizeArray = array();
// ディレクトリ内のファイル一覧を入手。.も..もあるよ
$files = scandir($somepath);
// キー:ファイル名、値:ファイルサイズ
foreach ($files as $file) {
$sizeArray[$file] = filesize($somepath.$file);
}
}
.
.
$srcDirSizeArray = getSizeArray($srcDirpath);
$destDirSizeArray = getSizeArray($destDirpath);
// ダメな例
foreach ($destDirSizeArray as $key => $size) {
if ($srcDirSizeArray[$key] !== $size) {
return false;
}
}
.
.
コピー先ディレクトリの親ディレクトリ..
がコピー元の親ディレクトリと完全に同じにならないならば、ここのサイズがいずれずれることは必然。
こうやって運用環境でしか起こらないバグが生まれていくのか。。
.
や..
を含まないls -A
相当のscandirはないのかね。