
정리되지 않은 디렉터리 구조에 10만 개의 파일이 있는 대규모 SAN을 상상해 보십시오.
파일은 디렉터리 구조가 정리된 새 SAN으로 이동됩니다. 일부 파일은 이동되면 이름이 변경됩니다. 또한 많은 파일에는 참조가 있습니다. 예를 들어 Excel 스프레드시트는 서로 연결되어 있으며 이동 후에는 끊어집니다.
예를 들어 깨진 링크를 수정하기 위해 아카이브를 다시 참조해야 하는 경우를 대비하여 From 및 To 파일 경로의 맵을 유지해야 합니다.
시중에 뭔가가 있는지 알아보기 위해 조사를 해봤지만 운이 없었습니다. 따라서 저는 사용자가 파일과 레코드를 SQL dB로 끌어서 놓을 수 있는 애플리케이션을 작성하기 시작했습니다.
이 접근 방식에 대해 100% 확신할 수는 없습니다. 이 작업을 수행하는 더 좋은 방법이 있는지 아는 사람이 있습니까? Windows에 뭔가가 있나요?
우리는 이전 디렉토리와 새 디렉토리를 스캔하고 그런 식으로 지도를 작성하려고 생각했습니다. 불행하게도 파일 이름이 변경될 수 있고 이동된 파일의 생성/수정 등 날짜가 오늘이 되기 때문에 이는 실행되지 않습니다.
우리는 각 파일에 고유 식별자를 두려고 생각했지만 다양한 파일 형식에 대한 고유 식별자를 어디에 저장할 것인지에 대한 아이디어는 전혀 관심을 끌지 못했습니다.
아마도 AutoHotKey 스크립트일까요?
답변1
내 클라이언트 중 하나를 위해 C#으로 자동화된 배포 시스템을 구축했습니다. 이 문제는 규모를 제외하면 비슷해 보입니다.
ADS에서 처리된 사항:
- SVN에서 자동 체크아웃.
- 모든 폴더를 탐색합니다.
- 각 폴더는 롤아웃에 포함되거나 제외될 수 있습니다.
- 폴더가 포함되면 모든 파일과 하위 폴더도 포함됩니다. 배제도 마찬가지다.
- 포함과 마찬가지로 각 폴더는 배포 폴더의 새 위치로 재배치될 수 있습니다.
- 모든 것이 드래그 앤 드롭 방식이었습니다(다행히 배포 스크립트를 자주 수정할 필요가 없습니다).
- 가장 중요한 부분은 수정된 파일만 복사하기 위한 바이너리 파일 비교였습니다. <-- 이것이 당신에게도 가장 중요한 것 같습니다. 저는 C#이나 Perl 코드 파일과 같은 코드 파일만 다루었기 때문에 이는 쉽게 확인할 수 있었습니다.
- 왼쪽과 오른쪽에서 파일 가져오기
- 공백을 모두 제거하세요.
- 한 번에 1바이트씩 파일을 비교합니다.
귀하의 경우 파일이 상당히 크지 않는 한 동일한 접근 방식을 사용할 수 있습니다. 파일이 큰 경우(데이터 파일이라고 가정) 간단한 머리글/바닥글 비교로 문제를 해결할 수 있습니다.
우리는 각 파일에 고유 식별자를 두려고 생각했지만 다양한 파일 형식에 대한 고유 식별자를 어디에 저장할 것인지에 대한 아이디어는 전혀 관심을 끌지 못했습니다.
저도 이런식으로 시작했는데 문제가 그렇게 심각하지 않아서 폐기했습니다. 기술적으로 각 FileInfo 개체는 GUID 유형의 특정 필드가 있는 특수 클래스로 래핑되었습니다. 저는 이 직렬화된 클래스 배열을 XML 파일에 저장하고 있었습니다.
<FIItem>
<ID>*some guid*</ID>
<FileInfoObj>*file info which contains full file path*</FileInfoObj>
</FIItem>