KR101974288B1 - 공유 폴더 및 파일의 동기화 - Google Patents

공유 폴더 및 파일의 동기화 Download PDF

Info

Publication number
KR101974288B1
KR101974288B1 KR1020177007988A KR20177007988A KR101974288B1 KR 101974288 B1 KR101974288 B1 KR 101974288B1 KR 1020177007988 A KR1020177007988 A KR 1020177007988A KR 20177007988 A KR20177007988 A KR 20177007988A KR 101974288 B1 KR101974288 B1 KR 101974288B1
Authority
KR
South Korea
Prior art keywords
file
remote
shared
local
folder
Prior art date
Application number
KR1020177007988A
Other languages
English (en)
Other versions
KR20170044718A (ko
Inventor
아만 아메드 페낭왈라
리차 세갈
스코트 앤서니 플랜트
노아 아이스너
케빈 조지 질레트
보리슬라브 안드루슈크
스티븐 조셉 오클리
아룬 포니아 세투라말린감
Original Assignee
아마존 테크놀로지스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20170044718A publication Critical patent/KR20170044718A/ko
Application granted granted Critical
Publication of KR101974288B1 publication Critical patent/KR101974288B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

원격 및 로컬 파일 시스템 내의 공유 폴더들 및 파일들을 동기화하기 위한 방법은 원격 및 로컬 파일 시스템 상태를 결정하는 단계를 포함한다. 원격 파일 시스템 상태는 공유 폴더들, 공유 하위 폴더들, 공유 파일들, 공유 하위 레벨 파일들, 및 공유 숏컷들의 원격 인스턴스들용의 원격 해시 값들을 포함한다. 로컬 파일 시스템 상태는 공유 폴더들, 공유 하위 폴더들, 공유 파일들, 공유 하위 레벨 파일들, 및 공유 숏컷들의 로컬 인스턴스들용 로컬 해시 값들을 포함한다. 상기 방법은 원격 파일 시스템 상태와 로컬 파일 시스템 상태를 비교하여 원격 파일 시스템 상태 및 로컬 파일 시스템 상태 내의 해시 값들의 임의의 차이를 결정하는 단계 및 로컬 파일 시스템 및 원격 파일 시스템 간에서 원격 파일 시스템 상태 및 로컬 파일 시스템 상태에서 상이한 값을 갖는 임의의 공유 폴더, 공유 하위 폴더 또는 공유 파일을 동기화하는 단계를 또한 포함한다.

Description

공유 폴더 및 파일의 동기화{SYNCHRONIZATION OF SHARED FOLDERS AND FILES}
클라우드 컴퓨팅이 증가됨에 따라, 사용자가 파일들 및 폴더들을 원격 컴퓨터 또는 원격 컴퓨터들의 어레이와 관련된 원격 메모리 내에 백업하기 위한 능력이 급격히 증가되어 왔다. 소정의 상황에서, 원격 메모리 내의 파일들 및 폴더들에 대한 액세스는 다른 컴퓨팅 장치들을 통해 추가 사용자들에게 허여될 수 있다. 따라서, 파일들 및 폴더들은 원격 메모리를 통해 다수의 사용자 및 사용자 장치 간에서 공유될 수 있다.
또한, 개별 사용자는 원격으로 저장되는 특정 파일의 카피를 다운로딩하고, 그 특정 파일을 편집하며, 편집된 파일을 원격 메모리에 업로딩할 수 있다. 그런 다음, 편집된 파일은 다수의 사용자의 특정 컴퓨팅 장치들을 통해 다수의 사용자와 공유될 수 있다.
첨부된 도면들을 참조하여 상세한 설명이 설명된다. 도면들에서, 참조번호의 가장 왼쪽의 숫자(들)는 참조번호가 가장 먼저 보이는 도면을 식별한다. 상이한 도면들에서의 동일한 참조번호들은 유사 또는 동일한 항목들을 표시한다.
도 1은 공유 폴더들 및 파일들을 동기화하기 위한 시스템을 도시하고 있다.
도 2는 예시적인 파일 시스템을 도시하고 있다.
도 3은 예시적인 폴더를 도시하고 있다.
도 4는 파일들 및 마스터 해시 리스트(master hash list)를 원격 파일 시스템에 업로딩하기 위한 예시적인 공정의 흐름도를 도시하고 있다.
도 5는 공유 폴더들 및 파일들을 동기화하기 위한 예시적인 공정의 흐름도의 제1 부분을 도시하고 있다.
도 6은 공유 폴더들 및 파일들을 동기화하기 위한 예시적인 공정의 흐름도의 제2 부분을 도시하고 있다.
도 7은 로컬 파일 시스템으로부터의 파일들을 공유하기 위한 예시적인 공정의 흐름도를 도시하고 있다.
도 8은 원격 파일 시스템으로부터의 파일들을 동기화하기 위한 예시적인 공정의 흐름도를 도시하고 있다.
도 9는 폴더 트리 및 하위 폴더 트리를 트래버싱(traversing)하여 동기화를 위한 파일 변화들을 탐색하기 위한 예시적인 공정의 흐름도를 도시하고 있다.
본원에서는, 원격 파일 시스템과 다수의 로컬 파일 시스템 간에서 공유 폴더들 및 파일들을 동기화하기 위한 시스템들 및 공정들이 설명된다. 특정 측면에서, 본 공유 폴더 및 파일 동기화 시스템은 하나 이상의 로컬 파일 시스템의 현재 상태 및 원격 파일 시스템의 현재 상태를 결정할 수 있는 상태 기반 시스템이다. 그 후, 각 로컬 파일 시스템의 현재 상태가 원격 파일 시스템의 현재 상태와 비교되어 차이점이 존재하는지의 여부를 결정할 수 있다. 차이점이 존재할 경우, 공유 폴더 및 파일 동기화 시스템은 특정 로컬 파일 시스템, 원격 파일 시스템, 또는 양쪽 시스템에서 필요할 수 있는 콘텐츠의 변화들을 결정하여, 각각의 해당 파일 시스템들이 동일한 콘텐츠를 포함하고 서로의 복제물들이 될 수 있게 한다. 개시된 기술들의 일부 실시형태는, 예를 들면 문서 협업 환경에서 사용될 수 있다.
로컬 파일 시스템 및 원격 파일 시스템은 특정 공유 데이터 구조들 내에 저장된 콘텐츠를 포함할 수 있다. 공유 데이터 구조들은 공유 폴더들, 공유 하위 폴더들, 공유 파일들, 공유 하위 레벨 파일들, 공유 숏컷들(shortcuts), 또는 그들의 조합을 포함할 수 있다. 각 공유 폴더는, 실질적으로 동일해야 하고 동기화가 수행된 후에 동일한 콘텐츠를 포함해야 하는 공유 폴더의 로컬 인스턴스 및 공유 폴더의 원격 인스턴스를 포함할 수 있다. 각 공유 하위 폴더는, 실질적으로 동일해야 하고 동기화가 수행된 후에 동일한 콘텐츠를 포함해야 하는 공유 하위 폴더의 로컬 인스턴스 및 공유 하위 폴더의 원격 인스턴스를 포함할 수 있다. 또한, 각 공유 파일은, 실질적으로 동일해야 하고 동기화가 수행된 후에 동일한 콘텐츠, 또는 데이터를 포함해야 하는 공유 파일의 로컬 인스턴스 및 공유 파일의 원격 인스턴스를 포함할 수 있다. 또한, 각 공유 하위 레벨 파일은, 실질적으로 동일해야 하고 동기화가 수행된 후에 동일한 콘텐츠, 또는 데이터를 포함해야 하는 공유 하위 레벨 파일의 로컬 인스턴스 및 공유 하위 레벨 파일의 원격 인스턴스를 포함할 수 있다. 마지막으로, 또한, 각 공유 숏컷은, 실질적으로 동일해야 하고 동기화가 수행된 후에 동일한 콘텐츠, 또는 데이터를 포함해야 하는 공유 숏컷의 로컬 인스턴스 및 공유 숏컷의 원격 인스턴스를 포함할 수 있다.
공유 폴더 및 파일 동기화 시스템은 각 사용자, 또는 클라이언트에 로컬로(locally) 설치된 로컬 동기화 모듈, 컴퓨팅 장치 및 원격, 또는 분산 컴퓨팅 자원에서의 원격 동기화 모듈을 사용할 수 있다. 로컬 동기화 모듈들 및 원격 동기화 모듈들은 서로 통신하여 각 로컬 파일 시스템 및 원격 파일 시스템의 상태에 관한 정보를 교환해서 각각의 로컬 파일 시스템들과 원격 파일 시스템 간에서 공유 폴더들 및 파일들 전반에 걸친 파일 편집을 최신 상태 및 동기화된 상태로 유지할 수 있다.
하나의 측면에서, 특정 공유 폴더들 및 공유 하위 폴더들 내에 저장된 실제 콘텐츠를 모니터링하여 특정 공유 파일, 또는 그 안의 콘텐츠가 갱신, 편집, 삭제, 또는 달리 변화되었는지의 여부를 결정하는 대신에, 상기 시스템은 각 공유 폴더, 공유 하위 폴더, 공유 파일, 공유 하위 레벨 파일, 및 공유 숏컷과 관련된 속성을 모니터링할 수 있다. 상기 속성은 특정 폴더, 특정 하위 폴더, 특정 파일, 특정 하위 레벨 파일, 또는 특정 숏컷과 관련된 고유 식별자일 수 있다. 상기 속성은 폴더들 및 하위 폴더들 내에 저장된 특정 파일들, 하위 레벨 파일들, 및 숏컷들의 콘텐츠가 변경됨에 따라 재연산되어 마스터 리스트에 기록될 수 있다.
일반적으로, 공유 폴더들, 공유 하위 폴더들, 공유 파일들, 공유 하위 레벨 파일들, 및 공유 숏컷들을 동기화하기 위한 방법은 원격 파일 시스템 상태를 결정하는 단계 및 로컬 파일 시스템 상태를 결정하는 단계를 포함할 수 있다. 또한, 상기 방법은 원격 파일 시스템 상태 및 로컬 파일 시스템 상태를 비교하여 공유 폴더의 원격 인스턴스, 공유 하위 폴더의 원격 인스턴스, 공유 파일의 원격 인스턴스, 공유 하위 레벨 파일의 원격 인스턴스, 또는 공유 숏컷의 원격 인스턴스가 공유 폴더의 대응하는 로컬 인스턴스, 공유 하위 폴더의 대응하는 로컬 인스턴스, 공유 파일의 대응하는 로컬 인스턴스, 로컬 공유 하위 레벨 파일의 대응하는 인스턴스, 로컬 공유 숏컷의 대응하는 인스턴스의 로컬 파일 시스템 속성과는 다른 원격 파일 시스템 속성을 포함하는지의 여부를 결정하는 단계를 포함할 수 있다. 원격 파일 시스템 속성이 로컬 파일 시스템 속성과는 다른 공유 폴더, 공유 하위 폴더, 공유 파일, 공유 하위 레벨 파일, 또는 공유 숏컷은 예를 들어 이하에서 더욱 상세히 설명되는 바와 같이 동기화될 수 있다.
특정 측면에서, 원격 파일 시스템 속성은 공유 폴더의 원격 인스턴스에 할당된 원격 폴더 값, 공유 하위 폴더의 원격 인스턴스에 할당된 원격 하위 폴더 값, 공유 파일의 원격 인스턴스에 할당된 원격 파일 값, 공유 하위 레벨 파일의 원격 인스턴스에 할당된 원격 파일 값, 또는 공유 숏컷의 원격 인스턴스에 할당된 원격 파일 값을 포함할 수 있다. 보다 구체적으로, 원격 폴더 값은 원격 폴더 해시를 포함할 수 있고, 원격 하위 폴더 값은 원격 하위 폴더 해시를 포함할 수 있으며, 원격 파일 값은 원격 파일 해시를 포함할 수 있고, 원격 하위 레벨 파일 값은 원격 하위 레벨 파일 해시를 포함할 수 있으며, 원격 숏컷 값은 원격 숏컷 해시를 포함할 수 있다. 원격 폴더 해시, 원격 하위 폴더 해시, 원격 파일 해시, 원격 하위 레벨 파일 해시, 및 원격 숏컷 해시는 원격 파일 시스템용의 원격 해시 테이블에 기초하여 결정될 수 있다.
다른 측면에서, 로컬 파일 시스템 속성은 공유 폴더의 로컬 인스턴스에 할당된 로컬 폴더 값, 공유 하위 폴더의 로컬 인스턴스에 할당된 로컬 하위 폴더 값, 공유 파일의 로컬 인스턴스에 할당된 로컬 파일 값, 공유 하위 레벨 파일의 로컬 인스턴스에 할당된 로컬 하위 레벨 파일 값, 또는 공유 숏컷의 로컬 인스턴스에 할당된 로컬 숏컷 값을 포함할 수 있다. 또한, 로컬 폴더 값은 로컬 폴더 해시를 포함할 수 있고, 로컬 하위 폴더 값은 로컬 하위 폴더 해시를 포함할 수 있으며, 로컬 파일 값은 로컬 파일 해시를 포함할 수 있고, 로컬 하위 레벨 파일 값은 로컬 하위 레벨 파일 해시를 포함할 수 있으며, 로컬 숏컷 값은 로컬 숏컷 해시를 포함할 수 있다. 로컬 폴더 해시, 로컬 하위 폴더 해시, 로컬 파일 해시, 로컬 하위 레벨 파일 해시, 및 로컬 숏컷 해시는 로컬 파일 시스템용의 로컬 해시 테이블에 기초하여 결정될 수 있다.
예를 들면, 소정의 데이터 관리 시스템들은 특정 파일들이 메모리 내에 저장되는 장소의 트랙을 유지하기 위해서 해시 테이블 또는 해시 맵을 사용할 수 있다. 각 해시는 메모리 내에 특정 파일의 위치를 제공한다. 폴더는 폴더 해시를 포함할 수 있다. 하위 폴더는 하위 폴더 해시를 포함할 수 있다. 또한, 파일은 파일 해시를 포함할 수 있다. 하위 레벨 파일은 하위 레벨 파일 해시를 포함할 수 있고, 숏컷은 숏컷 해시를 포함할 수 있다.
하위 폴더 해시는 하위 폴더 내에 저장된 파일들과 관련된 파일 해시들, 하위 폴더 내에 저장된 임의의 하위 레벨 파일들과 관련된 하위 레벨 파일 해시들, 및 하위 폴더 내에 저장된 임의의 숏컷들과 관련된 숏컷 파일 해시들의 함수일 수 있다. 폴더 해시는 그 안의 하위 폴더들과 관련된 하위 폴더 해시들, 하위 폴더 내의 파일들과 관련된 파일 해시들, 하위 폴더 내의 하위 레벨 파일들(존재할 경우)의 하위 레벨 파일 해시들, 하위 폴더 내의 숏컷들(존재할 경우)의 숏컷 파일 해시들, 및 폴더 내의 파일들과 관련된 파일 해시들의 함수일 수 있다. 파일 해시, 하위 레벨 파일 해시, 및/또는 숏컷 해시에 대한 임의의 변화들은, 파일, 하위 레벨 파일, 및/또는 숏컷이 저장되는 하위 폴더에 할당된 하위 폴더 해시를 변화시킨다. 결국, 폴더 해시는 하위 폴더가 새로운 하위 폴더 해시들에 응답하여 변화되는 폴더에 할당되었다.
따라서, 각 폴더, 하위 폴더, 파일, 하위 레벨 파일, 및/또는 숏컷에 대해 연산되고 할당된 해시들의 상태를 모니터링함으로써, 공유 폴더 및 파일 동기화 시스템은 폴더들, 하위 폴더들, 파일들, 하위 레벨 파일들, 숏컷들, 또는 그들의 조합이 폴더들, 하위 폴더들, 파일들, 하위 레벨 파일들, 및/또는 숏컷들의 콘텐츠를 실제로 모니터링하지 않으면서 그 안의 데이터에 대한 변화들을 보였는지를 신속하게 확인할 수 있다. 예를 들면, 동기화 모듈, 예컨대 로컬 동기화 모듈, 원격 동기화 모듈, 또는 그들의 조합은 해시들의 현재 리스트를 특정 파일 시스템용의 해시들의 가장 최근의 리스트와 비교할 수 있다.
동기화 모듈은 현재의 폴더 해시들을 신속하게 트래버싱하여, 존재할 경우, 폴더 해시들이 각 폴더용의 가장 최근에 기록된 폴더 해시와 다른지를 결정할 수 있다. 상이한 임의의 폴더 해시들은, 폴더 내의 적어도 하나의 파일, 적어도 하나의 하위 레벨 파일, 또는 적어도 하나의 숏컷 또는 폴더의 하위 폴더 내의 적어도 하나의 파일, 적어도 하나의 하위 레벨 파일, 또는 적어도 하나의 숏컷이 변경, 예컨대 갱신, 편집, 삭제, 생성 등이 이루어진 것의 표시를 동기화 모듈에 제공한다. 마스터 해시 리스트 상의 폴더 해시와는 다른 폴더 해시를 갖는 임의의 폴더에 대하여, 동기화 모듈은 폴더 내에 저장된 파일들, 하위 레벨 파일들, 및 숏컷들과 관련된 파일 해시들, 하위 레벨 파일 해시들, 또는 숏컷 해시들을 트래버싱하여, 파일들, 하위 레벨 파일들, 및/또는 숏컷들이 변경되었는지를 결정할 수 있다.
또한, 신규, 또는 상이한 폴더 해시를 갖는 각 폴더에 대하여, 동기화 모듈은 폴더 내의 하위 폴더들과 관련된 하위 폴더 해시들을 트래버싱하여, 존재할 경우, 하위 폴더들이 변경되어 있는 파일들, 하위 레벨 파일들, 및/또는 숏컷들을 포함하는지를 결정할 수 있다. 그 후, 상이한 하위 폴더 해시를 갖는 임의의 하위 폴더에 대하여, 동기화 모듈은 하위 폴더 내에 저장된 파일들, 하위 레벨 파일들, 및 숏컷들과 관련된 파일 해시들, 하위 레벨 파일 해시들, 및/또는 숏컷 해시들을 트래버싱하여, 하위 폴더 내의 파일들, 하위 레벨 파일들, 및/또는 숏컷들이 상이한 해시들을 갖는지를 결정할 수 있다. 상이한 해시를 포함하는 임의의 파일, 하위 레벨 파일, 및/또는 숏컷은 변경된 것이고 특정 파일, 하위 레벨 파일, 및/또는 숏컷이 가장 최근의 행위(action)를 포함하도록 동기화된 것으로 간주된다. 행위들은 파일 또는 파일의 콘텐츠에 대한 갱신, 편집, 추가, 삭제, 또는 임의의 다른 변화를 포함할 수 있다.
본원에서 설명되는 하나 이상의 예는 다수의 로컬 파일 시스템 및 하나 이상의 원격 파일 시스템 간에서 공유 폴더들 및 파일들을 동기화하기 위한 공정들을 제공한다. 다양한 예에서, 처리 유닛, 또는 유닛들은 모듈들 또는 API들로부터의 프로그래밍을 통해 구성되어 본원에서 설명되는 바와 같이 기술들, 또는 공정들을 수행할 수 있다. 처리 유닛, 또는 유닛들은 GPU, FPGA(field-programmable gate array), 다른 종류의 DSP(digital signal processor), 또는 일부의 예에서는 CPU에 의해 구동될 수 있는 다른 하드웨어 로직 구성요소들 중 하나 이상을 포함할 수 있다. 예를 들면, 그리고 제한 없이, 사용될 수 있는 예시적인 유형의 하드웨어 논리 구성요소들은 ASIC(Application-Specific Integrated Circuit)들, ASSP(Application-Specific Standard Product)들, SOC(System-on-a-chip system)들, CPLD(Complex Programmable Logic Device)들 등을 포함할 수 있다.
일반적으로, 공유 폴더 및 파일 동기화 시스템은 로컬 동기화 모듈 및 로컬 파일 시스템이 상부에 있는 하나 이상의 로컬 컴퓨터 판독가능 매체 및 원격 동기화 모듈 및 원격 파일 시스템이 상부에 있는 하나 이상의 원격 컴퓨터 판독가능 매체를 포함할 수 있다. 또한, 공유 폴더 및 파일 동기화 시스템은 로컬 컴퓨터 판독가능 매체, 원격 컴퓨터 판독가능 매체, 또는 그들의 조합에 작동 가능하게 연결되는 처리 유닛을 포함할 수 있다. 처리 유닛은 로컬 동기화 모듈, 원격 동기화 모듈, 또는 그들의 조합을 실행하기에 적합할 수 있다.
또한, 로컬 동기화 모듈, 원격 동기화 모듈, 또는 그들의 조합은 원격 파일 시스템 내의 공유 데이터 구조의 원격 인스턴스와 관련된 원격 파일 시스템 속성을 결정하고 로컬 파일 시스템 내의 공유 데이터 구조의 로컬 인스턴스와 관련된 로컬 파일 시스템 속성을 결정하도록 구성될 수 있다. 로컬 동기화 모듈, 원격 동기화 모듈, 또는 그들의 조합은 또한 원격 파일 시스템 속성이 로컬 파일 시스템 속성과는 다른지의 여부를 결정하고 원격 파일 시스템 내의 공유 데이터 구조의 원격 인스턴스를 로컬 파일 시스템 내의 공유 데이터 구조의 로컬 인스턴스와 선택적으로 동기화해서 공유 데이터 구조 내의 콘텐츠가 원격 파일 시스템 및 로컬 파일 시스템에서 동일해지도록 구성될 수도 있다.
전술한 바와 같이, 공유 데이터 구조는 공유 폴더, 공유 하위 폴더, 공유 파일, 공유 하위 레벨 파일, 공유 숏컷, 또는 그들의 조합을 포함할 수 있다. 원격 파일 시스템 속성은 원격 파일 시스템과 관련된 원격 해시 테이블로부터 검색된 원격 폴더 해시, 원격 하위 폴더 해시, 원격 파일 해시, 원격 하위 레벨 파일 해시, 또는 원격 숏컷 해시를 포함할 수 있다. 또한, 로컬 파일 시스템 속성은 로컬 파일 시스템과 관련된 로컬 해시 테이블로부터 검색된 로컬 폴더 해시, 로컬 하위 폴더 해시, 로컬 파일 해시, 로컬 하위 레벨 파일 해시, 또는 로컬 숏컷 해시를 포함할 수 있다.
이제 도 1을 참조하면, 공유 폴더 및 파일 동기화 시스템의 상세한 예가 도시되어 있고 개괄적으로 100으로 표기되어 있다. 도시된 바와 같이, 공유 폴더 및 파일 동기화 시스템(100)은 적어도 하나의 네트워크(102)를 포함할 수 있다. 예를 들면, 네트워크(102)는 인터넷과 같은 공중 네트워크들, 기관 및/또는 개인 인트라넷과 같은 전용 네트워크들, 또는 전용 및 공중 네트워크들의 일부 조합을 포함할 수 있다. 네트워크(102)는 임의의 유형의 유선 네트워크, 무선 네트워크, 또는 그들의 조합을 또한 포함할 수 있다. 또한, 무선 네트워크는, 예를 들면 위성 네트워크, 셀룰러 네트워크(예컨대, 3G, 4G 등), Wi-Fi 네트워크, WiMax 네트워크, 다른 무선 네트워크, 또는 그들의 조합을 포함할 수 있다. 또한, 유선 네트워크는 Cat-5 케이블, 트위스트 페어(twisted pair) 전화선들, 동축 케이블, 광섬유 케이블, 또는 그들의 조합을 통해 연결된 이더넷(Ethernet)을 포함할 수 있다. 다른 구현예에서, 네트워크(102)는 WAN(wide area network), LAN(local area network), 또는 그들의 조합일 수 있다. 또한, 네트워크(102)는 POTS(plain-old telephone service) 네트워크를 포함할 수 있다.
네트워크(102)는 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 또는 다른 타입의 프로토콜들과 같은 패킷 기반 및/또는 데이터그램 기반 프로토콜들을 포함하는 통신 프로토콜들을 사용할 수 있다. 또한, 네트워크(102)는 네트워크 통신을 용이하게 하고/하거나 스위치들, 라우터들, 게이트웨이들, 액세스 포인트들, 방화벽들, 기지국들, 중계기들, 백본 장치들 등과 같은 네트워크들을 위한 하드웨어 기반을 형성하는 다수의 장치를 또한 포함할 수 있다.
일부 예에서, 네트워크(102)는 무선 액세스 포인트(WAP)와 같은 무선 네트워크에 대한 연결을 가능하게 하는 하나 이상의 장치를 더 포함할 수 있다. 추가적인 예들은, IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준들(예컨대, 802.11g, 802.11n 등), 및 다른 표준들을 포함한, 다양한 전자기 주파수(예컨대, 무선 주파수)에 걸쳐서 데이터를 송수신하는 WAP들을 통한 연결을 지원한다.
도 1에 또한 도시된 바와 같이, 공유 폴더 및 파일 동기화 시스템(100)은 네트워크(102)에 연결된 제1 분산 컴퓨팅 자원(104), 제2 분산 자원(106), 및 제N 분산 자원(108)을 또한 포함할 수 있다. 다양한 예에서, 분산 컴퓨팅 자원들(104, 106, 108)은 상기 자원들의 공유, 부하의 균형, 성능의 향상, 장애 극복 지원 또는 리던던시의 제공, 또는 다른 목적을 위해 클러스터 또는 다른 그룹화된 구성으로 작동하는 하나 이상의 컴퓨팅 장치를 포함할 수 있다. 분산 컴퓨팅 자원들(104, 106, 108)은 전통적인 서버형 장치들, 데스크톱 컴퓨터형 장치들, 모바일형 장치들, 특수 목적형 장치들, 내장형 장치들, 및/또는 웨어러블형 장치들과 같은 다양한 카테고리 또는 종류의 장치에 속할 수 있는 컴퓨팅 장치들을 또한 포함할 수 있다.
분산 컴퓨팅 자원들(104, 106, 108)은 다른 종류의 다양한 장치 유형을 포함할 수 있고 특정 유형의 장치에 제한되지 않는다. 분산 컴퓨팅 자원들(104, 106, 108)은 데스크톱 컴퓨터들, 서버 컴퓨터들, 웹 서버 컴퓨터들, 퍼스널 컴퓨터들, 모바일 컴퓨터들, 랩톱 컴퓨터들, 태블릿 컴퓨터들, 웨어러블 컴퓨터들, 이식형 컴퓨팅 장치들, 전기통신 장치들, 자동차용 컴퓨터들, 네트워크 사용가능 텔레비전들, 신 클라이언트(thin client)들, 단말기들, 개인용 데이터 단말기(PDA)들, 게임 콘솔들, 게이밍 장치들, 워크 스테이션들, 미디어 플레이어들, 개인용 비디오 리코더(PVR)들, 셋톱 박스들, 카메라들, 컴퓨팅 장치에 내장하기 위한 집적 구성요소들, 가전기기 또는 임의의 다른 종류의 컴퓨팅 장치를 나타낼 수 있지만, 이에 제한되지 않는다.
도 1은 제N 분산 컴퓨팅 자원(108)에 관한 상세를 또한 도시하고 있다. 제1 분산 컴퓨팅 자원(104) 및 제2 분산 컴퓨팅 자원(106)은 제N 분산 컴퓨팅 자원(108)과 실질적으로 동일한 방식으로 구성될 수 있고 제N 분산 컴퓨팅 자원(108)과 함께 본원에서 설명되는 임의의 구성요소들의 전부 또는 조합을 포함할 수 있음이 인정될 수 있다.
나타낸 바와 같이, 제N 분산 컴퓨팅 자원(108)은 임의의 컴퓨팅 장치일 수 있고, 제N 분산 컴퓨팅 자원(108)은, 예컨대 버스(114)를 통해 컴퓨터 판독가능 매체(112)에 작동 가능하게, 또는 전기적으로 연결된 하나 이상의 처리 유닛(110)을 포함할 수 있다. 버스(114)는 시스템 버스, 데이터 버스, 어드레스 버스, PCI 버스, Mini-PCI 버스, 및 임의의 다양한 로컬, 주변, 및/또는 독립 버스 중 하나 이상을 포함할 수 있다.
제N 분산 컴퓨팅 자원(108)은 네트워크(102)를 통해 제N 분산 컴퓨팅 자원(108)과 그 외의 컴퓨팅 자원들 또는 장치들과 통신할 수 있도록 하나 이상의 네트워크 인터페이스(116)를 또한 포함할 수 있다. 네트워크 인터페이스(116)는 네트워크를 통한 통신을 송수신하도록 하나 이상의 네트워크 컨트롤러(NIC) 또는 다른 유형의 송수신기 장치들을 포함할 수 있다. 특정 측면에서, 도 1에 도시된 바와 같이, 실행가능 명령어들은 컴퓨터 판독가능 매체(112) 상에 저장될 수 있고, 해당 명령어들은, 예를 들면 하나 이상의 처리 유닛(110)에 의해 로딩될 수 있고 실행될 수 있는 운영 시스템(118), 원격 공유 폴더 및 파일 동기화 모듈(120), 및 그 외의 모듈들, 프로그램들, 또는 애플리케이션들을 포함할 수 있다.
대안적으로, 또는 추가적으로, 본원에서 설명되는 기능은 가속기들과 같은 하나 이상의 하드웨어 로직 구성요소에 의해 적어도 부분적으로 수행될 수 있다. 예를 들면, 그리고 제한 없이, 사용될 수 있는 예시적인 유형의 하드웨어 구성요소들은 FPGA(Field-programmable Gate Array)들, ASIC(Application-Specific Integrated Circuit)들, ASSP(Application-Specific Standard Product)들, SOC(System-on-a-chip system)들, CPLD(Complex Programmable Logic Device)들 등을 포함할 수 있다. 예를 들면, 가속기는 FPGA 패브릭에 내장된 CPU 코어를 포함하는 ZYLEX 또는 ALTERA로부터의 하나와 같은 하이브리드 장치를 나타낼 수 있다.
제N 분산 컴퓨팅 자원(108)의 컴퓨터 판독가능 매체(112)는 복수의 폴더, 하위 폴더, 파일, 또는 그들의 조합이 저장될 수 있는 원격 파일 시스템(122)을 또한 포함할 수 있거나, 또는 당해 원격 파일 시스템으로 구획될 수 있다. 복수의 폴더, 하위 폴더, 및 파일은 복수의 공유 폴더, 공유 하위 폴더, 공유 파일, 공유 하위 레벨 파일, 및 공유 숏컷을 포함할 수 있다. 보다 구체적으로, 복수의 공유 폴더, 공유 하위 폴더, 공유 파일, 공유 하위 레벨 파일, 및 공유 숏컷은 공유 폴더들의 복수의 원격 인스턴스, 공유 하위 폴더들의 복수의 원격 인스턴스, 및 공유 파일들의 복수의 원격 인스턴스를 포함할 수 있다.
특히, 원격 파일 시스템(122)은 암호화 해시 함수, 또는 다른 해시 함수를 사용하여, 원격 파일 시스템(122) 내에 저장된 파일들 및 데이터를 저장하고 검색할 수 있다. 해시 함수는 MD2, MD4, MD5, MD6, SHA-0, SHA-1, SHA-2, SHA-3, 또는 그들의 조합과 같은 머클-댐가드(Merkle-Damgard) 해시 함수의 도함수를 포함할 수 있다. 다른 측면에서, 해시 함수는 RIPEMD(race integrity primitives evaluation message digest) 해시 함수, RIPEMD-160, 또는 그들의 조합을 포함할 수 있다. 후술되는 도 2 및 도 3은 원격 파일 시스템(122) 내에서 발견될 수 있는 예시적인 파일 시스템 및 예시적인 폴더에 관한 보다 더 상세한 것을 제공한다.
도 1은 컴퓨터 판독가능 매체(112)가 그 위에 저장된 마스터 해시 리스트(124)를 포함할 수 있는 것을 또한 나타내고 있다. 본원에서 설명되는 바와 같이, 마스터 해시 리스트(124)는 폴더 해시들, 하위 폴더 해시들, 및 파일 해시들의 리스트를 포함할 수 있고, 이것과 폴더 해시들, 하위 폴더 해시들, 및 파일 해시들의 현재 상태를 비교하여, 최종 마스터 해시 리스트가 연산되고 기록된 이후로 폴더들, 하위 폴더들, 및/또는 파일들 내의 콘텐츠가 변화된 경우를 결정하는데 사용될 수 있다.
단순화를 위해, 전형적으로 제N 분산 컴퓨팅 자원(108)과 같은 컴퓨팅 장치와 관련되거나, 컴퓨팅 장치와 함께 포함될 수 있는 다른 구성요소들 또는 특징부들이 도 1에서의 제N 분산 컴퓨팅 자원(108)의 도시에서 생략된다. 이러한 다른 구성요소들 또는 특징부들은 A/C 전원, D/C 전원, 다양한 커넥터 포트, 다양한 코드, 다양한 LED 표시기, 스피커들, 하우징, 섀시, 팬들, 히트 싱크들, 입력 장치들, 출력 장치들, 표시 장치들 등을 포함할 수 있지만, 이에 제한되지 않는다.
도 1은 공유 폴더 및 파일 동기화 시스템(100)이 제1 클라이언트 컴퓨팅 장치(130), 제2 클라이언트 컴퓨팅 장치(132), 및 제N 클라이언트 컴퓨팅 장치(134)를 포함할 수 있다. 클라이언트 컴퓨팅 장치들(130, 132, 134)은 분산 컴퓨팅 자원들(104, 106, 108)과 동일하거나 다를 수 있는 다양한 카테고리 또는 종류의 장치들에 속할 수 있다. 이들 카테고리 또는 종류의 장치들은 전통적인 클라이언트형 장치들, 데스크톱 컴퓨터형 장치들, 모바일형 장치들, 특수 목적형 장치들, 내장형 장치들, 및/또는 웨어러블형 장치들을 포함할 수 있다. 또한, 클라이언트 컴퓨팅 장치들(130, 132, 134)은 다른 종류의 다양한 장치 유형을 포함할 수 있고 임의의 특정 유형의 장치에 제한되지 않는다.
예를 들면, 클라이언트 컴퓨팅 장치들(130, 132, 134)은 전지구 측위 시스템(GPS) 장치들 및 기타 위성 기반 항법 시스템 장치들을 포함한 위성 기반 항법 시스템들과 같은 컴퓨터 항법 유형의 클라이언트 컴퓨팅 장치들, 이동 전화기들과 같은 전기통신 장치들, 태블릿 컴퓨터들, 이동 전화기 태블릿 하이브리드, 개인용 데이터 단말기(PDA)들, 랩톱 컴퓨터들, 그 외의 이동 컴퓨터들, 웨어러블 컴퓨터들, 이식형 컴퓨팅 장치들, 데스크톱 컴퓨터들, 퍼스널 컴퓨터들, 자동차용 컴퓨터들, 네트워크 사용가능 텔레비전들, 신 클라이언트들, 단말기들, 게임 콘솔들, 게이밍 장치들, 워크 스테이션들, 미디어 플레이어들, 개인용 비디오 리코더(PVR)들, 텔레비전 셋톱 박스들, 디지털 비디오 리코더(DVR)들, 카메라들, 컴퓨팅 장치에 내장하기 위한 집적 구성요소들, 가전기기들, 또는 사용자 입력을 수신하도록 구성된 임의의 다른 종류의 컴퓨팅 장치를 또한 포함할 수 있지만, 이에 제한되지 않는다.
또한, 사용자와 같은 엔티티는 각각의 또는 임의의 클라이언트 컴퓨팅 장치들(130, 132, 134)과 관련될 수 있다. 엔티티는 특정 사용자, 및 사용자가 클라이언트 컴퓨팅 장치들(130, 132, 134)에 액세스하기 위한 허가를 부여한 사용자의 보조자, 사용자의 감독자, 사용자의 배우자, 사용자의 부모, 및/또는 다른 엔티티와 같은 사용자의 하나 이상의 지정자를 포함할 수 있다.
도 1은 제N 클라이언트 컴퓨팅 장치(134)에 관한 상세를 또한 도시하고 있다. 제1 클라이언트 컴퓨팅 장치(130) 및 제2 클라이언트 컴퓨팅 장치(132)는 제N 클라이언트 컴퓨팅 장치(134)와 동일한 방식으로 구성될 수 있고 제N 클라이언트 컴퓨팅 장치(134)와 함께 본원에서 설명되는 구성요소들의 전부 또는 임의의 조합을 포함할 수 있음이 인정될 수 있다.
도시된 바와 같이, 제N 클라이언트 컴퓨팅 장치(134)는 임의의 컴퓨팅 장치일 수 있고, 제N 클라이언트 컴퓨팅 장치(134)는, 예컨대 버스(144)를 통해 컴퓨터 판독가능 매체(142)에 작동 가능하게, 또는 전기적으로 연결된 하나 이상의 처리 유닛(140)을 포함할 수 있다. 버스(144)는 시스템 버스, 데이터 버스, 어드레스 버스, PCI 버스, Mini-PCI 버스, 및 임의의 다양한 로컬, 주변, 및/또는 독립 버스 중 하나 이상을 포함할 수 있다.
제N 클라이언트 컴퓨팅 장치(134)는 네트워크(102)를 통해 제N 클라이언트 컴퓨팅 장치(134)와 그 외의 컴퓨팅 자원들 또는 장치들 간에 통신할 수 있게 하는 하나 이상의 네트워크 인터페이스(146)를 또한 포함할 수 있다. 네트워크 인터페이스(146)는 네트워크를 통한 통신을 송수신하기 위한 하나 이상의 네트워크 인터페이스 컨트롤러(NIC) 또는 다른 유형의 송수신기 장치를 포함할 수 있다. 특정 측면에서, 실행가능 명령어들은 제N 클라이언트 컴퓨팅 장치(134)의 컴퓨터 판독가능 매체(142) 상에 저장될 수 있고, 해당 명령어들은, 도 1에 도시된 바와 같이, 예를 들면 하나 이상의 처리 유닛(140)에 의해 로딩될 수 있고 실행될 수 있는 운영 시스템(148), 로컬 공유 폴더 및 파일 동기화 모듈(150), 및 그 외의 모듈들, 프로그램들, 또는 애플리케이션들을 포함할 수 있다.
대안적으로, 또는 추가적으로, 본원에서 설명되는 기능은 가속기들과 같은 하나 이상의 하드웨어 로직 구성요소들에 의해 적어도 부분적으로 수행될 수 있다. 예를 들면, 그리고 제한 없이, 사용될 수 있는 예시적인 유형의 하드웨어 로직 구성요소들은 FPGA(Field-programmable Gate Array)들, ASIC(Application-Specific Integrated Circuit)들, ASSP(Application-Specific Standard Product)들, SOC(System-on-a-chip system)들, CPLD(Complex Programmable Logic Device)들 등을 포함할 수 있다. 예를 들면, 가속기는 FPGA 패브릭에 내장된 CPU 코스를 포함하는 ZYLEX 또는 ALTERA로부터의 하나와 같은 하이브리드 장치를 나타낼 수 있다.
제N 클라이언트 컴퓨팅 장치(134)의 컴퓨터 판독가능 매체(142)는 복수의 폴더, 하위 폴더, 파일, 또는 그들의 조합이 저장될 수 있는 로컬 파일 시스템(152)을 또한 포함할 수 있거나, 당해 로컬 파일 시스템으로 구획될 수 있다. 복수의 폴더, 하위 폴더, 및 파일은 복수의 공유 폴더, 공유 하위 폴더, 공유 파일, 공유 하위 레벨 파일, 및 공유 숏컷을 포함할 수 있다. 보다 구체적으로, 복수의 공유 폴더, 공유 하위 폴더, 공유 파일, 공유 하위 레벨 파일, 및 공유 숏컷은 공유 폴더들의 복수의 로컬 인스턴스, 공유 하위 폴더들의 복수의 로컬 인스턴스, 및 공유 파일들의 복수의 로컬 인스턴스를 포함할 수 있다.
특정 측면에서, 로컬 파일 시스템(152)은 암호화 해시 함수, 또는 다른 해시 함수를 사용하여, 로컬 파일 시스템(152) 내에 저장된 파일들 및 데이터를 저장하고 검색할 수 있다. 해시 함수는 MD2, MD4, MD5, MD6, SHA-0, SHA-1, SHA-2, SHA-3, 또는 그들의 조합과 같은 머클-댐가드(Merkle-Damgard) 해시 함수의 도함수를 포함할 수 있다. 다른 측면에서, 해시 함수는 RIPEMD(race integrity primitives evaluation message digest) 해시 함수, RIPEMD-160, 또는 그들의 조합을 포함할 수 있다. 후술되는 도 2 및 도 3은 로컬 파일 시스템(152) 내에서 발견될 수 있는 예시적인 파일 시스템 및 예시적인 폴더에 관한 보다 더 상세한 것을 제공한다.
도 1에 또한 도시된 바와 같이, 컴퓨터 판독가능 매체(142)는 그 위에 저장된 마스터 해시 리스트(154)를 포함할 수 있다. 본원에서 설명되는 바와 같이, 마스터 해시 리스트(154)는 폴더 해시들, 하위 폴더 해시들, 및 파일 해시들의 리스트를 포함할 수 있고, 이것과 폴더 해시들, 하위 폴더 해시들, 및 파일 해시들의 현재 상태를 비교하여, 최종 마스터 해시 리스트가 연산되고 기록된 이후로 폴더들, 하위 폴더들, 및/또는 파일들 내의 콘텐츠가 변화된 경우를 결정하는데 사용될 수 있다.
마스터 해시 리스트(154)는 제N 분산 컴퓨팅 자원(108) 내에 저장된 마스터 해시 리스트(124)의 카피일 수 있다. 때로는, 마스터 해시 리스트들(124, 154)은 동일할 수 있다. 그러나, 폴더들, 하위 폴더들, 및 파일들 또는 그들의 조합이 다양한 클라이언트 컴퓨팅 장치(130, 132, 134)에서 변경됨에 따라, 마스터 해시 리스트들(124, 154)은 서로 동기화되기 전에는 다를 수 있다.
여전히 도 1을 참조하면, 제N 클라이언트 컴퓨팅 장치(134)는 이것에 연결되는 입력 장치(160), 출력 장치(162), 표시 장치(164), 또는 그들의 조합을 또한 포함할 수 있다. 특히, 입력 장치(160), 출력 장치(162), 및 표시 장치(164)는 버스(144)에 연결될 수 있다. 입력 장치(160), 출력 장치(162), 및 표시 장치(164)는 사용자에게 제N 클라이언트 컴퓨팅 장치(134)와 통신하기 위한 능력을 제공할 수 있다. 입력 장치(160)는 마우스, 키보드, 마이크로폰, 터치 스크린, 조이스틱, 휴대용 컨트롤러, 라이트 펜, 트랙 볼, 스캐너, 그래픽 태블릿, 자기 잉크 카드 판독기(MICR), 광학 문자 판독기(OCR), 바코드 판독기, 광학 마크 판독기, 또는 그들의 조합을 포함할 수 있다. 출력 장치(162)는 프린터, 스피커, 햅틱 장치, 또는 그들의 조합을 포함할 수 있다. 표시 장치(164)는 스크린, 모니터, 프로젝터, 또는 그들의 조합을 포함할 수 있다.
도 1은 공유 폴더 및 파일 동기화 시스템(100)이 제N 클라이언트 컴퓨팅 장치(134)에 연결된 데이터 스토어(166)를 포함할 수 있는 것을 또한 나타내고 있다. 대안적인 측면에서, 공유 폴더 및 파일 로컬 동기화 모듈(150), 로컬 파일 시스템(152), 마스터 해시 리스트(154), 또는 그들의 조합이 데이터 스토어(166) 내에 위치할 수 있음이 인정될 수 있다. 다양한 측면 및 예에서, 데이터 스토어(166)는 데이터베이스, 데이터 웨어하우스 또는 다른 유형의 구조화 또는 비구조화 데이터 스토리지와 같은 데이터 스토리지를 포함한다. 일부 예에서, 데이터 스토어(166)는, 예를 들어 HTML(hypertext markup language) 테이블들, RDF(resource description framework) 테이블들, OWL(web ontology language) 테이블들, 및/또는 XML(extensible markup language) 테이블들 중 하나 이상을 포함하는 데이터 액세스를 가능하게 하기 위한 하나 이상의 테이블, 인덱스, 저장 프로시저 등을 갖는 코퍼스(corpus) 및/또는 관계형 데이터베이스를 포함할 수 있다.
컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및/또는 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터와 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현되는 휘발성 메모리, 비휘발성 메모리, 및/또는 다른 영구 및/또는 보조 컴퓨터 저장 매체, 분리형 및 비분리형 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 판독가능 매체(112, 142)는 데이터 스토어(166)와 유사한 컴퓨터 저장 매체의 예일 수 있다.
따라서, 컴퓨터 판독가능 매체(112, 142) 및/또는 데이터 스토어(166)는, 컴퓨팅 장치에 의한 액세스를 위해 정보를 저장하고 유지하는데 사용될 수 있는 랜덤 액세스 메모리(RAM), 정적 랜덤 액세스 메모리(SDRAM), 동적 랜덤 액세스 메모리(DRAM), 상 변화 메모리(PRAM), 판독 전용 메모리(ROM), 마스크 판독 전용 메모리(MROM), 프로그램가능 판독 전용 메모리(PROM), 소거 및 프로그램가능 판독 전용 메모리(EPROM), 전기적 소거 및 프로그램가능 판독 전용 메모리(EEPROM), 플래시 메모리, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 디지털 다목적 디스크(DVD)들, 광학 카드들 또는 다른 광학 저장 매체, 자기 카세트들, 자기 테이프, 자기 디스크 스토리지, 자기 카드들 또는 다른 자기 저장 장치들 또는 매체, 고체 상태 메모리 장치들, 스토로지 어레이들, 네트워크 결합 스토리지, 스토리지 전용 네트워크, 호스트 컴퓨터 스토리지 또는 임의의 다른 저장 메모리, 저장 장치, 및/또는 저장 매체를 포함하지만 이에 한정되지 않는, 장치의 일부 또는 장치 외부에 있는 장치 및/또는 하드웨어 구성요소 내에 포함되는 매체의 유형(tangible) 및/또는 물리 형태를 포함할 수 있다.
컴퓨터 저장 매체와 대조적으로, 통신 매체는 반송파, 또는 다른 전송 메카니즘과 같은 변조된 데이터 신호 내에 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 기타 데이터를 구현할 수 있다. 본원에서 정의되는 바와 같이, 컴퓨터 저장 매체는 통신 매체를 포함하지 않는다. 즉, 컴퓨터 저장 매체는 변조된 데이터 신호, 반송파, 또는 전파 신호 그 자체만으로 이루어지는 통신 매체를 포함하지 않는다.
단순화를 위해, 제N 클라이언트 컴퓨팅 장치(134)와 같은 컴퓨팅 장치와 전형적으로 관련되거나 컴퓨팅 장치와 함께 포함될 수 있는 다른 구성요소들 또는 특징부들이 도 1에서의 제N 클라이언트 컴퓨팅 장치(134)의 도시에서 생략된다. 이러한 다른 구성요소들 또는 특징부들은 A/C 전원, D/C 전원, 다양한 커넥터 포트, 다양한 코드, 다양한 LED 표시기, 하우징, 섀시, 팬들, 히트 싱크들 등을 포함할 수 있지만, 이에 제한되지 않는다.
컴퓨터 판독가능 매체(112, 142) 및/또는 데이터 스토어(166)는 하나 이상의 처리 유닛(110, 140)에 의해 실행 가능한 임의의 수의 기능 구성요소들을 저장하는데 사용될 수 있다. 많은 구현예에서, 이들 기능 구성요소는, 하나 이상의 처리 유닛(110, 140)에 의해 실행 가능하고, 실행되었을 때, 공유 폴더 및 파일 동기화 시스템(100)에 기인된 동작들을 수행하기 위한 운영 로직을 구현하는 명령어들 또는 프로그램들을 포함한다. 본원에서 설명되는 바와 같이, 공유 폴더들 및 파일들을 동기화하는 것에 관한 다양한 기능 및 특징을 구현하기 위해 하나 이상의 처리 유닛(110, 140) 상에서 실행될 수 있는 공유 폴더 및 파일 동기화 시스템(100)의 기능 구성요소들은 제N 분산 컴퓨팅 자원(108) 내의 원격 공유 폴더 및 파일 동기화 모듈(120) 및 제N 클라이언트 컴퓨팅 장치(134) 내의 로컬 공유 폴더 및 파일 동기화 모듈(150)을 포함한다.
일 구현예에서, 다양한 모듈(120, 150)은 수개의 클라이언트 컴퓨팅 장치(130, 132, 134)와 적어도 하나의 분산 컴퓨팅 자원(104, 106, 108) 사이에서 공유 폴더들 및 파일들의 동기화에 관한 동작들을 수행하도록 처리 유닛들(110, 140)에 의해 실행될 수 있는 컴퓨터 판독가능 명령어들을 포함할 수 있다.
이제 도 2를 참조하면, 파일 시스템의 예가 도시되어 있고 개괄적으로 200으로 표기되어 있다. 도 2에 도시된 파일 시스템(200)은 제N 분산 컴퓨팅 자원(108)(도 1) 내의 원격 파일 시스템(122)(도 1)으로서 사용될 수 있다. 또한, 도 2에 나타낸 파일 시스템(200)은 제N 클라이언트 컴퓨팅 장치(134)(도 1) 내의 로컬 파일 시스템(152)(도 1)에서 사용될 수 있다. 다른 측면에서, 파일 시스템(200)은 제N 클라이언트 컴퓨팅 장치(134)(도 1)에 연결된 데이터 스토어(166)(도 1) 내에 위치할 수 있다.
도 2에 도시된 바와 같이, 파일 시스템(200)은 제1 폴더(202), 제2 폴더(204), 및 제N 폴더(206)를 포함할 수 있다. 각 폴더(202, 204, 206)는 이름, 식별자, 또는 다른 디스크립터, 예컨대 내문서, 사진, 음악, 작업 등을 포함할 수 있다. 또한, 도 2에 표시된 바와 같이, 제1 폴더(202)는 제1 하위 폴더(210), 제2 하위 폴더(212), 및 제N 하위 폴더(214)를 포함할 수 있다. 각 하위 폴더(210, 212, 214)는 이름, 식별자, 또는 일부의 다른 디스크립터를 포함할 수 있다.
제1 폴더(202) 내의 제1 하위 폴더(210)는 제1 파일(216), 제2 파일(218), 및 제N 파일(220)을 포함할 수 있다. 제1 폴더(202) 내의 제2 하위 폴더(212)는 제1 파일(222), 제2 파일(224), 및 제N 파일(226)을 포함할 수 있다. 또한, 제1 폴더(202) 내의 제3 하위 폴더(214)는 제1 파일(228), 제2 파일(230), 및 제N 파일(232)을 포함할 수 있다.
각 파일(216-232)은 아카이브 파일(archive file), 압축 파일, 컴퓨터-지원 설계 파일, 데이터베이스 파일, 데스크톱 출판 파일, 문서 파일, 재정 기록 파일, 폰트 파일, 지리 정보 시스템 파일, 그래픽 파일, 링크 파일, 숏컷 파일, 수학 파일, 오브젝트 코드 파일, 페이지 기술 언어 파일, 개인 정보 관리자 파일, 프리젠테이션 파일, 프로젝트 관리 소프트웨어 파일, 참조 관리 소프트웨어 파일, 과학 데이터 파일, 보안 파일, 신호 데이터(비음성) 파일, 사운드(음성) 파일, 소스 코드 파일, 스프레드시트 파일, 테이블화 데이터 파일, 비디오 파일, 비디오 게임 파일, 가상 기계 파일, 웹페이지 파일, 일부의 기타 파일, 또는 그들의 조합을 포함할 수 있다.
도 2에 도시된 바와 같이, 파일 시스템(200) 내의 제1 폴더(202)는 하위 레벨 1 파일(234)(제1 하위 레벨 파일이라고도 함), 하위 레벨 2 파일(236)(제2 하위 레벨 파일이라고도 함), 및 하위 레벨 N 파일(238)(제N 하위 레벨 파일이라고도 함)을 또한 포함할 수 있다.
제2 폴더(204)는 제1 하위 폴더(240), 제2 하위 폴더(242), 및 제N 하위 폴더(244)를 포함할 수 있다. 각 하위 폴더(240, 242, 244)는 이름, 식별자, 또는 일부의 다른 디스크립터를 포함할 수 있다. 제2 폴더(204) 내의 제1 하위 폴더(240)는 제1 파일(246), 제2 파일(248), 및 제N 파일(250)을 포함할 수 있다. 제2 폴더(204) 내의 제2 하위 폴더(242)는 제1 파일(252), 제2 파일(254), 및 제N 파일(256)을 포함할 수 있다. 또한, 제2 폴더(204) 내의 제3 하위 폴더(244)는 제1 파일(258), 제2 파일(260), 및 제N 파일(262)을 포함할 수 있다.
각 파일(246-262)은 아카이브 파일, 압축 파일, 컴퓨터-지원 설계 파일, 데이터베이스 파일, 데스크톱 출판 파일, 문서 파일, 재정 기록 파일, 폰트 파일, 지리 정보 시스템 파일, 그래픽 파일, 링크 파일, 숏컷 파일, 수학 파일, 오브젝트 코드 파일, 페이지 기술 언어 파일, 개인 정보 관리자 파일, 프리젠테이션 파일, 프로젝트 관리 소프트웨어 파일, 참조 관리 소프트웨어 파일, 과학 데이터 파일, 보안 파일, 신호 데이터(비음성) 파일, 사운드(음성) 파일, 소스 코드 파일, 스프레드시트 파일, 테이블화 데이터 파일, 비디오 파일, 비디오 게임 파일, 가상 기계 파일, 웹페이지 파일, 일부의 기타 파일, 또는 그들의 조합을 포함할 수 있다.
도 2에 도시된 바와 같이, 파일 시스템(200) 내의 제2 폴더(204)는 하위 레벨 1 파일(264)(제1 하위 레벨 파일이라고도 함), 하위 레벨 2 파일(266)(제2 하위 레벨 파일이라고도 함), 및 하위 레벨 N 파일(268)(제N 하위 레벨 파일이라고도 함)을 또한 포함할 수 있다.
또한, 도시된 바와 같이, 제3 폴더(206)는 제1 하위 폴더(270), 제2 하위 폴더(272), 및 제N 하위 폴더(274)를 포함할 수 있다. 각 하위 폴더(270, 272, 274)는 이름, 식별자, 또는 일부의 다른 디스크립터를 포함할 수 있다. 제3 폴더(206) 내의 제1 하위 폴더(270)는 제1 파일(276), 제2 파일(278), 및 제N 파일(280)을 포함할 수 있다. 제3 폴더(206) 내의 제2 하위 폴더(272)는 제1 파일(282), 제2 파일(284), 및 제N 파일(286)을 포함할 수 있다. 또한, 제3 폴더(206) 내의 제3 하위 폴더(274)는 제1 파일(288), 제2 파일(290), 및 제N 파일(292)을 포함할 수 있다.
각 파일(276-292)은 아카이브 파일, 압축 파일, 컴퓨터-지원 설계 파일, 데이터베이스 파일, 데스크톱 출판 파일, 문서 파일, 재정 기록 파일, 폰트 파일, 지리 정보 시스템 파일, 그래픽 파일, 링크 파일, 숏컷 파일, 수학 파일, 오브젝트 코드 파일, 페이지 기술 언어 파일, 개인 정보 관리자 파일, 프리젠테이션 파일, 프로젝트 관리 소프트웨어 파일, 참조 관리 소프트웨어 파일, 과학 데이터 파일, 보안 파일, 신호 데이터(비음성) 파일, 사운드(음성) 파일, 소스 코드 파일, 스프레드시트 파일, 테이블화 데이터 파일, 비디오 파일, 비디오 게임 파일, 가상 기계 파일, 웹페이지 파일, 일부의 다른 파일, 또는 그들의 조합을 포함할 수 있다.
도 2는 파일 시스템(200) 내의 제N 폴더(206)가 하위 레벨 1 파일(294)(제1 하위 레벨 파일이라고도 함), 하위 레벨 2 파일(296)(제2 하위 레벨 파일이라고도 함), 및 하위 레벨 N 파일(298)(제N 하위 레벨 파일이라고도 함)을 포함할 수 있는 것을 또한 나타내고 있다.
도 3은 300으로 표기된 폴더의 예를 도시하고 있다. 폴더(300)는 도 1과 함께 설명된 파일 시스템(122, 152) 및 도 2와 함께 설명된 파일 시스템(200)과 함께 사용될 수 있다. 또한, 폴더(300)는 도 2에 도시된 폴더들(202, 204, 206) 중 어느 하나의 표현일 수 있다.
도 3에 도시된 바와 같이, 폴더(300)는 하위 폴더(302)를 포함할 수 있고, 하위 폴더(302)는 제1 파일(304), 제2 파일(306), 및 제N 파일(308)을 포함할 수 있다. 폴더(300)는 하위 레벨 1 파일(310)(제1 하위 레벨 파일이라고도 함), 하위 레벨 2 파일(312)(제2 하위 레벨 파일이라고도 함), 및 하위 레벨 N 파일(314)(제N 하위 레벨 파일이라고도 함)을 또한 포함할 수 있다. 각 파일(304-312)은 아카이브 파일, 압축 파일, 컴퓨터-지원 설계 파일, 데이터베이스 파일, 데스크톱 출판 파일, 문서 파일, 재정 기록 파일, 폰트 파일, 지리 정보 시스템 파일, 그래픽 파일, 링크 파일, 숏컷 파일, 수학 파일, 오브젝트 코드 파일, 페이지 기술 언어 파일, 개인 정보 관리자 파일, 프리젠테이션 파일, 프로젝트 관리 소프트웨어 파일, 참조 관리 소프트웨어 파일, 과학 데이터 파일, 보안 파일, 신호 데이터(비음성) 파일, 사운드(음성) 파일, 소스 코드 파일, 스프레드시트 파일, 테이블화 데이터 파일, 비디오 파일, 비디오 게임 파일, 가상 기계 파일, 웹페이지 파일, 일부의 기타 파일, 또는 그들의 조합을 포함할 수 있다.
도 3은 폴더(300)가 제1 숏컷(316), 제2 숏컷(318), 및 제N 숏컷(320)을 포함할 수 있는 것을 또한 도시하고 있다. 각 숏컷(316, 318, 320)은 기호 링크, 즉 심링크(symlink) 또는 소프트 링크일 수 있다. 또한, 각 숏컷(316, 318, 320)은 절대 또는 상대 경로 형태의 다른 파일 또는 디렉토리에 대한 참조를 포함할 수 있다.
도 3에 표시된 바와 같이, 폴더(300)는 폴더 해시(330)를 포함할 수 있고, 폴더 해시(330)는 폴더(300)가 컴퓨터 판독가능 매체의 파일 시스템 내에 저장되는 장소의 표시일 수 있다. 하위 폴더(302)는, 이 하위 폴더(302)가 컴퓨터 판독가능 매체의 파일 시스템 내에 저장되는 장소의 표시일 수 있는 하위 폴더 해시(332)를 포함할 수 있다. 또한, 하위 폴더(302) 내의 각 파일(304, 306, 308)은 대응하는 파일 해시(334, 336, 338)를 포함할 수 있다. 예를 들면, 제1 파일(304)은 제1 파일 해시(334)를 포함할 수 있고, 제2 파일(306)은 제2 파일 해시(336)를 포함할 수 있으며, 제N 파일(308)은 제N 파일 해시(338)를 포함할 수 있다. 각 파일 해시(334, 336, 338)는 각 파일(304, 306, 308)이 컴퓨터 판독가능 매체의 파일 시스템 내에 저장되는 장소를 표시할 수 있다.
도 3은, 하위 레벨 1 파일(310)이 관련 파일 해시(340)를 포함할 수 있고, 하위 레벨 2 파일(312)이 관련 파일 해시(342)를 포함할 수 있으며, 하위 레벨 N 파일(314)도 파일 해시(344)를 포함할 수 있는 것을 또한 도시하고 있다. 각 파일 해시(340, 342, 344)는 각 파일(310, 312, 314)이 컴퓨터 판독가능 매체의 파일 시스템 내에 저장되는 장소를 표시할 수 있다. 제1 숏컷(316)은 숏컷 해시(346)를 포함할 수 있고, 제2 숏컷(318)은 숏컷 해시(348)를 포함할 수 있으며, 제N 숏컷(320)도 숏컷 해시(350)를 포함할 수 있다. 각 숏컷 해시(346, 348, 350)는 각 숏컷(316, 318, 320)이 컴퓨터 판독가능 매체의 파일 시스템 내에 저장되는 장소를 표시할 수 있다.
특정 예에서, 하위 폴더 해시(332)는 하위 폴더(302) 내에 저장된 파일들(304, 306, 308)과 관련된 파일 해시들(334, 336, 338)의 함수일 수 있다. 즉, 하위 폴더 해시(332)는 하위 폴더(302) 내에 저장되는 파일들(304, 306, 308)과 관련된 파일 해시들(334, 336, 338)에 기초하여 연산될 수 있다. 임의의 파일 해시들(334, 336, 338)에 대한 임의의 변화들은 새로운 하위 폴더 해시(332)를 초래할 것이다.
폴더 해시(330)는 폴더 내에 저장된 하위 폴더(302)와 관련된 하위 폴더 해시(332), 하위 폴더(302) 내에 저장된 파일들(304, 306, 308)과 관련된 파일 해시들(334, 336, 338), 폴더(300) 내에 저장된 하위 레벨 파일들(310, 312, 314)과 관련된 하위 레벨 파일 해시들(340, 342, 344), 및 폴더(300) 내에 저장된 숏컷들(316, 318, 320)과 관련된 숏컷 해시들(346, 348, 350)의 함수일 수 있다. 즉, 폴더 해시(330)는 폴더 내에 저장된 하위 폴더(302)와 관련된 하위 폴더 해시(332), 하위 폴더(302) 내에 저장된 파일들(304, 306, 308)과 관련된 파일 해시들(334, 336, 338), 폴더(300) 내에 저장된 하위 레벨 파일들(310, 312, 314)과 관련된 하위 레벨 파일 해시들(340, 342, 344), 및 폴더(300) 내에 저장된 숏컷들(316, 318, 320)과 관련된 숏컷 해시들(346, 348, 350)에 기초하여 연산될 수 있다. 따라서, 하위 폴더 해시(332), 파일 해시들(334, 336, 338), 하위 레벨 파일 해시들(340, 342, 344), 및 숏컷 해시들(346, 348, 350) 중 어느 것에 대한 임의의 변화들은 새로운 폴더 해시(330)를 초래할 것이다.
따라서, 각 폴더(300), 하위 폴더(302), 파일들(304, 306, 308), 하위 레벨 파일들(310, 312, 314), 및 숏컷들(316, 318, 320)에 대해 연산되고 할당된 해시들(330-350)의 상태를 모니터링함으로써, 공유 폴더 및 파일 동기화 시스템(100)(도 1), 예컨대 원격 및 로컬 공유 폴더 및 파일 동기화 모듈(120, 150)(도 1)은, 폴더들(202-206, 300), 하위 폴더들(210-214, 240-244, 270-274, 302), 파일들(216-232, 246-262, 276-288, 304-308), 하위 레벨 파일들(234-238, 264-268, 294-298, 310-314), 및 숏컷들(316-320)의 콘텐츠를 실제로 모니터링하지 않아도, 폴더들(202-206, 300), 하위 폴더들(210-214, 240-244, 270-274, 302), 파일들(216-232, 246-262, 276-288, 304-308), 하위 레벨 파일들(234-238, 264-268, 294-298, 310-314), 숏컷들(316-320), 또는 그들의 조합이 변경되거나, 또는 그 안의 데이터에 대한 변화들을 겪었는지를 신속하게 확인할 수 있다.
예를 들면, 원격 공유 폴더 및 파일 동기화 모듈(120, 150)은 원격 또는 로컬 파일 시스템(122, 152)용의 해시들(330-350)의 현재 리스트를 해시들의 가장 최근의 리스트, 예컨대 해당 특정 원격 또는 로컬 파일 시스템(122, 152)용의 마스터 해시 리스트(124, 154)와 비교하여, 폴더들(202-206, 300), 하위 폴더들(210-214, 240-244, 270-274, 302), 파일들(216-232, 246-262, 276-288, 304-308), 하위 레벨 파일들(234-238, 264-268, 294-298, 310-314), 및 숏컷들(316-320)이 동기화될 필요가 있을 수 있는지를 결정할 수 있다. 해시들(330-350) 중 어느 것도 변화되지 않은 경우, 원격 또는 로컬 파일 시스템(122, 152)에 대해 동기화는 수행되지 않을 것이다.
원격 또는 로컬 공유 폴더 및 파일 동기화 모듈(120, 150)은 현재의 폴더 해시들(330)을 신속하게 트래버싱하여, 존재할 경우, 폴더 해시들(330)이 각 폴더(202-206, 300)용의 가장 최근에 기록된 폴더 해시(330)와 다른지를 결정할 수 있다. 상이한 임의의 폴더 해시들(330)은, 폴더(202-206, 300)의 하위 폴더(210-214, 240-244, 270-274, 302) 내의 파일(216-232, 246-262, 276-288, 304-308)이 변경, 예컨대, 갱신, 편집, 삭제, 생성 등이 이루어진 것의 표시를 원격 또는 로컬 공유 폴더 및 파일 동기화 모듈(120, 150)에 제공할 수 있다. 마스터 리스트(124, 154) 상의 폴더 해시(330)와는 다른 폴더 해시(330)를 갖는 임의의 폴더(202-206, 300)에 대해, 원격 또는 로컬 동기화 모듈(120, 150)은 폴더들(202-206, 300) 내에 저장된 파일들(216-232, 246-262, 276-288, 304-308)과 관련된 파일 해시들(334-338)을 트래버싱하여, 존재할 경우, 파일들(216-232, 246-262, 276-288, 304-308)이 변경되었는지를 결정할 수 있다. 또한, 하위 레벨 파일 해시들(340-344)은 하위 레벨 파일들(234-238, 264-268, 294-298, 310-314)이 변경, 갱신, 또는 달리 변화되었는지를 결정하기 위해서 트래버싱될 수 있다. 또한, 숏컷 해시들(346-350)은 임의의 숏컷들(316-320)이 변경되거나 변화되었는지를 결정하기 위해 트래버싱될 수 있다.
또한, 새로운, 또는 상이한 폴더 해시(330)를 갖는 각 폴더(202-206, 300)에 대해, 원격 또는 로컬 공유 폴더 및 파일 동기화 모듈(120, 150)은 폴더들(202-206, 300) 내의 하위 폴더(210-214, 240-244, 270-274, 302)와 관련된 하위 폴더 해시들(332)을 트래버싱하여, 존재할 경우, 하위 폴더들(210-214, 240-244, 270-274, 302)이 변경되어 있는 파일들(216-232, 246-262, 276-292, 304-308)을 포함하는지를 결정할 수 있다. 그 후, 상이한 하위 폴더 해시(332)를 갖는 임의의 하위 폴더(210-214, 240-244, 270-274, 310)에 대해, 원격 또는 로컬 동기화 모듈(120, 150)은 하위 폴더(210-214, 240-244, 270-274, 310) 내에 저장된 파일들(216-232, 246-262, 276-292, 304-308)과 관련된 파일 해시들(334-338)을 트래버싱하여, 파일들(216-232, 246-262, 276-292, 304-308)이 상이한 파일 해시들(334-338)을 갖는지를 결정할 수 있다.
상이한 파일 해시(334-338)를 포함하는 임의의 파일(216-232, 246-262, 276-292, 304-308)은 변경된 것이고 특정 파일(216-232, 246-262, 276-292, 304-308)이 가장 최근의 행위를 포함하도록 동기화된 것으로 간주된다. 행위들은 파일(220-236, 250-266, 280-296, 304-308) 또는 파일(220-236, 250-266, 280-296, 304-308)의 콘텐츠에 대한 갱신, 편집, 추가, 삭제, 또는 임의의 다른 변화를 포함할 수 있다.
도 4 내지 도 9는 공유 폴더들 및 파일들의 동기화와 관련된 다양한 공정을 도시하고 있다. 도 4는, 예를 들면 파일들 및 마스터 해시 리스트를 원격 파일 시스템에 업로딩하기 위한 예시적인 공정의 흐름도를 도시하고 있다. 도 5 및 도 6은 공유 폴더들 및 파일들을 동기화하기 위한 예시적인 공정의 흐름도를 도시하고 있다. 도 7은 로컬 파일 시스템으로부터의 파일들을 동기화하기 위한 예시적인 공정의 흐름도를 도시하고 있다. 도 8은 원격 파일 시스템으로부터의 파일들을 동기화하기 위한 예시적인 공정의 흐름도를 도시하고 있다. 또한, 도 9는 폴더 트리 및 하위 폴더 트리를 트래버싱하여 동기화를 위한 파일 변화들을 탐색하기 위한 예시적인 공정의 흐름도를 도시하고 있다.
공정들은 일부 또는 전부가 하드웨어, 소프트웨어 또는 그들의 조합으로 구현될 수 있는 동작들의 시퀀스를 표현하는 논리 흐름도에서의 블록들의 집합으로서 도시되어 있다. 소프트웨어의 맥락에서, 블록들은 하나 이상의 프로세서에 의해 실행되었을 때, 열거된 동작들을 수행하는 하나 이상의 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 실행가능 명령어들을 표현한다. 일반적으로, 컴퓨터 실행가능 명령어들은 특정 기능들을 수행하거나 특정 추정 데이터 유형들을 구현하는 루틴들, 프로그램들, 오브젝트들, 구성요소들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한적인 것으로 해석되지 않아야 한다. 임의의 수의 설명된 블록들이 임의의 순서 및/또는 병렬로 조합되어 공정, 또는 대안적인 공정들을 구현할 수 있고, 블록들 중 전부가 실행될 필요는 없다. 설명을 위해, 본원에서의 공정들은 본원의 예들에서 설명되는 프레임워크들, 아키텍처들, 및 환경들을 참조하여 설명되지만, 공정들은 다양한 다른 프레임워크, 아키텍처 또는 환경에서 구현될 수 있다.
다양한 공정의 설명은, 소정의 과도기 언어 및 방향성 언어, 예를 들어 "그런 다음(then)", "다음으로(next)", "그 후(thereafter)", "차후에(subsequently)", "로 되돌아가면(returning to)", "로 계속하면(continuing to)", "로 진행하면(proceeding to)" 등을 포함할 수 있다. 이들 단어, 및 그 외의 유사한 단어들은 단순히 공정들의 그래픽적 도시를 통해 독자를 안내하려고 하는 것이며, 도면들에 나타낸 공정 단계들이 수행될 수 있는 순서를 제한하려는 것은 아니다.
또한, 도 4 내지 도 9에 도시된 다양한 공정 단계들 중 하나 이상은 분산 컴퓨팅 자원들(104, 106, 108)(도 1) 또는 클라이언트 컴퓨팅 장치들(130, 132, 134)(도 1) 중 하나 이상에 의해 수행되어 그 안에 저장되거나 또는 그것에 액세스 가능한 메모리 장치에 저장된 공유 폴더들 및 파일들을 동기화할 수 있다. 특히, 도 4 내지 도 9에 도시된 다양한 공정 단계 중 하나 이상은 분산 컴퓨팅 자원들(104, 106, 108)(도 1) 내의 원격 공유 폴더 및 파일 동기화 모듈(120)(도 1), 클라이언트 컴퓨팅 장치(130, 132, 134)(도 1) 내의 로컬 공유 폴더 및 파일 동기화 모듈(150)(도 1), 또는 그들의 조합에 의해 수행될 수 있다.
상기한 바와 같이, 도 4는 파일들 및 마스터 해시 리스트를 로컬 파일 시스템으로부터 원격 파일 시스템에 업로딩하기 위한, 400으로 표기된 예시적인 공정의 흐름도를 도시하고 있다. 402에서 시작하면, 공정(400)은 변수 N=1을 설정하는 단계를 포함한다. 변수 N은, 공정이 반복하는 임의의 파일들 없이 한 번에 하나씩 개별 파일들을 트래버싱할 수 있도록 카운터로서 기능할 것인 정수일 수 있다. 404에서, 공정(400)은 로컬 파일 시스템 내의 제N 폴더용의 폴더 해시를 연산하는 단계를 포함할 수 있다. 제N 폴더용의 폴더 해시는, 로컬 파일 시스템이 저장되는 메모리, 또는 컴퓨터 판독가능 매체에 제N 폴더와 관련된 데이터를 매핑하는데 사용되는 해시 테이블에 기초하여 연산되거나, 달리 결정될 수 있다. 제N 폴더용의 폴더 해시는 그 안의 각 하위 폴더용의 하위 폴더 해시, 제N 폴더 내의 각 파일용의 파일 해시, 및 제N 폴더 내의 하위 폴더 내의 각 파일용의 파일 해시에 기초한다. 특정 측면에서, 공정(400)은 파일들과 관련된 데이터를 저장하고 수신하는데 사용되는 데이터 모델을 레버리징(leverage)할 수 있다. 공정(400)은 원격 프로시저 호출(remote procedure call: RPC)을 사용하여 파일 시스템 내의 데이터와 관련된 해시 테이블로부터 폴더 해시를 검색할 수 있다. 구체적으로, 공정(400)은 GetRootFolder RPC, 또는 GetRootFolder RPC의 변형된 버전를 사용하여, 해시 테이블로부터 폴더 해시를 검색할 수 있다.
406에서, 공정(400)은 로컬 파일 시스템 내의 제N 폴더 내의 각 하위 폴더용의 하위 폴더 해시를 연산하거나, 또는 달리 결정하는 단계를 포함할 수 있다. 제N 폴더 내의 각 하위 폴더용의 해시는, 로컬 파일 시스템이 저장되는 메모리, 또는 컴퓨터 판독가능 매체에 제N 폴더 내의 각 하위 폴더와 관련된 데이터를 매핑하는데 사용되는 해시 테이블에 기초하여 연산될 수 있다. 제N 폴더 내의 각 하위 폴더용의 해시는 제N 폴더 내의 하위 폴더 내의 각 파일용의 해시에 기초한다. 또한, 특정 측면에서, 공정(400)은 원격 프로시저 호출(RPC)을 사용하여 파일 시스템 내의 데이터와 관련된 해시 테이블로부터 하위 폴더 해시를 검색할 수 있다. 구체적으로, 공정(400)은 GetRootFolder RPC, 또는 GetRootFolder RPC의 변형된 버전을 사용하여, 해시 테이블로부터 하위 폴더 해시를 검색할 수 있다.
408로 이동하면, 공정(400)은 제N 폴더 내의 각 파일용의 파일 해시를 연산하는 단계를 포함할 수 있다. 이것은 제N 폴더 내의 각 하위 폴더 내의 각 파일을 포함한다. 제N 폴더 내의 각 파일용의 해시는 로컬 파일 시스템이 저장되는 메모리, 또는 컴퓨터 판독가능 매체에 제N 폴더 내의 각 파일과 관련된 데이터를 매핑하는데 사용되는 해시 테이블에 기초하여 연산될 수 있다. 또한, 특정 측면에서, 공정(400)은 원격 프로시저 호출(RPC)을 사용하여 파일 시스템 내의 데이터와 관련된 해시 테이블로부터 각 파일용의 파일 해시를 검색할 수 있다. 구체적으로, 공정(400)은 GetRootFolder RPC, 또는 GetRootFolder RPC의 변형된 버전을 사용하여, 해시 테이블로부터 각 파일용의 파일 해시를 검색할 수 있다.
410으로 계속하면, 공정(400)은 로컬 파일 시스템 상에 제N 폴더용의 폴더 해시, 하위 폴더 해시들, 및 파일 해시들을 기록하는 단계를 포함할 수 있다. 제N 폴더용의 폴더 해시, 하위 폴더 해시들, 및 파일 해시들은 제N 폴더용의 식별자, 제N 폴더 내의 각 하위 폴더용의 식별자, 및 제N 폴더 내의 각 파일용의 식별자와 함께 기록되고, 이들과 관련될 수 있다. 각 식별자는 제N 폴더, 각 하위 폴더, 및 각 파일과 관련된 이름, 타이틀, 또는 일부의 다른 설명일 수 있다. 412에서, 공정(400)은 파일 시스템 내에 다른 폴더가 있는지의 여부를 결정하는 단계를 포함한다.
파일 시스템 내에 다른 폴더가 있는 경우, 공정(400)은 414로 진행할 수 있고, 공정(400)은 N의 값을 1만큼 증가시키는 단계를 포함할 수 있다. 즉, N의 값은 N의 현재 값에 1을 추가, 즉 N=N+1로 함으로써 재연산될 수 있다. 그 후, 공정(400)은 404로 되돌아갈 수 있고, 공정(400)은 본원에서 설명되는 단계 404 내지 410을 수행할 수 있다. 412에서, 공정(400)이 잔류하는 폴더들이 없다고 결정한 경우, 공정(400)은 416으로 진행할 수 있다.
416에서, 공정(400)은 상기에서 검색된 해시 값들을 단일의 마스터 해시 리포트 또는 단일의 마스터 해시 리스트 내에 합산하는 단계를 포함할 수 있다. 마스터 해시 리스트는 각 폴더용의 폴더 해시, 각 폴더 내의 각 하위 폴더용의 하위 폴더 해시, 및 각 하위 폴더 및 폴더 내의 각 파일용의 파일 해시를 포함할 수 있다. 마스터 해시 리스트는 테이블로서 컴파일링될 수 있고, 로컬 파일 시스템과 관련된 클라이언트 컴퓨팅 장치의 시간/날짜 스탬프 및 식별자를 포함할 수 있다. 418에서, 공정(400)은 폴더들 및 폴더들의 콘텐츠, 예컨대 그 안의 하위 폴더들 및 파일들을 원격 파일 시스템에 전송하는 단계를 포함할 수 있다. 예를 들면, 폴더들 및 그 안의 콘텐츠는 네트워크 연결을 통해 분산 컴퓨팅 자원의 원격 파일 시스템에 업로딩될 수 있다. 그 후, 공정(400)은 420에서 종료될 수 있다.
도 5 및 도 6은 공유 폴더들 및 파일들을 동기화하기 위한 예시적인 공정(500)의 흐름도를 도시하고 있다. 502에서 시작하면, 공정(500)은 공유 폴더들, 공유 하위 폴더들, 공유 파일들, 공유 하위 레벨 파일들, 및/또는 공유 숏컷들의 원격 인스턴스들이 저장되는 원격 파일 시스템의 상태를 주기적으로 폴링(polling)하거나, 달리 결정하는 단계를 포함할 수 있다.
원격 파일 시스템 상태는 복수의 원격 폴더 해시 값을 포함할 수 있다. 복수의 원격 폴더 해시 값은 원격 파일 시스템에서의 공유 하위 폴더들의 복수의 원격 인스턴스와 관련된 복수의 하위 폴더 해시, 공유 파일들의 복수의 원격 인스턴스와 관련된 복수의 파일 해시, 공유 하위 파일들의 복수의 원격 인스턴스와 관련된 복수의 하위 파일 해시, 공유 숏컷들의 복수의 원격 인스턴스와 관련된 복수의 숏컷 해시, 또는 그들의 조합에 적어도 부분적으로 기초하여 결정될 수 있다.
또한, 원격 파일 시스템의 상태는 마스터 해시 리스트 또는 현재의 원격 파일 시스템 해시 리스트로서 조직화될 수 있다. 폴링은 원격 파일 시스템에서의 공유 폴더 및 파일 동기화 모듈에 의해 개시될 수 있고, 그 결과가 로컬 파일 시스템에서의 공유 폴더 및 파일 동기화 모듈에 전송될 수 있다. 반대로, 로컬 파일 시스템에서의 공유 폴더 및 파일 동기화 모듈은 원격 파일 시스템에서의 공유 폴더들 및 파일들과 관련된 해시들의 현재 상태에 대한 요청을 원격 파일 시스템에서의 공유 폴더 및 파일 동기화 모듈에 전송할 수 있다. 이러한 요청에 응답하여, 원격 파일 시스템에서의 공유 폴더 및 파일 동기화 모듈은 공유 폴더들 및 파일들의 해시들의 상태를 폴링하고 폴링 결과를 로컬 파일 시스템에서의 공유 폴더 및 파일 동기화 모듈에 전송할 수 있다. 로컬 파일 시스템에서의 공유 폴더 및 파일 동기화 모듈은 원격 파일 시스템에서의 공유 폴더들 및 파일과 관련된 해시들의 현재 상태를, 예컨대 마스터 해시 리스트로서 수신할 수 있다.
504에서, 공정(500)은 원격 파일 시스템의 현재 상태를 로컬 파일 시스템에서 사용 가능한 자원들 또는 로컬 파일 시스템에서의 동기화 모듈에 의해 결정된 로컬 파일 시스템의 상태와 비교하는 단계를 포함할 수 있다. 로컬 파일 시스템 상태는 로컬 파일 시스템 내의 복수의 로컬 폴더 해시 값을 포함할 수 있다. 복수의 로컬 폴더 해시 값은 로컬 파일 시스템에서의 공유 폴더들의 복수의 로컬 인스턴스와 관련된 복수의 하위 폴더 해시, 공유 파일들의 복수의 로컬 인스턴스와 관련된 복수의 파일 해시, 공유 하위 파일들의 복수의 로컬 인스턴스와 관련된 복수의 하위 파일 해시, 공유 숏컷들의 복수의 로컬 인스턴스와 관련된 복수의 숏컷 해시, 또는 그들의 조합에 적어도 부분적으로 기초하여 결정될 수 있다.
공정(500)은 원격 파일 시스템 상태 및 로컬 파일 시스템 상태를 비교하여 원격 파일 시스템 상태 내의 복수의 원격 폴더 해시 값 및 로컬 파일 시스템 상태 내의 복수의 로컬 폴더 해시 값의 임의의 차이를 결정할 수 있다. 원격 폴더 해시 값이 로컬 폴더 해시 값과는 다른 임의의 공유 폴더는 본원에서 설명되는 바와 같이 로컬 파일 시스템 및 원격 파일 시스템 간에서 동기화될 수 있다.
구체적으로, 로컬 파일 시스템에서의 공유 폴더 및 파일 동기화 모듈은 공유 폴더들 및 파일들의 로컬 버전과 관련된 해시들의 폴링을 실시하여 현재의 로컬 해시 리스트를 얻을 수 있다. 현재의 원격 해시 리스트, 예컨대 마스터 해시 리스트는 이전의 마스터 해시 리스트와 비교될 수 있다. 현재의 로컬 해시 리스트도 가장 최근의 이전에 기록된 로컬 해시 리스트와 비교될 수 있다. 또한, 현재의 로컬 해시 리스트는 현재의 마스터 해시 리스트와 비교되어 현재의 로컬 해시 리스트 내의 해시들과 현재의 마스터 해시 리스트 내의 해시들 간의 임의의 차이를 결정할 수 있다.
특정 측면에서, 공정(500)은 특정 공유 파일이 불일치 파일 해시 페어링(inconsistent file hash pairing)을 포함하는지의 여부를 결정하는 단계를 포함할 수 있다. 불일치 파일 해시 페어링은 특정 공유 파일의 원격 인스턴스용의 원격 파일 해시와는 다른 특정 공유 파일의 로컬 인스턴스용의 로컬 파일 해시를 포함할 수 있다. 또한, 공정(500)은 후술하는 바와 같이 불일치 파일 해시 페어링을 갖는 특정 공유 파일을 동기화하는 단계를 포함할 수 있다. 다른 측면에서, 불일치 파일 해시 페어링은 특정 공유 파일의 로컬 인스턴스용의 누락(missing) 로컬 파일 해시 또는 특정 공유 파일의 원격 인스턴스용의 누락 원격 파일 해시를 포함할 수 있다. 이러한 경우, 공정(500)은 로컬 파일 시스템으로부터 특정 공유 파일의 로컬 인스턴스를 삭제하는 단계 또는 원격 파일 시스템으로부터 특정 공유 파일의 원격 인스턴스를 삭제하는 단계를 포함할 수 있다.
506으로 이동하면, 공정(500)은 임의의 파일들이 로컬로 변화되었는지를 결정하는 단계를 포함할 수 있다. 상기에서 수행되는 비교에 기초하여, 현재의 로컬 해시 리스트와 가장 최근의 이전에 기록된 로컬 해시 리스트 간의 임의의 차이는 파일이 사용자에 의해 로컬로 변화된 것을 표시할 수 있다. 또한, 현재의 로컬 해시 리스트와 현재의 마스터 해시 리스트 간의 임의의 차이점은 파일들이 원격으로 또는 로컬로 변환된 것을 표시할 수 있다. 각 파일과 관련된 타임 스탬프(time stamp)는 가장 최근의 버전을 표시할 수 있다. 가장 최근의 타임 스탬프를 갖는 로컬 파일은 로컬로 변화된 것으로 간주될 수 있다.
특히, 공정(500)은 특정 공유 파일의 로컬 인스턴스용의 타임 스탬프를 결정하는 단계, 특정 공유 파일의 원격 인스턴스용의 타임 스탬프를 결정하는 단계, 및 특정 공유 파일을 특정 공유 파일의 가장 최근의 로컬 인스턴스 및 특정 공유 파일의 가장 최근의 원격 인스턴스와 동기화하는 단계를 포함할 수 있다. 예를 들면, 공정(500)은 특정 공유 파일의 로컬 인스턴스를 원격 파일 시스템에 업로딩하는 단계 또는 특정 공유 파일의 원격 인스턴스를 로컬 파일 시스템에 다운로딩하는 단계를 포함할 수 있다.
506에서, 임의의 파일들이 로컬로 변화된 경우, 공정(500)은 508로 진행할 수 있고, 공정(500)은 파일들을 원격 파일 시스템에 업로딩하는 단계를 더 포함할 수 있다. 하나의 측면에서, 변화되어 있는 전체 파일이 원격 파일 시스템에 업로딩될 수 있다. 다른 측면에서, 업로딩 시간 및 저장을 절감하기 위해서, 공유 폴더 및 파일 동기화 시스템은 파일로부터의 변화들을 분석하고 그 변화들만을 원격 파일 시스템에 업로딩할 수 있다. 업로딩 후, 공유 폴더 및 파일 동기화 시스템은 원격 파일 시스템에서의 변화들을 갖는 파일을 갱신할 수 있다. 그 후, 공정(500)은 510으로 이동할 수 있다. 506으로 되돌아가면, 로컬로 변화되어 있는 임의의 파일들이 없는 경우, 공정(500)은 직접 510으로 이동할 수 있다.
510에서, 공정(500)은 임의의 폴더들, 하위 폴더들, 파일들, 또는 그들의 조합이 원격 파일 시스템에서 삭제되었는지의 여부를 결정하는 단계를 포함할 수 있다. 가장 최근의 마스터 해시 리스트와 현재의 마스터 해시 리스트의 비교에 기초하여, 상기 시스템은 임의의 폴더 해시들, 하위 폴더 해시들, 또는 파일 해시들이 현재의 마스터 해시 리스트로부터 누락되고 있는지의 여부를 결정할 수 있다. 그러한 경우, 현재의 마스터 해시 리스트 내의 누락 해시들에 대응하는 해당 폴더들, 하위 폴더들, 파일들, 하위 레벨 파일들, 또는 숏컷들은 원격 파일 시스템으로부터 삭제된 것으로 간주된다. 원격 파일 시스템으로부터 삭제되는 폴더들, 하위 폴더들, 파일들, 하위 레벨 파일들, 또는 숏컷들이 있는 경우, 공정(500)은 512로 이동할 수 있다. 512에서, 공정(500)은 로컬 파일 시스템으로부터 대응하는 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷을 삭제하는 단계를 포함할 수 있다. 특정 측면에서, 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷은 즉시 삭제될 수 있다. 다른 측면에서는, 지연 삭제가 사용될 수 있고, 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷은 미리 정해진 시간 동안 삭제 폴더, 또는 캐시 내에 배치될 수 있다. 미리 정해진 시간이 만료된 후, 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷은 영구적으로 삭제될 수 있다. 삭제 폴더, 또는 캐시는 암호화되거나 암호화되지 않을 수 있다. 또한, 삭제 폴더, 또는 캐시는 사용자로부터 숨겨지거나 또는 숨겨지지 않을 수 있다.
그 후, 공정(500)은 514로 계속될 수 있다. 510으로 되돌아가면, 원격 파일 시스템으로부터 삭제된 임의의 폴더들, 하위 폴더들, 파일들, 하위 레벨 파일들, 또는 숏컷들이 없는 경우, 공정(500)은 직접 514로 이동할 수 있다.
514에서, 공정(500)은 임의의 폴더들, 하위 폴더들, 파일들, 또는 그들의 조합이 로컬 파일 시스템에서 삭제되었는지의 여부를 결정하는 단계를 포함할 수 있다. 가장 최근에 기록된 이전의 로컬 해시 리스트와 현재의 로컬 해시 리스트의 비교에 기초하여, 상기 시스템은 임의의 폴더 해시들, 하위 폴더 해시들, 또는 파일 해시들이 현재의 로컬 해시 리스트로부터 누락되고 있는지의 여부를 결정할 수 있다. 그러한 경우, 현재의 로컬 해시 리스트 내의 누락 해시들에 대응하는 해당 폴더들, 하위 폴더들, 파일들, 하위 레벨 파일들, 또는 숏컷들은 로컬 파일 시스템으로부터 삭제된 것으로 간주된다. 로컬 파일 시스템으로부터 삭제된 폴더들, 하위 폴더들, 파일들, 하위 레벨 파일들, 또는 숏컷들이 있는 경우, 공정(500)은 516으로 이동할 수 있다. 516에서, 공정(500)은 원격 파일 시스템으로부터 대응하는 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷을 삭제하는 단계를 포함할 수 있다. 그 후, 공정(500)은 도 6의 602로 계속될 수 있다. 514로 되돌아가면, 로컬 파일 시스템으로부터 삭제된 임의의 폴더들, 하위 폴더들, 파일들, 하위 레벨 파일들, 또는 숏컷들이 없는 경우, 공정(500)은 직접 도 6의 602로 이동할 수 있다.
602에서, 공정(500)은 임의의 파일들이 원격으로 갱신되거나, 또는 달리 변화되었는지의 여부를 결정하는 단계를 포함할 수 있다. 또한, 공정(500)은 임의의 새로운 파일들이 원격 파일 시스템에 추가되었는지의 여부를 결정하는 단계를 포함할 수 있다. 상기에서 수행된 비교에 기초하여, 로컬 파일 시스템에서의 가장 최근의 마스터 리스트와 비교했을 때, 현재의 원격 해시 데이터 내의 임의의 차이는 파일이 다른 클라이언트 컴퓨팅 장치(예컨대, 다른 로컬 파일 시스템)에서 사용자에 의해 변화된 것 및 해당 변화가 원격 파일 시스템에서 변화되었지만, 원격 파일 시스템에 대한 액세스를 갖는 모든 클라이언트 장치 - 현재의 로컬 파일 시스템을 포함함 - 전반에 걸쳐서 아직 전파되지 않은 것을 표시할 수 있다. 또한, 현재의 로컬 해시 리스트와 현재의 마스터 해시 리스트 간의 임의의 차이는 파일들이 원격으로 또는 로컬로 변화된 것을 표시할 수 있다. 각 파일과 관련된 타임 스탬프는 가장 최근의 버전을 표시할 수 있다. 가장 최근의 타임 스탬프를 갖는 원격 파일은 원격으로 변화된 것으로 간주될 수 있다. 마스터 해시 리스트 내에 새로운 폴더 해시들, 하위 폴더 해시들, 또는 파일 해시들이 있는 경우, 대응하는 폴더들, 하위 폴더들, 파일들, 하위 레벨 파일들, 또는 숏컷들은 새로운 것으로 간주될 것이다.
602에서, 임의의 파일들이 원격으로 갱신되었거나, 또는 원격으로 저장되는 새로운 파일들이 있는 경우, 공정(500)은 604로 진행할 수 있고, 공정(500)은 갱신된 파일들 및 새로운 파일들을 원격 파일 시스템으로부터 로컬 파일 시스템으로 다운로딩하는 단계를 더 포함할 수 있다. 하나의 측면에서, 갱신되었거나, 또는 달리 변화되어 있는 전체 파일은 로컬 파일 시스템에 다운로딩될 수 있다. 다른 측면에서, 다운로딩 시간 및 저장을 절감하기 위해서, 공유 폴더 및 파일 동기화 시스템은 파일로부터의 갱신, 또는 변화를 분석하고 갱신, 또는 변화만을 로컬 파일 시스템에 다운로딩할 수 있다. 다운로딩이 완료된 후, 공유 폴더 및 파일 동기화 시스템은 갱신, 또는 변화를 갖는 파일을 로컬 파일 시스템에서 갱신할 수 있다. 그 후, 공정(500)은 606으로 이동할 수 있다. 602로 되돌아가면, 원격으로 갱신되어 있는 임의의 파일들이 없거나, 또는 원격 파일 시스템에서 임의의 새로운 파일들이 없는 경우, 공정(500)은 직접 606으로 이동할 수 있다.
606에서, 공정(500)은 공유 폴더들, 하위 폴더들, 파일들, 하위 레벨 파일들, 또는 숏컷들 중 어느 것에 대한 액세스 허용이 임의의 로컬 사용자들에 대해 변화되는지의 여부를 결정하는 단계를 포함할 수 있다. 그렇지 않은 경우, 공정(500)은 608에서 종료될 수 있다. 한편, 액세스 허용이 임의의 로컬 사용자들에 대해 변화된 경우, 공정(500)은 610으로 이동하고, 여기서 공정(500)은 특정 로컬 사용자를 위한 특정 공유 폴더, 하위 폴더, 하위 레벨 파일, 또는 숏컷에 대한 액세스가 허여 또는 거부되는지의 여부를 결정하는 단계를 포함할 수 있다. 특정 공유 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷에 대한 액세스가 특정 로컬 사용자에게 거부된 경우, 공정(500)은 612로 이동하고, 공정(500)은 특정 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷에 대한 액세스가 거부되는 로컬 사용자와 관련된 로컬 파일 시스템으로부터 특정 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷을 삭제하는 단계를 포함할 수 있다. 그 후, 공정(500)은 608에서 종료될 수 있다.
610으로 되돌아가면, 특정 공유 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷에 대한 액세스가 특정 로컬 사용자에게 허여된 경우, 공정(500)은 614로 이동하고, 공정(500)은 특정 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷을 원격 파일 시스템으로부터 특정 폴더, 하위 폴더, 파일, 하위 레벨 파일, 또는 숏컷에 대한 액세스가 허여되는 로컬 사용자와 관련된 로컬 파일 시스템으로 다운로딩하는 단계를 포함할 수 있다. 그 후, 공정(500)은 608에서 종료될 수 있다.
이제 도 7을 참조하면, 로컬 파일 시스템으로부터의 파일들을 동기화하기 위한 예시적인 공정의 흐름도가 도시되어 있고 개괄적으로 700으로 표기되어 있다. 702에서 시작하면, 공정(700)은 주기적으로 다음의 단계들이 수행되는 두 루프(do loop)로 진입하는 단계를 포함할 수 있다. 예를 들면, 704에서, 공정(700)은 변수 N을 1과 동일하게 설정하는 단계를 포함할 수 있다. 변수 N은 공유 폴더 및 파일 동기화 시스템이 임의의 폴더들을 반복하지 않으면서 한 번에 하나씩 개별 폴더들을 트래버싱할 수 있도록 카운터로서 기능하는 정수일 수 있다. 706에서, 공정(700)은 로컬 파일 시스템의 제N 폴더의 현재의 해시를 검색하는 단계를 포함할 수 있다. 제N 폴더용의 현재의 해시는 로컬 파일 시스템 내에 저장된 데이터의 메모리 위치를 매핑하는데 사용되는 로컬 파일 시스템과 관련된 해시 테이블로부터 검색될 수 있다. 특히, 제N 폴더용의 현재의 해시는 GetRootFolder RPC를 사용하여 로컬 파일 시스템 해시 테이블로부터 검색될 수 있다. 다른 측면에서, 공정(700)은 제N 폴더 내에 저장된 임의의 하위 폴더들, 파일들, 하위 레벨 파일들, 및/또는 숏컷들과 관련된 하위 폴더 해시들, 파일 해시들, 하위 레벨 파일 해시들, 및/또는 숏컷 해시들에 기초하여 제N 폴더용의 현재의 해시를 재연산할 수 있다. 공정(700)은 현재의 해시를 재연산하고 해당 값을 사용하여 검색된 값의 정확도를 검증할 수 있다. 또는, 해시 테이블로부터 현재의 해시를 검색하는 대신에, 공정(700)은 전술한 바와 같이 해시를 재연산하는 단계를 포함할 수 있다.
로컬 파일 시스템의 제N 폴더의 현재의 폴더 해시가 검색된 후, 공정(700)은 708로 진행할 수 있다. 708에서, 공정(700)은 로컬 파일 시스템의 제N 폴더의 현재의 폴더 해시를 마스터 해시 리스트 내에 기록된 제N 폴더용의 이전의 해시와 비교하는 단계를 포함할 수 있다. 특정 측면에서, 상기 비교는 제N 폴더의 폴더 해시의 실제 값을 마스터 해시 리스트 내에 저장된 제N 폴더용의 폴더 해시의 가장 최근에 기록된 값과 비교하여 제N 폴더의 현재의 폴더 해시가 제N 폴더용의 폴더 해시의 가장 최근에 기록된 값과 다른 경우를 결정하는 단계를 포함할 수 있다.
710에서, 공정(700)은 제N 폴더의 현재의 폴더 해시가 제N 폴더용의 이전에 기록된 폴더 해시와 다른지의 여부를 결정하는 단계를 포함할 수 있다. 특정 측면에서, 제N 폴더의 현재의 폴더 해시는 제N 폴더 내의 하위 폴더들 및 제N 폴더 내의 파일들, 예컨대 제N 폴더 내의 임의의 하위 폴더들에 따라 달라진다. 제N 폴더 내의 임의의 파일의 콘텐츠가 변화하는 경우, 파일의 파일 해시가 변화하고 제N 폴더의 폴더 해시도 변화하는 파일 해시에 응답하여 변화한다. 또한, 제N 폴더의 하위 폴더 내의 임의의 파일의 콘텐츠가 변화하는 경우, 파일의 파일 해시가 변화하고 하위 폴더의 하위 폴더 해시가 변화한다. 또한, 제N 폴더의 폴더 해시도 변화한다. 제N 폴더의 새로운 폴더 해시는 제N 폴더 내의 파일, 또는 파일들이 변화되고 이에 따라 동기화되어야 하는 것을 표시할 수 있다.
710에서, 제N 폴더의 현재의 폴더 해시가 제N 폴더용의 이전에 기록된 폴더 해시와 다르지 않은 경우, 공정(700)은 712로 이동할 수 있다. 712에서, 공정(700)은 제N 폴더용의 폴더 해시가 변화되지 않거나 제N 폴더용의 이전에 기록된 폴더 해시와 동일함의 표시를 기록하는 단계를 포함할 수 있다. 또한, 상기 공정은 제N 폴더의 콘텐츠가 이전에 저장된 것과 동일하고 갱신, 변화, 편집, 또는 달리 변경이 되지 않음의 표시를 기록하는 단계를 포함할 수 있다. 공정(700)은 공유 폴더들 및 파일들에 대한 변화들을 트래킹하기 위해 파일에 변화가 없는 제N 폴더의 폴더 해시 및 제N 폴더의 콘텐츠의 표시를 기록할 수 있다.
714로 계속하면, 공정(700)은 로컬 파일 시스템 내에 다른 폴더가 있는지의 여부를 결정하는 단계를 포함할 수 있다. 그렇지 않은 경우, 공정(700)은 716에서 종료될 수 있다. 그렇지 않으면, 로컬 파일 시스템 내에 다른 폴더가 있는 경우, 공정(700)은 718로 진행할 수 있다. 718에서, 공정(700)은 N의 값을 1만큼 증가시키는 단계를 포함할 수 있다. 즉, N의 값은 N의 현재 값에 1을 추가, 즉 N=N+1로 함으로써 재연산될 수 있다. 그 후, 공정(700)은 706으로 되돌아갈 수 있고, 공정(700)은 로컬 파일 시스템 내의 다음의 폴더에 대해 전술한 바와 같이 계속될 수 있다.
710으로 되돌아가면, 제N 폴더의 현재의 폴더 해시가 제N 폴더용의 이전에 기록된 폴더 해시와 다른 경우, 공정(700)은 720으로 이동할 수 있다. 720에서, 공정(700)은 마스터 해시 리스트 내에 제N 폴더용의 현재의 폴더 해시를 기록하는 단계를 포함할 수 있다. 특히, 공정(700)은 제N 폴더용의 이전의 폴더 해시 값에 대한 마스터 해시 리스트 내의 엔트리를 제N 폴더용의 현재의 폴더 해시 값으로 겹쳐쓰기할 수 있다. 제N 폴더용의 이전의 해시 값은 겹쳐쓰기되기 전에 트래킹 파일 내에 기록될 수 있다. 그렇지 않으면, 이전의 해시 값은 폐기될 수 있다.
722로 이동하면, 공정(700)은 로컬 파일 시스템의 제N 폴더를 원격 파일 시스템 내의 대응하는 제N 폴더와 동기화하는 단계를 포함할 수 있다. 특히, 일단 로컬 파일 시스템의 제N 폴더 내에서 변화되어 있는 파일들은 원격 파일 시스템 내의 해당 파일들의 대응하는 인스턴스들과 동기화된다. 공정(700)은 로컬 파일 시스템의 제N 폴더와 관련된 폴더 트리 및 하위 폴더 트리를 트래버싱하여 하위 폴더 해시들 및 파일 해시들이 변화되었는지를 결정함으로써 파일들이 갱신되거나, 또는 달리 변화되었는지를 신속하게 탐색하고 결정할 수 있다.
특히, 폴더 트리 및 하위 폴더 트리를 트래버싱하여 도 9와 함께 후술하는 동기화를 위한 파일 변화들을 탐색하기 위한 공정은 공유 폴더 및 파일 동기화 시스템에서 사용되어 로컬 파일 시스템 내의 폴더들, 하위 폴더들, 파일들, 또는 그들의 부분들이 원격 파일 시스템과 동기화 예정인지를 신속하게 확인할 수 있다. 변화되거나 갱신되어 있는 파일들이 탐색되면, 해당 파일들은 원격 파일 시스템에서 동기화된다.
그 후, 공정(700)은 714로 계속될 수 있고, 공정(700)은 로컬 파일 시스템이 다른 폴더를 포함하는지의 여부를 결정하는 단계를 포함할 수 있다. 그렇지 않은 경우, 공정(700)은 716에서 종료될 수 있다. 그렇지 않으면, 공정(700)은 718로 이동하여 전술한 바와 같이 계속될 수 있다.
도 8은 개괄적으로 800으로 표기되는, 원격 파일 시스템으로부터의 파일들을 동기화하기 위한 예시적인 공정의 흐름도를 도시하고 있다. 802에서 시작하면, 공정(800)은 주기적으로 다음의 단계들을 수행하는 두 루프로 진입하는 단계를 포함할 수 있다. 예를 들면, 804에서, 공정(800)은 변수 N을 1과 동일하게 설정하는 단계를 포함할 수 있다. 변수 N은 공유 폴더 및 파일 동기화 시스템이 임의의 폴더들을 반복하지 않으면서 한 번에 하나씩 개별 폴더들을 트래버싱할 수 있도록 카운터로서 기능하는 정수일 수 있다. 806에서, 공정(800)은 원격 파일 시스템의 제N 폴더의 현재의 해시를 검색하는 단계를 포함할 수 있다. 제N 폴더용의 현재의 해시는 원격 파일 시스템 내에 저장된 데이터의 메모리 위치를 매핑하는데 사용되는 원격 파일 시스템과 관련된 해시 테이블로부터 검색될 수 있다. 특히, 제N 폴더용의 현재의 해시는 GetRootFolder RPC를 사용하여 원격 파일 시스템 해시 테이블로부터 검색될 수 있다.
다른 측면에서, 공정(800)은 제N 폴더 내에 저장된 임의의 하위 폴더들, 파일들, 하위 레벨 파일들, 및/또는 숏컷들과 관련된 하위 폴더 해시들, 파일 해시들, 하위 레벨 파일 해시들, 및/또는 숏컷 해시들에 기초하여 제N 폴더용의 현재의 해시를 재연산하는 단계를 포함할 수 있다. 공정(800)은 현재의 해시를 재연산하고 해당 값을 사용하여 검색된 값의 정확도를 검증할 수 있다. 또는, 해시 테이블로부터 현재의 해시를 검색하는 대신에, 공정(800)은 전술한 바와 같이 해시를 재연산하는 단계를 포함할 수 있다.
원격 파일 시스템의 제N 폴더의 현재의 폴더 해시가 검색된 후, 공정(800)은 808로 진행할 수 있다. 808에서, 공정(800)은 원격 파일 시스템의 제N 폴더의 현재의 폴더 해시를 마스터 해시 리스트 내에 기록된 제N 폴더용의 이전의 해시와 비교하는 단계를 포함할 수 있다. 특정 측면에서, 상기 비교는 제N 폴더의 폴더 해시의 실제 값을 마스터 해시 리스트 내에 저장된 제N 폴더용의 폴더 해시의 가장 최근에 기록된 값과 비교하여 제N 폴더의 현재의 폴더 해시가 제N 폴더용의 폴더 해시의 가장 최근에 기록된 값과 다른 경우를 결정하는 단계를 포함할 수 있다.
810에서, 공정(800)은 제N 폴더의 현재의 폴더 해시가 제N 폴더용의 이전에 기록된 폴더 해시와 다른지의 여부를 결정하는 단계를 포함할 수 있다. 특정 측면에서, 제N 폴더의 현재의 폴더 해시는 제N 폴더 내의 하위 폴더들 및 제N 폴더 내의 파일들, 예컨대 제N 폴더 내의 임의의 하위 폴더들에 따라 달라진다. 제N 폴더 내의 임의의 파일의 콘텐츠가 변화하는 경우, 파일의 파일 해시가 변화하고 제N 폴더의 폴더 해시도 변화하는 파일 해시에 응답하여 변화한다. 또한, 제N 폴더의 하위 폴더 내의 임의의 파일의 콘텐츠가 변화하는 경우, 파일의 파일 해시가 변화하고 하위 폴더의 하위 폴더 해시가 변화한다. 또한, 제N 폴더의 폴더 해시도 변화한다. 제N 폴더의 새로운 폴더 해시는 제N 폴더 내의 파일, 또는 파일들이 변화되고 이에 따라 동기화되어야 하는 것을 표시할 수 있다.
810에서, 제N 폴더의 현재의 폴더 해시가 제N 폴더용의 이전에 기록된 폴더 해시와 다르지 않은 경우, 공정(800)은 812로 이동할 수 있다. 812에서, 공정(800)은 제N 폴더용의 폴더 해시가 변화되지 않거나 제N 폴더용의 이전에 기록된 폴더 해시와 동일함의 표시를 기록하는 단계를 포함할 수 있다. 또한, 공정은 제N 폴더의 콘텐츠가 이전에 저장된 것과 동일하고 갱신, 변화, 편집, 또는 달리 변경이 되지 않음의 표시를 기록하는 단계를 포함할 수 있다. 공정(800)은 공유 폴더들 및 파일들에 대한 변화들을 트래킹하기 위해 파일에 변화가 없는 제N 폴더의 폴더 해시 및 제N 폴더의 콘텐츠의 표시를 기록할 수 있다.
814로 계속하면, 공정(800)은 원격 파일 시스템 내에 다른 폴더가 있는지의 여부를 결정하는 단계를 포함할 수 있다. 그렇지 않은 경우, 공정(800)은 816에서 종료될 수 있다. 그렇지 않으면, 원격 파일 시스템 내에 다른 폴더가 있는 경우, 공정(800)은 818로 진행할 수 있다. 818에서, 공정(800)은 N의 값을 1만큼 증가시키는 단계를 포함할 수 있다. 즉, N의 값은 N의 현재 값에 1을 추가, 즉 N=N+1로 함으로써 재연산될 수 있다. 그 후, 공정(800)은 806으로 되돌아갈 수 있고, 공정(800)은 원격 파일 시스템 내의 다음의 폴더에 대하여 전술한 바와 같이 계속될 수 있다.
810으로 되돌아가면, 제N 폴더의 현재의 폴더 해시가 제N 폴더용의 이전에 기록된 폴더 해시와 다른 경우, 공정(800)은 820으로 이동할 수 있다. 820에서, 공정(800)은 제N 폴더용의 현재의 폴더 해시를 마스터 해시 리스트 내에 기록하는 단계를 포함할 수 있다. 특히, 공정(800)은 제N 폴더용의 이전의 폴더 해시 값에 대한 마스터 해시 리스트 내의 엔트리를 제N 폴더용의 현재의 폴더 해시 값으로 겹쳐쓰기할 수 있다. 제N 폴더용의 이전의 해시 값은 겹쳐쓰기되기 전에 트래킹 파일 내에 기록될 수 있다. 그렇지 않으면, 이전의 해시 값은 폐기될 수 있다.
822로 이동하면, 공정(800)은 원격 파일 시스템 및 그 안의 폴더들 및 파일들에 대한 액세스를 갖는 특정 공유 폴더 및 파일 동기화 시스템과 관련된 각 로컬 파일 시스템 내의 대응하는 제N 폴더와 원격 파일 시스템의 제N 폴더를 동기화하는 단계를 포함할 수 있다. 특히, 일단 원격 파일 시스템의 제N 폴더 내에서 변화되어 있는 파일들은 로컬 파일 시스템 내의 해당 파일들의 대응하는 인스턴스들과 동기화된다. 공정(800)은, 원격 파일 시스템의 제N 폴더와 관련된 폴더 트리 및 하위 폴더 트리를 트래버싱하여 하위 폴더 해시들 및 파일 해시들이 변화되었는지를 결정함으로써, 파일들이 갱신되거나, 또는 달리 변화되었는지를 신속하게 탐색하고 결정할 수 있다.
특히, 폴더 트리 및 하위 폴더 트리를 트래버싱하여 도 9와 함께 후술하는 동기화를 위한 파일 변화들을 탐색하기 위한 공정은 공유 폴더 및 파일 동기화 시스템에서 사용되어 원격 파일 시스템 내의 폴더들, 하위 폴더들, 파일들, 또는 그들의 부분들이 로컬 파일 시스템과 동기화 예정인지를 신속하게 확인할 수 있다. 변화되거나 갱신되어 있는 파일들이 탐색되면, 해당 파일들은 로컬 파일 시스템에서 동기화된다.
이제 도 9를 참조하면, 폴더 트리 및 하위 폴더 트리를 트래버싱하여 동기화를 위한 파일 변화들을 탐색하기 위한 예시적인 공정의 흐름도가 도시되어 있고 900으로 표기되어 있다. 도 9에 나타낸 바와 같이, 공정(900)은 새로운 폴더가 식별될 때 다음의 단계들 중 하나 이상이 수행될 수 있는 두 루프로 902에서 시작할 수 있다. 예를 들면, 904에서, 공정(900)은 변수 N을 1과 동일하게 설정하는 단계를 포함할 수 있다. 변수 N은 공유 폴더 및 파일 동기화 시스템이 임의의 하위 폴더들을 반복하지 않으면서 한 번에 하나씩 개별 하위 폴더들을 트래버싱할 수 있도록 카운터로서 기능하는 정수일 수 있다.
906에서, 공정(900)은 새로운 폴더 해시를 갖는 것으로 식별되는 폴더 내의 제N 하위 폴더의 현재의 해시를 검색하는 단계를 포함할 수 있다. 제N 하위 폴더용의 현재의 하위 폴더 해시는 특정 파일 시스템 내에 저장된 데이터의 메모리 위치를 매핑하는데 사용되는, 로컬 또는 원격의 파일 시스템과 관련된 해시 테이블로부터 검색될 수 있다. 하나의 측면에서, 제N 하위 폴더용의 현재의 해시는 GetRootFolder RPC를 사용하여 특정 파일 시스템 해시 테이블로부터 검색될 수 있다.
파일 시스템의 제N 하위 폴더의 현재의 하위 폴더 해시가 검색된 후, 공정(900)은 908로 진행할 수 있다. 908에서, 공정(900)은 파일 시스템의 제N 하위 폴더의 현재의 하위 폴더 해시를 마스터 해시 리스트, 현재의 로컬 해시 리스트, 현재의 원격 해시 리스트, 또는 그들의 조합 내에 기록된 제N 하위 폴더용의 이전의 하위 폴더 해시와 비교하는 단계를 포함할 수 있다. 특정 측면에서, 상기 비교는 제N 하위 폴더의 하위 폴더 해시의 실제 값을 특정 해시 리스트 내에 저장된 제N 하위 폴더용의 하위 폴더 해시의 가장 최근에 기록된 값과 비교하여 제N 하위 폴더의 현재의 하위 폴더 해시가 제N 하위 폴더용의 하위 폴더 해시의 가장 최근에 기록된 값과 다른 경우를 결정하는 단계를 포함할 수 있다.
910에서, 공정(900)은 제N 하위 폴더의 현재의 하위 폴더 해시가 제N 하위 폴더용의 이전에 기록된 하위 폴더 해시와 다른지의 여부를 결정하는 단계를 포함할 수 있다. 특정 측면에서, 제N 하위 폴더의 현재의 하위 폴더 해시는 제N 하위 폴더 내의 파일들에 따라 달라진다. 제N 하위 폴더 내의 임의의 파일의 콘텐츠가 변화하는 경우, 파일의 파일 해시가 변화하고 제N 하위 폴더의 하위 폴더 해시도 변화한다. 제N 하위 폴더의 새로운 하위 폴더 해시는 제N 하위 폴더 내의 파일, 또는 파일들이 변화되어 있고 이에 따라 동기화되어야 하는 것을 표시할 수 있다.
910에서, 제N 하위 폴더의 현재의 하위 폴더 해시가 제N 하위 폴더용의 이전에 기록된 하위 폴더 해시와 다르지 않은 경우, 공정(900)은 912로 이동할 수 있다. 912에서, 공정(900)은 새로운 파일 해시를 갖는 하위 폴더 내의 각 파일을 동기화하는 단계를 포함할 수 있다. 그 후, 공정(900)은 914로 이동할 수 있고, 여기서 상기 공정은 새로운 폴더 해시로 식별된 폴더 내에 다른 하위 폴더가 있는지의 여부를 결정하는 단계를 포함할 수 있다. 다른 하위 폴더가 있는 경우, 공정(900)은 916으로 이동할 수 있다. 916에서, 공정(900)은 N의 값을 1만큼 증가시키는 단계를 포함할 수 있다. 즉, N의 값은 N의 현재 값에 1을 추가, 즉 N=N+1로 함으로써 재연산될 수 있다. 그 후, 공정(900)은 906으로 되돌아갈 수 있고, 공정(900)은 파일 시스템 내에 새로운 폴더 해시를 갖는 것으로 식별된 폴더 내의 다음의 하위 폴더에 대하여 전술한 바와 같이 계속될 수 있다.
914로 되돌아가면, 새로운 폴더 해시를 갖는 것으로 식별된 특정 폴더를 갖는 다른 하위 폴더가 없는 경우, 공정(900)은 918로 계속될 수 있다. 918에서, 공정(900)은 파일 시스템이 새로운 해시를 포함하는 다른 폴더를 포함하는지의 여부를 결정하는 단계를 포함할 수 있다. 파일 시스템이 새로운 해시를 갖는 다른 폴더를 포함하는 경우, 공정(900)은 904로 되돌아갈 수 있고 본원에서 설명되는 바와 같이 계속될 수 있다. 그렇지 않으면, 918에서, 파일 시스템이 새로운 해시를 갖는 다른 폴더를 갖지 않는 경우, 공정(900)은 920에서 종료될 수 있다.
도 9는 한 번에 하나씩, 즉 N이 1에서 N의 최종 값으로 증가함에 따라 폴더 트리들 및 하위 트리들을 트래버싱하기 위한 예시적인 공정(900)을 도시하고 있다. 다수의 프로세서들, 멀티-코어 프로세서들, 멀티-스레드 처리, 인터리빙 멀티-스레드 처리, 공유 처리, 또는 그들의 조합을 사용하는 최신의 컴퓨팅 시스템들에 의하면, 다수의 폴더 트리 및 하위 트리가 서로 병렬로 동시에, 또는 실질적으로 동시에 트래버싱될 수 있음이 인정될 수 있다.
본 개시의 실시형태들은 다음의 조항들의 관점에서 설명될 수 있다:
1. 원격 파일 시스템 상태를 결정하는 단계 - 상기 원격 파일 시스템 상태는 원격 폴더 해시 값들을 포함하고, 상기 원격 폴더 해시 값들은 원격 파일 시스템에서의 공유 하위 폴더들의 원격 인스턴스들과 관련된 하위 폴더 해시들, 공유 파일들의 원격 인스턴스들과 관련된 파일 해시들, 공유 하위 파일들의 원격 인스턴스들과 관련된 하위 파일 해시들, 공유 숏컷들의 원격 인스턴스들과 관련된 숏컷 해시들, 또는 그들의 조합에 적어도 부분적으로 기초하여 결정됨 -;
로컬 파일 시스템 상태를 결정하는 단계 - 상기 로컬 파일 시스템 상태는 로컬 폴더 해시 값들을 포함하고, 상기 로컬 폴더 해시 값들은 로컬 파일 시스템에서의 공유 하위 폴더들의 로컬 인스턴스들과 관련된 하위 폴더 해시들, 공유 파일들의 로컬 인스턴스들과 관련된 파일 해시들, 공유 하위 파일들의 로컬 인스턴스들과 관련된 하위 파일 해시들, 공유 숏컷들의 로컬 인스턴스들과 관련된 숏컷 해시들, 또는 그들의 조합에 적어도 부분적으로 기초하여 결정됨 -;
상기 원격 파일 시스템 상태 및 상기 로컬 파일 시스템 상태를 비교하여 상기 원격 파일 시스템 상태 내의 상기 원격 폴더 해시 값들과 상기 로컬 파일 시스템 상태 내의 상기 로컬 폴더 해시 값들의 임의의 차이를 결정하는 단계; 및
상기 로컬 파일 시스템 및 상기 원격 파일 시스템 내에서, 상기 원격 폴더 해시 값이 상기 로컬 폴더 해시 값과는 다른 임의의 공유 폴더의 적어도 일부분을 동기화하는 단계를 포함하는, 방법.
2. 조항 1에 있어서,
특정 공유 파일이 불일치 파일 해시 페어링을 포함하는지의 여부를 결정하는 단계를 더 포함하는, 방법.
3. 조항 2에 있어서, 상기 불일치 파일 해시 페어링은 상기 특정 공유 파일의 원격 인스턴스용의 원격 파일 해시와 다른 상기 특정 공유 파일의 로컬 인스턴스용의 로컬 파일 해시를 포함하는, 방법.
4. 조항 2에 있어서,
상기 특정 공유 파일을 상기 불일치 파일 해시 페어링과 동기화하는 단계를 더 포함하는, 방법.
5. 조항 4에 있어서,
상기 특정 공유 파일의 상기 로컬 인스턴스용의 타임 스탬프를 결정하는 단계;
상기 특정 공유 파일의 상기 원격 인스턴스용의 타임 스탬프를 결정하는 단계; 및
상기 특정 공유 파일을 상기 특정 공유 파일의 상기 로컬 인스턴스 및 상기 특정 공유 파일의 상기 원격 인스턴스 중 가장 최근의 것에 동기화하는 단계를 더 포함하는, 방법.
6. 조항 5에 있어서,
상기 특정 공유 파일의 상기 로컬 인스턴스를 상기 원격 파일 시스템에 업로딩하는 단계를 더 포함하는, 방법.
7. 조항 5에 있어서,
상기 특정 공유 파일의 상기 원격 인스턴스를 상기 로컬 파일 시스템에 다운로딩하는 단계를 더 포함하는, 방법.
8. 조항 2에 있어서, 상기 불일치 파일 해시 페어링은 상기 특정 공유 파일의 로컬 인스턴스용의 누락 로컬 파일 해시 또는 상기 특정 공유 파일의 원격 인스턴스용의 누락 원격 파일 해시를 포함하는, 방법.
9. 조항 8에 있어서,
상기 로컬 파일 시스템으로부터 상기 특정 공유 파일의 상기 로컬 인스턴스를 삭제하는 단계를 더 포함하는, 방법.
10. 조항 8에 있어서,
상기 원격 파일 시스템으로부터 상기 특정 공유 파일의 상기 원격 인스턴스를 삭제하는 단계를 더 포함하는, 방법.
11. 원격 파일 시스템 상태를 결정하는 단계;
로컬 파일 시스템 상태를 결정하는 단계;
상기 원격 파일 시스템 상태 및 상기 로컬 파일 시스템 상태를 비교하여 공유 폴더의 원격 인스턴스, 공유 하위 폴더의 원격 인스턴스, 또는 공유 파일의 원격 인스턴스가 상기 공유 폴더의 대응하는 로컬 인스턴스, 상기 공유 하위 폴더의 대응하는 로컬 인스턴스, 또는 상기 공유 파일의 대응하는 로컬 인스턴스의 로컬 파일 시스템 속성과는 다른 원격 파일 시스템 속성을 포함하는지의 여부를 결정하는 단계; 및
상기 원격 파일 시스템 속성이 상기 로컬 파일 시스템 속성과는 다른 상기 공유 폴더, 상기 공유 하위 폴더, 또는 상기 공유 파일을 동기화하는 단계를 포함하는, 방법.
12. 조항 11에 있어서, 상기 원격 파일 시스템 속성은 상기 공유 폴더의 상기 원격 인스턴스에 할당된 원격 폴더 값, 상기 공유 하위 폴더의 상기 원격 인스턴스에 할당된 원격 하위 폴더 값, 또는 상기 공유 파일의 상기 원격 인스턴스에 할당된 원격 파일 값을 포함하는, 방법.
13. 조항 12에 있어서, 상기 원격 폴더 값은 원격 폴더 해시를 포함하고, 상기 원격 하위 폴더 값은 원격 하위 폴더 해시를 포함하며, 상기 원격 파일 값은 원격 파일 해시를 포함하는, 방법.
14. 조항 13에 있어서, 상기 원격 폴더 해시, 상기 원격 하위 폴더 해시, 및 상기 원격 파일 해시는 상기 원격 파일 시스템용의 원격 해시 테이블에 기초하여 결정되는, 방법.
15. 조항 11에 있어서, 상기 로컬 파일 시스템 속성은 상기 공유 폴더의 상기 로컬 인스턴스에 할당된 로컬 폴더 값, 상기 공유 하위 폴더의 상기 로컬 인스턴스에 할당된 로컬 하위 폴더 값, 또는 상기 공유 파일의 상기 로컬 인스턴스에 할당된 로컬 파일 값을 포함하는, 방법.
16. 조항 15에 있어서, 상기 로컬 폴더 값은 로컬 폴더 해시를 포함하고, 상기 로컬 하위 폴더 값은 로컬 하위 폴더 해시를 포함하며, 상기 로컬 파일 값은 로컬 파일 해시를 포함하는, 방법.
17. 조항 16에 있어서, 상기 로컬 폴더 해시, 상기 로컬 하위 폴더 해시, 및 상기 로컬 파일 해시는 상기 로컬 파일 시스템용의 로컬 해시 테이블에 기초하여 결정되는, 방법.
18. 공유 폴더 및 파일 동기화 시스템으로서,
상부에 동기화 모듈 및 파일 시스템을 갖는 하나 이상의 컴퓨터 판독가능 매체;
상기 컴퓨터 판독가능 매체에 작동 가능하게 연결되고, 상기 동기화 모듈을 실행하기에 적합한 처리 유닛을 포함하며, 상기 동기화 모듈은,
원격 파일 시스템 내의 공유 데이터 구조의 원격 인스턴스와 관련된 원격 파일 시스템 속성을 결정하고;
상기 로컬 파일 시스템 내의 공유 데이터 구조의 로컬 인스턴스와 관련된 로컬 파일 시스템 속성을 결정하며;
상기 원격 파일 시스템 속성이 상기 로컬 파일 시스템 속성과 다른지의 여부를 결정하고;
상기 원격 파일 시스템 내의 상기 공유 데이터 구조의 상기 원격 인스턴스를 상기 로컬 파일 시스템 내의 상기 공유 데이터 구조의 상기 로컬 인스턴스와 선택적으로 동기화하여 상기 공유 데이터 구조 내의 콘텐츠가 상기 원격 파일 시스템 및 상기 로컬 파일 시스템에서 동일해지도록 구성되는, 시스템.
19. 조항 18에 있어서, 상기 공유 데이터 구조는 공유 폴더, 공유 하위 폴더, 공유 파일, 또는 그들의 조합을 포함하는, 시스템.
20. 조항 18에 있어서, 상기 원격 파일 시스템 속성은 상기 원격 파일 시스템과 관련된 원격 해시 테이블로부터 검색된 원격 폴더 해시, 원격 하위 폴더 해시, 또는 원격 파일 해시를 포함하고, 상기 로컬 파일 시스템 속성은 상기 로컬 파일 시스템과 관련된 로컬 해시 테이블로부터 검색된 로컬 폴더 해시, 로컬 하위 폴더 해시, 또는 로컬 파일 해시를 포함하는, 시스템.
결론
상기 기술들은 구조적 특징들 및/또는 방법적 행위들에 특정한 언어로 설명되어 있지만, 첨부된 청구범위는 반드시 설명된 상기 특징들 및 행위들에 제한되는 것이 아니다. 오히려, 상기 특징들 및 행위들은 이러한 기술들의 예시적인 구현예로서 설명된다.
예시적인 공정들의 동작들은 개별 블록들로 도시되고 해당 블럭들을 참조하여 요약되어 있다. 상기 공정들은 블록들의 논리 흐름으로서 도시되어 있고, 각 블록은 하드웨어, 소프트웨어, 또는 그들의 조합으로 구현될 수 있는 하나 이상의 동작을 표현할 수 있다. 소프트웨어의 맥락에서, 상기 동작들은 하나 이상의 프로세서에 의해 실행되었을 때 하나 이상의 프로세서가 열거된 동작들을 수행할 수 있게 하는 하나 이상의 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 실행가능 명령어들을 표현한다. 일반적으로, 컴퓨터 실행가능 명령어들은 특정 기능들을 수행하거나 특정 추정 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 모듈들, 구성요소들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한적인 것으로 해석되지 않아야 하며, 임의의 수의 설명된 동작들은 임의의 순서로 실행, 임의의 순서로 조합, 다수의 하위 동작들로 분할, 및/또는 병렬로 실행되어 설명된 공정들을 구현할 수 있다. 설명된 공정들, 또는 그들의 부분들은 하나 이상의 내부 또는 외부 CPU 또는 GPU와 같은 하나 이상의 장치(들)(104, 106, 108, 130, 132, 134), 및/또는 FPGA들, DSP들, 또는 다른 유형의 가속기들과 같은 하나 이상의 하드웨어 로직 부분과 관련된 리소스들에 의해 수행될 수 있다.
전술한 방법들 및 공정들의 전부는 하나 이상의 범용 컴퓨터 또는 프로세서에 의해 실행되는 소프트웨어 코드 모듈들에 내장될 수 있고, 상기 소프트웨어 코드 모듈들을 통해 완전히 자동화될 수 있다. 코드 모듈들은 임의의 유형의 컴퓨터 판독가능 매체 또는 다른 컴퓨터 저장 매체 내에 저장될 수 있다. 상기 방법들 중 일부 또는 전부는 대안적으로 특수 컴퓨터 하드웨어에 내장될 수 있다.
특히, "할 수 있다(can)", "할 수 있었다(could)", "할 수도 있었다(might)" 또는 "할 수도 있다(may)"와 같은 조건부 언어는, 달리 구체적으로 제시되지 않는 한, 소정의 예들이 소정의 특징들, 요소들 및/또는 단계들을 포함하지만, 다른 예들은 이들을 포함하지 않는 것을 나타내는 것으로 문맥 내에서 이해된다. 따라서, 이러한 조건부 언어는, 일반적으로 소정의 특징들, 요소들 및/또는 단계들이 하나 이상의 예에서 요구되는 임의의 방식으로 존재하는 것, 또는 하나 이상의 예들이 사용자 입력이 있거나 없이 소정의 특징들, 요소들 및/또는 단계들이 임의의 특정 예에 포함되거나 임의의 특정 예에서 수행되어야 하는지의 여부를 결정하거나 상기시켜 주기 위한 로직을 반드시 포함하는 것을 시사하려는 것이 아니다. "X, Y 또는 Z 중 적어도 하나"라는 구절과 같은 연결 언어는 달리 구체적으로 제시되지 않는 한, 항목, 용어 등이 X, Y 또는 Z, 또는 그들의 조합일 수 있음을 나타내는 것으로 이해되어야 한다.
본원에서 설명되고/되거나 첨부된 도면들에 도시된 흐름도들 내의 임의의 루틴 설명들, 요소들 또는 블록들은 루틴 내의 특정 논리 기능들 또는 요소들을 구현하기 위한 하나 이상의 실행가능 명령어를 포함하는 코드의 모듈들, 세그먼트들, 또는 부분들을 잠재적으로 나타내는 것으로 이해되어야 한다. 대안적인 구현예들은 본원에서 설명된 예들의 범주 내에 포함되며, 여기서 요소들 및 기능들은 당업자가 이해하는 바와 같이 수반되는 기능에 따라, 실질적으로 동기적으로 또는 역순으로를 포함한, 도시되거나 논의된 것과는 다른 순서로 삭제되거나 실행될 수 있다. 많은 변형예 및 변경예가 전술한 예들에 이루어질 수 있고, 그들의 요소들이 다른 채택 가능한 예들 중에 있는 것으로 이해되어야 함이 강조되어야 한다. 이러한 모든 변경예 및 변형예는 본원에서 본 발명의 범주 내에 포함되고 다음의 청구범위에 의해 보호되도록 의도되어 있다.

Claims (18)

  1. 방법으로서,
    원격 파일 시스템 상태를 결정하는 단계로서, 상기 원격 파일 시스템 상태는 하나 이상의 원격 폴더 해시 값(remote folder hash value)을 포함하고, 상기 하나 이상의 원격 폴더 해시 값은 원격 파일 시스템에서의 공유 하위 폴더들의 원격 인스턴스들과 관련된 하위 폴더 해시들, 공유 파일들의 원격 인스턴스들과 관련된 파일 해시들, 공유 하위 파일들의 원격 인스턴스들과 관련된 하위 파일 해시들, 또는 공유 숏컷들의 원격 인스턴스들과 관련된 숏컷 해시들 중 적어도 하나에 기초하여 결정되는, 상기 원격 파일 시스템 상태를 결정하는 단계;
    로컬 파일 시스템 상태를 결정하는 단계로서, 상기 로컬 파일 시스템 상태는 하나 이상의 로컬 폴더 해시 값을 포함하고, 상기 하나 이상의 로컬 폴더 해시 값은 로컬 파일 시스템에서의 공유 하위 폴더들의 로컬 인스턴스들과 관련된 하위 폴더 해시들, 공유 파일들의 로컬 인스턴스들과 관련된 파일 해시들, 공유 하위 파일들의 로컬 인스턴스들과 관련된 하위 파일 해시들, 또는 공유 숏컷들의 로컬 인스턴스들과 관련된 숏컷 해시들 중 적어도 하나에 기초하여 결정되는, 로컬 파일 시스템 상태를 결정하는 단계;
    상기 원격 파일 시스템 상태 및 상기 로컬 파일 시스템 상태를 비교하여, 상기 원격 파일 시스템 상태 내의 상기 하나 이상의 원격 폴더 해시 값과 상기 로컬 파일 시스템 상태 내의 상기 하나 이상의 로컬 폴더 해시 값의 임의의 차이를 결정하는 단계; 및
    임의의 공유 폴더의 적어도 일부분을 동기화하는 단계로서, 상기 공유 폴더의 적어도 일부분에서는, 상기 로컬 파일 시스템 및 상기 원격 파일 시스템 내에서, 상기 공유 폴더에 대응하는 상기 하나 이상의 원격 폴더 해시 값 중 한 원격 폴더 해시 값이, 상기 공유 폴더에 대응하는 상기 하나 이상의 로컬 폴더 해시 값 중 한 로컬 폴더 해시 값과 다른, 임의의 공유 폴더의 적어도 일부분을 동기화하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 불일치 파일 해시 페어링(inconsistent file hash pairing)은 특정 공유 파일의 원격 인스턴스용의 원격 파일 해시와 다른 상기 특정 공유 파일의 로컬 인스턴스용의 로컬 파일 해시를 포함하는, 방법.
  3. 제2항에 있어서, 상기 특정 공유 파일을 상기 불일치 파일 해시 페어링과 동기화하는 단계를 더 포함하는, 방법.
  4. 제2항 또는 제3항에 있어서, 상기 특정 공유 파일의 상기 로컬 인스턴스용의 타임 스탬프(time stamp)를 결정하는 단계;
    상기 특정 공유 파일의 상기 원격 인스턴스용의 타임 스탬프를 결정하는 단계; 및
    상기 특정 공유 파일을 상기 특정 공유 파일의 상기 로컬 인스턴스 및 상기 특정 공유 파일의 상기 원격 인스턴스 중 가장 최근의 것에 동기화하는 단계를 더 포함하는, 방법.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서, 특정 공유 파일이 불일치 파일 해시 페어링을 포함하는지의 여부를 결정하는 단계를 더 포함하고, 상기 불일치 파일 해시 페어링은 상기 특정 공유 파일의 로컬 인스턴스용의 누락(missing) 로컬 파일 해시 또는 상기 특정 공유 파일의 원격 인스턴스용의 누락 원격 파일 해시를 포함하는, 방법.
  6. 방법으로서,
    하나 이상의 분산 컴퓨팅 자원에 포함된 하나 이상의 원격 파일 시스템에 대한 원격 파일 시스템 상태를 결정하는 단계;
    하나 이상의 클라이언트 컴퓨팅 장치에 포함된 하나 이상의 로컬 파일 시스템에 대한 로컬 파일 시스템 상태를 결정하는 단계;
    상기 원격 파일 시스템 상태 및 상기 로컬 파일 시스템 상태를 비교하여, 공유 폴더들의 원격 인스턴스들, 공유 하위 폴더들의 원격 인스턴스들, 또는 공유 파일들의 원격 인스턴스들 중 하나 이상의 원격 파일 시스템 속성과, 상기 공유 폴더들의 대응하는 로컬 인스턴스들, 상기 공유 하위 폴더들의 대응하는 로컬 인스턴스들, 또는 상기 공유 파일들의 대응하는 로컬 인스턴스들 중 하나 이상의 로컬 파일 시스템 속성에 있어서의 임의의 차이들을 결정하는 단계; 및
    상기 하나 이상의 원격 파일 시스템 속성 중, 상기 공유 폴더, 상기 공유 하위 폴더, 또는 상기 공유 파일에 대응하는 원격 파일 시스템 속성이, 상기 하나 이상의 로컬 파일 시스템 속성 중, 상기 공유 폴더, 상기 공유 하위 폴더, 또는 상기 공유 파일에 대응하는 로컬 파일 시스템 속성과 다른, 공유 폴더, 공유 하위 폴더, 또는 공유 파일을 동기화하는 단계를 포함하는, 방법.
  7. 제6항에 있어서, 상기 원격 파일 시스템 속성은 상기 공유 폴더의 상기 원격 인스턴스에 할당된 원격 폴더 값, 상기 공유 하위 폴더의 상기 원격 인스턴스에 할당된 원격 하위 폴더 값, 또는 상기 공유 파일의 상기 원격 인스턴스에 할당된 원격 파일 값을 포함하는, 방법.
  8. 제7항에 있어서, 상기 원격 폴더 값은 원격 폴더 해시를 포함하고, 상기 원격 하위 폴더 값은 원격 하위 폴더 해시를 포함하며, 상기 원격 파일 값은 원격 파일 해시를 포함하는, 방법.
  9. 제8항에 있어서, 상기 원격 폴더 해시, 상기 원격 하위 폴더 해시, 및 상기 원격 파일 해시는 상기 원격 파일 시스템의 원격 해시 테이블에 기초하여 결정되는, 방법.
  10. 제6항 내지 제9항 중 어느 한 항에 있어서, 상기 로컬 파일 시스템 속성은 상기 공유 폴더의 상기 로컬 인스턴스에 할당된 로컬 폴더 값, 상기 공유 하위 폴더의 상기 로컬 인스턴스에 할당된 로컬 하위 폴더 값, 또는 상기 공유 파일의 상기 로컬 인스턴스에 할당된 로컬 파일 값을 포함하는, 방법.
  11. 제10항에 있어서, 상기 로컬 폴더 값은 로컬 폴더 해시를 포함하고, 상기 로컬 하위 폴더 값은 로컬 하위 폴더 해시를 포함하며, 상기 로컬 파일 값은 로컬 파일 해시를 포함하는, 방법.
  12. 제11항에 있어서, 상기 로컬 폴더 해시, 상기 로컬 하위 폴더 해시, 및 상기 로컬 파일 해시는 상기 로컬 파일 시스템의 로컬 해시 테이블에 기초하여 결정되는, 방법.
  13. 공유 폴더 및 파일 동기화 시스템으로서,
    상부에 동기화 모듈 및 파일 시스템을 갖는 하나 이상의 컴퓨터 판독가능 매체; 및
    상기 컴퓨터 판독가능 매체에 작동 가능하게 연결되고, 상기 동기화 모듈을 실행하도록 구성된 처리 유닛을 포함하며, 상기 동기화 모듈은,
    하나 이상의 분산 컴퓨팅 자원에 포함된 하나 이상의 원격 파일 시스템 내의 공유 데이터 구조의 원격 인스턴스들과 관련된 하나 이상의 원격 파일 시스템 속성을 결정하고;
    하나 이상의 클라이언트 컴퓨팅 장치에 포함된 하나 이상의 로컬 파일 시스템 내의 공유 데이터 구조의 로컬 인스턴스들과 관련된 하나 이상의 로컬 파일 시스템 속성을 결정하며;
    상기 하나 이상의 원격 파일 시스템 속성 중 한 원격 파일 시스템 속성과 상기 하나 이상의 로컬 파일 시스템 속성 중 한 로컬 파일 시스템 속성에 있어서의 임의의 차이들을 결정하고;
    상기 원격 파일 시스템 내의 상기 공유 데이터 구조의 상기 원격 인스턴스들 중 하나를 상기 로컬 파일 시스템 내의 상기 공유 데이터 구조의 상기 로컬 인스턴스들 중 하나와 선택적으로 동기화하여, 상기 공유 데이터 구조 내의 콘텐츠가 상기 원격 파일 시스템 및 상기 로컬 파일 시스템에서 동일해지도록 구성되는, 공유 폴더 및 파일 동기화 시스템.
  14. 제13항에 있어서, 상기 공유 데이터 구조는 공유 폴더, 공유 하위 폴더, 공유 파일, 또는 그들의 조합을 포함하는, 공유 폴더 및 파일 동기화 시스템.
  15. 제13항 또는 제14항에 있어서, 상기 원격 파일 시스템 속성은 상기 원격 파일 시스템과 관련된 원격 해시 테이블로부터 검색된 원격 폴더 해시, 원격 하위 폴더 해시, 또는 원격 파일 해시를 포함하고, 상기 로컬 파일 시스템 속성은 상기 로컬 파일 시스템과 관련된 로컬 해시 테이블로부터 검색된 로컬 폴더 해시, 로컬 하위 폴더 해시, 또는 로컬 파일 해시를 포함하는, 공유 폴더 및 파일 동기화 시스템.
  16. 제1항에 있어서,
    상기 하나 이상의 원격 폴더 해시 값 중 한 원격 폴더 해시 값을 백업 파일에 저장하는 단계; 및
    상기 원격 폴더 해시 값을 재연산하는 단계
    를 더 포함하는, 방법.
  17. 제6항에 있어서,
    상기 원격 파일 시스템 상태를 결정하는 단계는, 공유 폴더들의 원격 인스턴스들, 공유 하위 폴더들의 원격 인스턴스들, 또는 공유 파일들의 원격 인스턴스들 중 적어도 하나를 마스터 해시 리스트(master hash list)로서 구성(organizing)하는 단계를 포함하는, 방법.
  18. 제13항에 있어서,
    상기 동기화 모듈은,
    상기 원격 파일 시스템 속성을 백업 파일에 저장하고;
    상기 원격 파일 시스템 속성을 재연산하도록 더 구성되는, 공유 폴더 및 파일 동기화 시스템.
KR1020177007988A 2014-09-23 2015-09-22 공유 폴더 및 파일의 동기화 KR101974288B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/494,143 2014-09-23
US14/494,143 US9747297B2 (en) 2014-09-23 2014-09-23 Synchronization of shared folders and files
PCT/US2015/051398 WO2016048991A1 (en) 2014-09-23 2015-09-22 Synchronization of shared folders and files

Publications (2)

Publication Number Publication Date
KR20170044718A KR20170044718A (ko) 2017-04-25
KR101974288B1 true KR101974288B1 (ko) 2019-08-23

Family

ID=55525911

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177007988A KR101974288B1 (ko) 2014-09-23 2015-09-22 공유 폴더 및 파일의 동기화

Country Status (9)

Country Link
US (2) US9747297B2 (ko)
EP (1) EP3198491A4 (ko)
JP (1) JP6419319B2 (ko)
KR (1) KR101974288B1 (ko)
CN (1) CN107077483B (ko)
AU (1) AU2015321508B2 (ko)
CA (1) CA2961249C (ko)
SG (1) SG11201701450RA (ko)
WO (1) WO2016048991A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220036696A (ko) * 2020-09-16 2022-03-23 로앤굿 주식회사 클라우드 기반 법률 업무 중개 시스템

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9934241B2 (en) * 2013-03-05 2018-04-03 Hightail, Inc. System and method for cloud-based read-only folder synchronization
US9747297B2 (en) * 2014-09-23 2017-08-29 Amazon Technologies, Inc. Synchronization of shared folders and files
US10042900B2 (en) 2015-03-23 2018-08-07 Dropbox, Inc. External user notifications in shared folder backed integrated workspaces
US10091296B2 (en) 2015-04-17 2018-10-02 Dropbox, Inc. Collection folder for collecting file submissions
US10885209B2 (en) 2015-04-17 2021-01-05 Dropbox, Inc. Collection folder for collecting file submissions in response to a public file request
US10395045B2 (en) 2015-04-17 2019-08-27 Dropbox, Inc. Collection folder for collecting file submissions and scanning for plagiarism
US9692826B2 (en) * 2015-04-17 2017-06-27 Dropbox, Inc. Collection folder for collecting file submissions via a customizable file request
US10713966B2 (en) 2015-12-31 2020-07-14 Dropbox, Inc. Assignments for classrooms
US10778707B1 (en) * 2016-05-12 2020-09-15 Amazon Technologies, Inc. Outlier detection for streaming data using locality sensitive hashing
CN107391161B (zh) * 2016-05-17 2020-07-07 阿里巴巴集团控股有限公司 一种JavaScript模块安装方法及装置
CN107267527B (zh) * 2016-07-25 2021-03-19 未名兴旺系统作物设计前沿实验室(北京)有限公司 雄性育性的保持方法及其应用
US11048668B2 (en) * 2016-09-09 2021-06-29 Paypal, Inc. Sensitive data management
US11341100B2 (en) * 2016-12-12 2022-05-24 Egnyte, Inc. System and method for eliminating full rescan synchronizations on service restarts
US10776755B2 (en) 2016-12-29 2020-09-15 Dropbox, Inc. Creating projects in a content management system
US10970656B2 (en) 2016-12-29 2021-04-06 Dropbox, Inc. Automatically suggesting project affiliations
US10402786B2 (en) 2016-12-30 2019-09-03 Dropbox, Inc. Managing projects in a content management system
US10970302B2 (en) * 2017-06-22 2021-04-06 Adobe Inc. Component-based synchronization of digital assets
CN107920130A (zh) * 2017-12-07 2018-04-17 北京书生电子技术有限公司 内外网数据同步的方法和装置
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US11226939B2 (en) * 2017-12-29 2022-01-18 Dropbox, Inc. Synchronizing changes within a collaborative content management system
US10671370B2 (en) * 2018-05-30 2020-06-02 Red Hat, Inc. Distributing file system states
US10997202B1 (en) 2018-07-27 2021-05-04 Veeva Systems Inc. System and method for synchronizing data between a customer data management system and a data warehouse
US10970255B1 (en) * 2018-07-27 2021-04-06 Veeva Systems Inc. System and method for synchronizing data between a customer data management system and a data warehouse
US11386112B2 (en) * 2018-08-08 2022-07-12 Microsoft Technology Licensing, Llc Visualization platform for reusable data chunks
CN111316619B (zh) * 2018-08-13 2021-08-03 华为技术有限公司 一种照片共享方法及电子设备
US10902018B2 (en) * 2018-08-28 2021-01-26 Microsoft Technology Licensing, Llc Synchronizing in-use source data and an unmodified migrated copy thereof
CN109582642A (zh) * 2018-11-08 2019-04-05 网宿科技股份有限公司 文件存储方法、删除方法、服务器及存储介质
US20200192872A1 (en) * 2018-12-13 2020-06-18 Zoox, Inc. Device message framework
JP7164176B2 (ja) * 2018-12-14 2022-11-01 アップデータ株式会社 仮想ファイル処理システム及び仮想ファイル処理プログラム
US11449471B2 (en) * 2018-12-22 2022-09-20 Google Llc Sharing a modified file
CN110263211B (zh) * 2019-05-06 2021-09-21 视联动力信息技术股份有限公司 资源同步方法及装置
US11330079B2 (en) * 2020-01-08 2022-05-10 Sap Se Environment for developing of distributed multicloud applications
CN111400261A (zh) * 2020-01-21 2020-07-10 行星算力(深圳)科技有限公司 一种ipfs快速添加或者删除文件夹的方法
CN112564957B (zh) * 2020-12-01 2022-05-17 武汉绿色网络信息服务有限责任公司 虚拟网元的运行数据采集方法及装置
EP4017056A1 (en) * 2020-12-18 2022-06-22 Thales DIS France SA A method for checking if an update of a file comprising data has been done on a secure element cooperating with a terminal
CN113360460B (zh) * 2021-06-02 2023-12-05 阿波罗智联(北京)科技有限公司 收藏夹分享方法和装置
CN113656366B (zh) * 2021-08-03 2024-05-03 北京数码大方科技股份有限公司 电子仓库的数据处理方法和装置
CN114374690B (zh) * 2022-01-21 2023-10-31 荣耀终端有限公司 一种文件共享方法、通信系统和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008250903A (ja) * 2007-03-30 2008-10-16 Toshiba Corp ファイル更新装置、プログラム及び方法
US20130091097A1 (en) * 2011-06-10 2013-04-11 Microsoft Corporation Identification of moved or renamed files in file synchronization

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734690B2 (en) * 2003-09-05 2010-06-08 Microsoft Corporation Method and apparatus for providing attributes of a collaboration system in an operating system folder-based file system
US7716180B2 (en) * 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US8589574B1 (en) 2005-12-29 2013-11-19 Amazon Technologies, Inc. Dynamic application instance discovery and state management within a distributed system
US9424266B2 (en) * 2007-10-01 2016-08-23 Microsoft Technology Licensing, Llc Efficient file hash identifier computation
US20090313259A1 (en) * 2008-06-17 2009-12-17 Microsoft Corporation Container handlers for sharing and unsharing
WO2010041442A1 (ja) 2008-10-10 2010-04-15 パナソニック株式会社 情報処理装置、方法、プログラム及び集積回路
US8260742B2 (en) 2009-04-03 2012-09-04 International Business Machines Corporation Data synchronization and consistency across distributed repositories
US8868508B2 (en) 2010-02-09 2014-10-21 Google Inc. Storage of data in a distributed storage system
US8725682B2 (en) * 2010-09-08 2014-05-13 Daniel J Young Distribution and synchronization of digital objects
US8650156B1 (en) 2010-12-23 2014-02-11 Amazon Technologies, Inc. System and method for fetching the latest versions of stored data objects
US9449014B2 (en) * 2011-11-29 2016-09-20 Dell Products L.P. Resynchronization of replicated data
US8984582B2 (en) * 2012-08-14 2015-03-17 Confidela Ltd. System and method for secure synchronization of data across multiple computing devices
US20140074783A1 (en) * 2012-09-09 2014-03-13 Apple Inc. Synchronizing metadata across devices
US9400800B2 (en) * 2012-11-19 2016-07-26 Palo Alto Research Center Incorporated Data transport by named content synchronization
US10846074B2 (en) * 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
US9805050B2 (en) * 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US9886447B2 (en) * 2014-08-22 2018-02-06 International Business Machines Corporation Performance of asynchronous replication in HSM integrated storage systems
US9747297B2 (en) * 2014-09-23 2017-08-29 Amazon Technologies, Inc. Synchronization of shared folders and files

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008250903A (ja) * 2007-03-30 2008-10-16 Toshiba Corp ファイル更新装置、プログラム及び方法
US20130091097A1 (en) * 2011-06-10 2013-04-11 Microsoft Corporation Identification of moved or renamed files in file synchronization

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220036696A (ko) * 2020-09-16 2022-03-23 로앤굿 주식회사 클라우드 기반 법률 업무 중개 시스템
KR102484425B1 (ko) * 2020-09-16 2023-01-04 로앤굿 주식회사 클라우드 기반 법률 업무 중개 시스템

Also Published As

Publication number Publication date
CN107077483A (zh) 2017-08-18
JP2017529625A (ja) 2017-10-05
US9747297B2 (en) 2017-08-29
KR20170044718A (ko) 2017-04-25
AU2015321508B2 (en) 2018-04-19
WO2016048991A1 (en) 2016-03-31
CN107077483B (zh) 2021-03-26
EP3198491A4 (en) 2018-02-28
EP3198491A1 (en) 2017-08-02
CA2961249A1 (en) 2016-03-31
AU2015321508A1 (en) 2017-04-13
SG11201701450RA (en) 2017-04-27
US10482067B2 (en) 2019-11-19
US20180314713A1 (en) 2018-11-01
US20160085769A1 (en) 2016-03-24
JP6419319B2 (ja) 2018-11-07
CA2961249C (en) 2019-07-16

Similar Documents

Publication Publication Date Title
KR101974288B1 (ko) 공유 폴더 및 파일의 동기화
JP7212040B2 (ja) コンテンツ管理クライアント同期サービス
US10951702B2 (en) Synchronized content library
JP6621543B2 (ja) ハイブリッドアプリケーションの自動更新
US10628381B2 (en) Optimized content object storage service for large scale content
US20210011884A1 (en) Storage organization system with associated storage utilization values
US11487707B2 (en) Efficient file path indexing for a content repository
AU2020357554C1 (en) Content item sharing with context
JP7355964B2 (ja) 外部ロケーションの同期
US20190205413A1 (en) File deduplication using signature information
US11307754B1 (en) Drag and drop quick actions
US11809381B2 (en) Accessing network based content items by a mobile device while offline
JP7355959B2 (ja) 外部ロケーションの同期
AU2021437124B2 (en) Intent tracking for asynchronous operations
CN112181975A (zh) 用于在数据仓库中创建数据库的方法和装置
WO2023278063A1 (en) Proxy services for the secure upload of file system tree structures

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant