레코드 디렉토리 구조 변경 / 마이그레이션


0

조직화되지 않은 디렉토리 구조에 10 만 개의 파일이있는 대규모 SAN을 상상해보십시오.

파일은 체계적인 디렉토리 구조로 새 SAN으로 이동됩니다. 일부 파일은 이동 될 때 이름이 변경됩니다. 또한 많은 파일에 참조가 있습니다. 예를 들어 Excel 스프레드 시트는 서로 연결되어 있으며 이동 후 끊어집니다.

시작 및 종료 파일 경로의 맵을 유지해야합니다. 예를 들어 깨진 링크를 수정하려면 아카이브를 다시 참조해야합니다.

나는 시장에 아무것도 있지만 운이 없는지 조사하기 위해 연구를했습니다. 따라서 사용자가 파일과 레코드를 SQL dB로 끌어서 놓을 수있는 응용 프로그램을 작성하기 시작했습니다.

여기에 이미지 설명을 입력하십시오

나는이 접근법에 100 % 확신하지 못합니다. 더 좋은 방법이 있는지 아는 사람이 있습니까? Windows에 어떤 것이 있습니까?

  1. 우리는 오래된 디렉토리와 새로운 디렉토리를 스캔하고 그런 식으로 맵을 작성하려고 생각했습니다. 불행하게도 이것은 파일 이름이 변경 될 수 있고 이동 된 파일에 대한 작성 / 수정 등 날짜가 오늘이므로 비행하지 않습니다.

  2. 우리는 각 파일에 고유 식별자가 있다고 생각했지만 다른 파일 유형에 대한 고유 식별자를 어디에 저장하겠습니까?

  3. 아마도 AutoHotKey 스크립트일까요?

답변:


1

클라이언트 중 하나를 위해 C #으로 자동화 된 배포 시스템을 구축했습니다. 이 문제는 규모를 제외하고 비슷하게 보입니다.

ADS에서 처리 된 사항 :

  1. SVN에서 자동 체크 아웃.
  2. 모든 폴더를 탐색하십시오.
  3. 각 폴더는 롤아웃에서 포함 또는 제외 될 수 있습니다.
  4. 폴더가 포함되어 있으면 모든 파일과 하위 폴더도 포함됩니다. 제외도 마찬가지입니다.
  5. 포함과 마찬가지로 각 폴더는 배포 폴더의 새 위치로 재배치 할 수 있습니다.
  6. 모든 것이 드래그 앤 드롭 방식이었습니다. (고맙게도 배포 스크립트를 자주 수정할 필요는 없습니다).
  7. 가장 중요한 부분은 수정 된 파일 만 복사하기위한 이진 파일 비교였습니다. <-이것은 당신에게도 가장 중요한 것 같습니다. C # 또는 perl 코드 파일과 같은 코드 파일 만 다루었으므로 쉽게 확인할 수있었습니다.
    1. 왼쪽과 오른쪽에 파일을 가져 가라
    2. 공백을 모두 제거하십시오.
    3. 한 번에 한 바이트 씩 파일을 비교하십시오.

귀하의 경우 파일이 너무 크지 않은 한 동일한 접근 방식을 사용할 수 있습니다. 파일이 거대하다면 (데이터 파일이라고 가정) 간단한 머리글 / 바닥 글 비교를 수행해야합니다.

우리는 각 파일에 고유 식별자가 있다고 생각했지만 다른 파일 유형에 대한 고유 식별자를 어디에 저장하겠습니까?

이것은 내가 처음부터 시작한 것이지만 내 문제는 심각하지 않아서 폐기했습니다. 기술적으로 각 FileInfo 객체는 GUID 유형의 특정 필드를 가진 특수 클래스로 둘러싸여 있습니다. 이 직렬화 된 클래스 배열을 XML 파일로 저장했습니다.

<FIItem>
    <ID>*some guid*</ID>
    <FileInfoObj>*file info which contains full file path*</FileInfoObj>
</FIItem>

+1 이것은 좋으며 FilePaths 대신 FileInfo (직렬화)를 저장하는 것이 훨씬 좋습니다. 파일의 이진 비교를 수행 할 필요가 없으며 추적하십시오. 이 프로그램은 배포 스크립트를 작성하여 WYSIWYG하지를 즉석에서 일을하려고했지만, 난 동료, 감사 힙이를 소개합니다
제레미 톰슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.