KR102057527B1 - 자동적인 클라우드-기반 전체 데이터 백업 및 모바일 디바이스들 상에서의 복원을 위한 시스템 및 방법 - Google Patents

자동적인 클라우드-기반 전체 데이터 백업 및 모바일 디바이스들 상에서의 복원을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102057527B1
KR102057527B1 KR1020177027878A KR20177027878A KR102057527B1 KR 102057527 B1 KR102057527 B1 KR 102057527B1 KR 1020177027878 A KR1020177027878 A KR 1020177027878A KR 20177027878 A KR20177027878 A KR 20177027878A KR 102057527 B1 KR102057527 B1 KR 102057527B1
Authority
KR
South Korea
Prior art keywords
party application
data
cloud storage
client device
metadata
Prior art date
Application number
KR1020177027878A
Other languages
English (en)
Other versions
KR20170130448A (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 KR20170130448A publication Critical patent/KR20170130448A/ko
Application granted granted Critical
Publication of KR102057527B1 publication Critical patent/KR102057527B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • H04L67/42

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법이 본원에서 설명된다. 방법은, 클라이언트 디바이스 상에 저장된 제3자 애플리케이션과 연관된 데이터를 클라우드 저장 서버에 업로딩하기로 결정하는 단계를 포함한다. 제3자 애플리케이션과 연관된 데이터는 바이너리 데이터 및 메타데이터 둘 모두를 포함한다. 방법은, 제3자 애플리케이션의 바이너리 데이터를 제 1 클라우드 저장 위치에 저장하는 단계를 더 포함한다. 제 1 클라우드 저장 위치는 저장 어드레스를 가지며, 메타데이터는 저장 어드레스를 포함하도록 업데이트된다. 그 다음, 방법은 업데이트된 메타데이터를 제 1 클라우드 저장 위치와 상이한 제 2 클라우드 저장 위치에 저장하는 단계를 포함한다.

Description

자동적인 클라우드-기반 전체 데이터 백업 및 모바일 디바이스들 상에서의 복원을 위한 시스템 및 방법 {SYSTEM AND METHOD FOR AUTOMATIC CLOUD-BASED FULL-DATA BACKUP AND RESTORE ON MOBILE DEVICES}
[0001] 본 출원은 2015년 5월 27일자로 출원된 미국 가출원 번호 제 62/167,148호를 우선권으로 주장하고, 2016년 5월 17일자로 출원된 미국 특허 출원 번호 제 15/156,539호에 관련되며, 이들 각각은 본원에 그 전체가 통합된다.
[0002] 일반적으로, 본 개시내용은, 데이터를 클라우드 저장소에 백업하고, 클라우드 저장소로부터 모바일 디바이스로 데이터를 복원시키기 위한 시스템들 및 방법들에 관한 것이다.
[0003] 글로벌 사용 패턴들이 모바일 디바이스들 상에서의 콘텐츠 소비, 생성 및 관리 쪽으로 이동함에 따라, 모바일 디바이스들의 사용이 증가하고 있다. 그러나, 모바일 디바이스들은 데이터 보존을 위해서는 불량한 플랫폼이다. 이 모바일 디바이스들은 쉽게 손상되거나 또는 동작불능으로 되고, 이는 로컬 저장된 콘텐츠 또는 데이터의 손실을 종종 야기한다. 모바일 디바이스의 고장 이후의 액세스불가능한 데이터 및 콘텐츠는, 불충분한 또는 기술적으로 불충분한 데이터 백업 기능들을 포함할 수 있는 기술적 이유들에 기인할 수 있다.
[0004] 부가적으로, 모바일 디바이스들의 사용자들은 그들의 디바이스들을 빈번히 업그레이드한다. 새로운 디바이스를 셋업할 때, 애플리케이션 데이터 및 연관된 세팅들의 손실에 기인하여, 사용자 경험은 종종 저해된다. 이는 스크래치로부터 새로운 디바이스를 셋업하도록 사용자에게 요구할 수 있으며, 이는 많은 횟수의 사용자 입력들을 요구하며, 새로운 디바이스의 사용자 인터페이스 컴포넌트들에 대한 부하를 증가시킬 수 있다. 부가하여, 스크래치로부터 새로운 디바이스를 셋업하도록 사용자에게 요구하는 것은 제3자 애플리케이션들과 연관된 중요한 데이터, 이를테면 텍스트 메시지들, 사진들, 애플리케이션 기본 설정(preference)들, 보안 세팅들 또는 임의의 다른 적절한 제3자 애플리케이션 데이터의 손실을 야기할 수 있다. 기존 백업 기술들은 키-값 쌍들의 사용에 종종 의존하며, 이는 제3자 애플리케이션 데이터의 특정 양상들만을 백업한다. 제3자 애플리케이션을 클라이언트 디바이스에 복원시키기 위해 키-값 쌍들을 사용하는 것은 애플리케이션 세팅들을 복원시킬 수 있지만, 제3자 애플리케이션의 추가 콘텐츠를 복원시키지 못할 수 있다. 따라서, 세팅들이 백업되고 키-값 쌍들로서 저장된 제3자 애플리케이션은 사용자 세팅들에 따라 제3자 애플리케이션 환경의 복원을 야기할 수 있지만, 사용자에 의해 제3자 애플리케이션에 저장되거나 또는 생성된 제3자 애플리케이션 콘텐츠의 손실이 야기될 수 있다. 게다가, 기존 시스템들은, 백업을 허용하도록 제3자 애플리케이션들을 특정하게 구성하도록 제3자 애플리케이션들의 개발자들에게 요구하거나, 또는 백업에 참여하거나 또는 백업을 수동으로 트리거링하도록 사용자에게 요구할 수 있다.
[0005] 제3자 애플리케이션들과 연관된 데이터의 백업 및 복원을 더욱 효율적이고 신뢰성 있게 만들기 위해, 애플리케이션 단위로 클라우드 저장소로의 애플리케이션 데이터의 전체-데이터(full-data) 백업을 위한 시스템들 및 방법들이 본원에서 개시된다. 전체-데이터 백업은, 보안 세팅들과 같은 세팅들, 환경, 애플리케이션 히스토리, 사용자 기본 설정들 및 애플리케이션 콘텐츠와 연관된 모든 바이너리 데이터 및 메타데이터, 뿐만 아니라 제3자 애플리케이션을 실행하거나 또는 제3자 애플리케이션 환경을 생성하기 위해 사용될 수 있는, 제3자 애플리케이션과 연관된 임의의 다른 데이터를 비롯하여, 제3자 애플리케이션과 연관된 모든 데이터를 포함한다. 결과적으로, 전체-데이터 백업의 효율 개선의 예는, 요구 데이터 전부를 백업 및 복원시키는데 요구되는 사용자 입력들의 요구 횟수의 감소이며, 이는 디바이스의 사용자 인터페이스 컴포넌트들에 대한 부하를 감소시킨다. 모바일 디바이스 디스플레이에 의해 활용되는 전력은 모바일 디바이스의 총 에너지 사용의 상당한 부분을 형성할 수 있으며, 따라서 디스플레이가 활성 상태로 있는 시간을 감소시키는 것은 감소된 전력 소비를 야기할 수 있으며, 이는, 배터리 전력의 사용을 최소화시키는 것이 중요한 모바일 디바이스의 경우에 특히 유익할 수 있다. 백업이 발생해야 한다고 결정되었을 때, 클라이언트 디바이스 백업 프레임워크에 의해 주기적으로 데이터 백업들이 개시될 수 있다. 각각의 애플리케이션에 대한 제3자 애플리케이션 데이터는 클라우드 저장 위치에 업로딩된다. 특히, 제3자 애플리케이션 데이터는 2개의 형태들의 데이터: 바이너리 데이터 및 메타데이터를 포함할 수 있다. 이 경우, 바이너리 데이터는 메타데이터와 별개로 저장될 수 있다. 바이너리 데이터의 저장 위치를 포함하는 식별자가 메타데이터에 첨부되어서, 첨부된 메타데이터는 바이너리 데이터의 클라우드 저장 어드레스에 대한 레퍼런스를 포함할 수 있다. 바이너리 데이터 및 메타데이터는 상이한 특성들을 가지며, 상이한 최적 저장 솔루션들을 가질 수 있다. 예컨대, 바이너리 데이터 저장소는, 다량의 데이터의 저장 및 바이트들의 신속한 순차적 판독 액세스를 위한 수단을 요구할 수 있다. 바이너리 저장소는 검색가능하거나 또는 달리 인덱싱될 수 있거나, 또는 그렇지 않을 수 있다. 메타데이터 저장소는, 관련 폴더들 및 파일들에 걸쳐 소유권 데이터와 같은 메타데이터의 계층적 관계들 및 전파를 생성하는 것과 함께, 넌-바이너리 데이터의 신속한 저장에 관련된 능력들을 가질 수 있다. 메타데이터 저장소는 또한, 저장된 메타데이터를 검색하기 위한 수단을 포함하며, 예상되는 사용자 인터페이스 응답 시간들을 지원하기 위해 그러한 탐색들을 신속하게 처리하도록 갖추어져 있다.
[0006] 사용자가 제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기를 원할 때, 사용자는, 클라우드 저장소로부터 클라이언트 디바이스로 제3자 애플리케이션 데이터를 복원시키는 디바이스 복원 프로세스를 개시할 수 있다. 세팅들 및 콘텐츠 둘 모두를 포함하는 전체-데이터 백업들로부터 제3자 애플리케이션 데이터가 복원되기 때문에, 데이터 손실이 감소된다. 새로운 디바이스로의 심리스(seamless) 전환이 달성되도록, 백업으로부터 제3자 애플리케이션, 애플리케이션 환경 및 제3자 애플리케이션 콘텐츠가 복원된다. 클라우드 저장소에 저장된 전체-데이터 백업들로부터 복원시키는 것은, 사용자로 하여금, 설치된 앱(app)들, 세팅들, 및 선택적으로 추가 콘텐츠, 이를테면 사진들, 텍스트, 및 오디오 또는 비디오 파일들을 비롯하여, 이전 디바이스로서 바로 그 상태로 디바이스를 다시 복원시키도록 허용한다.
[0007] 일 양상에서, 제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법은, 클라이언트 디바이스 상에 저장된 제3자 애플리케이션과 연관된 데이터를 클라우드 저장 서버에 업로딩하기로 결정하는 단계를 포함한다. 제3자 애플리케이션과 연관된 데이터는 바이너리 데이터 및 메타데이터 둘 모두를 포함한다. 방법은, 제3자 애플리케이션의 바이너리 데이터를 제 1 클라우드 저장 위치에 저장하는 단계를 더 포함한다. 제 1 클라우드 저장 위치는 저장 어드레스를 가지며, 메타데이터는 저장 어드레스를 포함하도록 업데이트된다. 그 다음, 방법은 업데이트된 메타데이터를 제 1 클라우드 저장 위치와 상이한 제 2 클라우드 저장 위치에 저장하는 단계를 포함한다.
[0008] 일부 구현들에서, 제3자 애플리케이션의 바이너리 데이터는 제3자 애플리케이션에 대한 전체 데이터를 포함한다. 일부 구현들에서, 클라이언트 디바이스는, 클라이언트 디바이스 상에 저장되는 제3자 애플리케이션과 연관된 저장된 바이너리 데이터를 식별함으로써, 데이터를 업로딩할지의 여부를 결정한다. 일부 구현들에서, 클라이언트 디바이스는 또한, 제3자 애플리케이션과 연관된 이전에 업로딩된 바이너리 데이터를 식별하며, 저장된 바이너리 데이터와 이전에 업로딩된 바이너리 데이터 간의 차이를 컴퓨팅한다. 클라이언트 디바이스는 차이를 임계치와 비교한다. 차이가 임계치와 동일하거나 또는 임계치를 초과하면, 클라이언트 디바이스는 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다.
[0009] 일부 구현들에서, 클라이언트 디바이스는 복수의 제3자 애플리케이션들과 연관된 데이터를 저장하며, 복수의 제3자 애플리케이션들의 각각의 제3자 애플리케이션은 대응하는 바이너리 데이터 및 대응하는 메타데이터와 연관된다. 각각의 제3자 애플리케이션에 대한 대응하는 바이너리 데이터 및 대응하는 메타데이터는 단일 업로드로 클라이언트 디바이스로부터 업로딩된다. 일부 구현들에서, 제3자 애플리케이션과 연관된 데이터는, 데이터를 다운로딩하기 이전에 클라이언트 디바이스 상에서 전체적으로 복제되지 않는다. 일부 구현들에서, 클라이언트 디바이스는, 미리 결정된 업로드 스케줄에 기반하여, 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다. 일부 구현들에서, 클라이언트 디바이스는 제3자 애플리케이션에 의해 보고된, 제3자 애플리케이션에 대한 변화들의 검출에 기반하여, 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다. 일부 구현들에서, 클라이언트 디바이스는, 클라이언트 디바이스가 클라이언트 디바이스의 사용자로부터 백업 요청을 수신할 때, 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다.
[0010] 일부 구현들에서, 클라이언트 디바이스는, 제3자 애플리케이션의 바이너리 데이터 및 메타데이터를 단일 파일로 애그리게이팅(aggregating)하며, 이 파일을 클라우드 저장소의 업로드 서버에 송신하도록 구성된다. 업로드 서버는, 메타데이터로부터 바이너리 데이터를 분리하고, 제 1 클라우드 저장 위치로의 저장을 위해, 바이너리 데이터를 송신하고, 업데이트된 메타데이터를 획득하도록, 제 1 클라우드 저장 위치의 저장 어드레스를 메타데이터에 첨부하며, 제 2 클라우드 저장 위치로의 저장을 위해, 업데이트된 메타데이터를 송신하도록 구성된다.
[0011] 다른 양상에서, 제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법은, 제3자 애플리케이션과 연관된 데이터를 클라이언트 디바이스에 제공할지의 여부를 결정하는 단계를 포함한다. 제3자 애플리케이션과 연관된 데이터는, 저장 어드레스를 갖는 제 1 클라우드 저장 위치에 저장된 바이너리 데이터 및 제 2 클라우드 저장 위치에 저장된 메타데이터를 포함한다. 방법은, 제 1 클라우드 저장 위치의 저장 어드레스를 결정하기 위해, 메타데이터를 사용하는 단계, 및 제 1 클라우드 저장 위치로부터의 바이너리 데이터를 클라이언트 디바이스에 제공하는 단계를 더 포함한다.
[0012] 일부 구현들에서, 제3자 애플리케이션의 바이너리 데이터는 제3자 애플리케이션에 대한 전체 데이터를 포함한다. 일부 구현들에서, 클라이언트 디바이스는 복수의 제3자 애플리케이션들과 연관된 데이터를 저장한다. 복수의 제3자 애플리케이션들의 각각의 제3자 애플리케이션은 대응하는 바이너리 데이터 및 대응하는 메타데이터와 연관되며, 각각의 제3자 애플리케이션에 대한 대응하는 바이너리 데이터는 단일 다운로드로 클라이언트 디바이스에 다운로딩된다. 일부 구현들에서, 클라이언트 디바이스는, 클라이언트 디바이스가 클라이언트 디바이스의 사용자로부터 복원 요청을 수신할 때, 제3자 애플리케이션과 연관된 데이터를 다운로딩하기로 결정한다. 일부 구현들에서, 제3자 애플리케이션과 연관된 데이터는 애플리케이션 데이터, 사용자 기본 설정들 및 애플리케이션 콘텐츠를 포함한다. 일부 구현들에서, 클라이언트 디바이스가 제 1 클라이언트 디바이스이고, 바이너리 데이터 및 업데이트된 메타데이터가 제 2 클라이언트 디바이스에 다운로딩되어서, 제 1 클라이언트 디바이스 상의 제3자 애플리케이션 데이터는 제 2 디바이스 상의 제3자 애플리케이션 데이터와 동기화된다.
[0013] 일부 구현들에서, 바이너리 데이터 및 메타데이터는 클라우드 저장소의 다운로드 서버에 송신되며, 이 다운로드 서버는, 바이너리 데이터를 제 1 클라우드 저장 위치에 이전에 기록했으며, 제 2 클라우드 저장 위치로의 기록을 위해, 메타데이터를 이전에 송신했다. 일부 구현들에서, 다운로드 서버는, 업데이트된 메타데이터를 제 2 클라우드 저장 위치로부터 판독하고 업데이트된 메타데이터를 제 2 클라우드 저장 위치에 기록하도록 구성된 클라우드 저장 서비스에, 메타데이터를 이전에 송신했다. 일부 구현들에서, 다른 제3자 애플리케이션과 연관된 데이터는 제 3 클라우드 저장 위치에 저장된 메타데이터를 포함하며, 바이너리 데이터를 포함하지 않는다. 일부 구현들에서, 제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법은 또한, 다른 제3자 애플리케이션과 연관된 데이터를 클라이언트 디바이스에 제공할지의 여부를 결정하는 단계, 다른 제3자 애플리케이션과 연관된 메타데이터를 제 3 클라우드 저장 위치에 저장된 키-값 쌍들의 세트로서 식별하는 단계, 및 키-값 쌍들의 세트를 클라이언트 디바이스에 제공하는 단계를 포함한다.
[0014] 본 개시내용의 성질 및 본 개시내용의 다양한 장점들을 비롯하여, 본 개시내용의 전술한, 그리고 다른 특징들은, 첨부된 도면들과 함께 취해지는 다음의 상세한 설명의 고려 시 더욱 명백할 것이며, 이 도면들에서,
[0015] 도 1은 예시적 실시예에 따른, 데이터를 클라우드 저장 서비스에 업로딩하기 위한 시스템의 블록 다이어그램이다.
[0016] 도 2는 예시적 실시예에 따른, 데이터 업로드 프로세스를 수행하기 위해 협력하도록 구성된 클라이언트 디바이스 및 서버의 블록 다이어그램이다.
[0017] 도 3은 예시적 실시예에 따른, 제3자 애플리케이션 데이터를 업로딩하기 위한 예시적 방법을 도시하는 블록 다이어그램이다.
[0018] 도 4는 예시적 실시예에 따른, 클라우드 저장 시스템으로부터 디바이스로 제3자 애플리케이션 데이터를 복원시키기 위한 예시적 방법을 도시하는 블록 다이어그램이다.
[0019] 도 5는 예시적 실시예에 따른, 제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법의 흐름도를 도시한다.
[0020] 도 6은 예시적 실시예에 따른, 제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법의 흐름도를 도시한다.
[0021] 본원에서 설명된 시스템들 및 방법들의 전반적인 이해를 제공하기 위해, 클라이언트 디바이스 상의 제3자 애플리케이션 데이터의 백업 및 복원을 위한 시스템을 비롯하여, 특정 실시예들이 이제 설명될 것이다. 그러나, 본원에서 설명된 시스템들 및 방법들이 다뤄지고 있는 애플리케이션에 적절한 대로 적응 및 수정될 수 있으며, 본원에서 설명된 시스템들 및 방법들이 다른 적절한 애플리케이션들에서 사용될 수 있으며, 그러한 다른 추가들 및 수정들이 그 범위로부터 벗어나지 않을 것이라는 것이 당업자에 의해 이해될 것이다. 일반적으로, 본원에서 설명된 컴퓨터화된 시스템들은 프로세싱 디바이스 또는 디바이스들, 이를테면 컴퓨터, 마이크로프로세서, 논리 디바이스, 또는 본원에서 설명된 컴퓨터화된 방법들 중 하나 또는 그 초과를 수행하기 위해 하드웨어, 펌웨어, 및 소프트웨어로 구성되는 다른 디바이스 또는 프로세서를 포함하는 하나 또는 그 초과의 엔진들을 포함할 수 있다.
[0022] 본원에서 설명된 바와 같이, 본 개시내용은 제3자 애플리케이션과 연관된 전체-데이터의 백업을 수행하는 시스템 및 방법을 제공한다. 제3자 애플리케이션 세팅들과 연관된 키-값 쌍들 대신에, 세팅들, 히스토리, 및 콘텐츠를 비롯하여 제3자 애플리케이션과 연관된 전체-데이터가 클라우드 저장소에 업로딩된다. 제3자 애플리케이션들과 연관된 바이너리 데이터 및 메타데이터 둘 모두가, 클라우드 저장소에 업로딩함으로써 백업된다. 제3자 애플리케이션에 대한 메타데이터는 파일명, 사이즈, 패스코드 또는 식별 번호, 파일의 히스토리, 디스크립션(description), 제3자 애플리케이션이 설계된 운영체제의 현재 버전, 및 다른 정적 메타데이터를 포함할 수 있다. 제3자 애플리케이션 특정 데이터 이외의 다른 파일들 및 데이터가 또한, 유사한 방법을 사용하여 백업될 수 있다. 그러한 데이터는 메모리 카드, SD 카드, 다운로드 폴더, 또는 개별 앱의 데이터와 연관되지 않는 다른 데이터 리포지토리들을 포함할 수 있다. 부가적으로, 클라우드 저장소에 백업되는 이들 그리고 다른 파일들 및 데이터는, 완전히 동작가능하며 가시적인 파일들로서, 클라우드-기반 파일 저장 시스템 사용자 인터페이스에서 사용자에게 노출될 수 있다.
[0023] 제3자 애플리케이션 데이터의 백업은, 미리 결정된 스케줄에 따라 또는 제3자 애플리케이션 데이터에 대한 변화들이 있을 때, 발생할 수 있다. 예컨대, 미리 결정된 스케줄은 하루에 한 번, 일주일에 한 번, 한 달에 한 번, 또는 임의의 다른 적절한 빈도와 같이 매 고정 간격으로 제3자 애플리케이션 데이터의 백업을 요구할 수 있다. 다른 예로서, 적어도 임계량의 변화들이 제3자 애플리케이션 데이터에 이루어졌다고 결정될 때, 백업은 자동으로 개시될 수 있다. 특히, 제3자 애플리케이션 데이터에 대한 변화들은 내부 제3자 애플리케이션 데이터베이스들 또는 세팅들에 대한 변화들을 포함할 수 있다. 일부 실시예들에서, 제3자 애플리케이션들에 대한 변화들은 애플리케이션과 연관된 폴더에 레코딩된다. 업로드가 요구되는지의 여부를 결정하기 위해 클라이언트 디바이스 백업 프레임워크가 이들 변화들에 액세스할 수 있다.
[0024] 일부 실시예들에서, 클라이언트 디바이스는, 사용자로 하여금 백업에 관련된 세팅들을 커스터마이징하게 허용하도록 구성될 수 있다. 예컨대, 클라이언트 디바이스가 모바일 폰일 경우, 모바일 폰이 셀룰러 네트워크에 연결될 때 모바일 폰이 제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하는 것은 바람직하지 않을 수 있는데, 그 이유는 그렇게 하는 것이 사용자의 데이터 플랜의 데이터를 소비할 것이기 때문이다. 이 경우, 클라이언트 디바이스는, 모바일 디바이스가 고속의, 신뢰성 있는, 그리고/또는 저렴한 네트워크, 이를테면 무선 인터넷 네트워크에 연결될 때에만 백업을 수행하도록 구성될 수 있다. 대안적으로, 사용자는 셀룰러 네트워크를 통한 백업을 인에이블(enable)하기 위해 하나 또는 그 초과의 옵션들을 선택할 수 있다. 백업은, 다수의 제3자 애플리케이션들에 대해 결정된 요구되는 백업들이 함께 그룹핑되고, 그러한 다수의 제3자 애플리케이션들에 대한 모든 업로드들이 업로드 세션 동안 하나씩 수행되도록 구성될 수 있다. 하나보다 많은 제3자 애플리케이션에 대한 다수의 요구되는 백업들은 또한, 제3자 애플리케이션 데이터에 변화들이 발생할 때 계속해서 일어날 수 있다. 백업들은 또한, 특정 디바이스 요건들이 충족될 때에만, 이를테면 모바일 디바이스가 전력원에 플러깅될 때에만, 또는 유휴 또는 넌-피크 사용 시간들 동안, 이를테면 야간에만 발생하도록 구성될 수 있다.
[0025] 도 1은 데이터를 클라우드 저장 서비스에 업로딩하기 위한 시스템(100)의 블록 다이어그램을 도시한다. 시스템은 클라이언트 디바이스(101), 애플리케이션들(102a 및 102b)(일반적으로, 애플리케이션(102)), 클라우드 저장소(103), 제 1 클라우드 저장 위치(104), 및 제 2 클라우드 저장 위치(106)를 포함한다. 클라이언트 디바이스(101)는 연관된 데이터를 포함하는 제3자 애플리케이션들(102)을 포함한다. 데이터는 바이너리 데이터 및 메타데이터 둘 모두를 포함할 수 있다. 클라이언트 디바이스는 업로드가 발생해야 한다고 결정한다. 업로드가 발생해야 한다는 결정은, 사용자 액션, 타이밍된 업로드, 또는 사용자 개시되거나 또는 다른 방식으로 개시될 수 있는 제3자 애플리케이션들 및 애플리케이션 데이터에 대한 변화들에 기반하는 업로드에 의해 트리거링될 수 있다. 클라이언트 디바이스(101)는 제3자 애플리케이션의 바이너리 데이터 및 메타데이터를 클라우드 저장소(103)에 송신한다. 클라우드 저장소(103) 내에서, 제3자 애플리케이션의 바이너리 데이터는 제 1 클라우드 저장 위치(104)에 저장되며, 제3자 애플리케이션의 메타데이터는 제 2 클라우드 저장 위치(106)에 저장된다.
[0026] 데이터 업로드
[0027] 도 2는 데이터 업로드 프로세스를 수행하기 위해 협력하도록 구성된 시스템(200)의 블록 다이어그램이다. 시스템(200)은 클라이언트 디바이스(201) 상의(예컨대, "클라이언트 측" 상의) 백업 프레임워크(208), 백업 전송부(210) 및 제3자 애플리케이션들(202a, 202b, 202c), 그리고 서버(216) 상의(예컨대, "서버 측" 상의) 백업 서버(218), 업로드 서버(224), 클라우드 저장 서비스(203), 및 메타데이터 저장소(226)를 포함한다. 클라이언트 디바이스(201)는 폰 또는 태블릿과 같은 모바일 디바이스를 포함할 수 있다. 클라이언트 디바이스(201)가 모바일 디바이스인 것으로서 본원에서 종종 설명되지만, 당업자는, 본 개시내용의 시스템들 및 방법들이 또한, 데스크톱 컴퓨터들, 랩톱들, 또는 임의의 다른 적절한 컴퓨팅 디바이스를 비롯하여 임의의 개수의 컴퓨팅 디바이스들 상에서 애플리케이션 데이터의 백업 및 복원을 수행하는 것에 적용가능하다는 것을 이해할 것이다. 클라이언트 디바이스(201)는, 바이너리 백업 모듈(209)을 포함하는 백업 프레임워크(208)와 통신하는 제3자 애플리케이션들(202a, 202b, 202c)과 연관된 데이터를 저장한다. 백업 프레임워크(208)은 백업 전송부(210)와 통신한다. 백업 프레임워크(208)는 디바이스 메모리에 존재하며, 미리 결정된 스케줄에 대한 참조에 의해 또는 애플리케이션 데이터의 변화들의 검출에 대한 응답으로, 제3자 애플리케이션들(202a, 202b, 202c)이 백업을 요구하는지의 여부를 결정하도록 구성된다. 백업 프레임워크(208)는, 데이터의 변화가 있는지의 여부를 결정하기 위해, 제3자 애플리케이션 데이터의 이전 백업들과 바이너리 애플리케이션 데이터의 비교를 허용하도록 구성된다. 이는, 체크섬 계산에 의해, 또는 애플리케이션 변화 폴더들에 레코딩된 임의의 애플리케이션 변화들이 있는지를 결정함으로써 달성될 수 있다.
[0028] 클라이언트 디바이스(201)가 백업에 대한 필요가 있다고 결정한 후에, 바이너리 백업 모듈(209)은 업로딩될 애플리케이션 데이터를 단일 파일로 아카이빙(archiving)하며, 이 파일을 백업 전송부(210)에 전송한다. 도 2의 백업 전송부(210)는 다양한 백업 방법들이 사용할 수 있는 2개의 상이한 데이터 타입들을 포함한다. 특히, 도 2에서 도시된 바와 같이, 백업 전송부는 키-값 쌍 섹션(213), 및 바이너리 데이터를 포함하는 전체-데이터 백업 섹션(212)을 포함한다. 일반적으로, 본 개시내용의 범위로부터 벗어나지 않고, 다른 적절한 데이터 타입들이 사용될 수 있다. 애플리케이션 데이터가 백업 프레임워크(208)로부터 백업 전송부(210)로 전송된 후에, 클라이언트 디바이스(201)는, 업로드 프로세스를 시작하도록 서버(216)에게 호출(call)한다.
[0029] 도 2에서 묘사된 바와 같이, 서버(216)는 업로드 서버(224), 키-값 쌍 저장소(220) 및 비즈니스 로직 에이전트(222)를 포함하는 백업 서버(218), 클라우드 저장 서비스(203), 및 메타데이터 저장 유닛(226)을 포함한다. 업로드 서버(224)는 업로딩된 바이너리 데이터를 처리하며, 연관된 메타데이터의 저장, 그리고 미래의 복원 요청 동안 데이터를 리트리빙(retrieving)하기 위해 사용될 수 있는 위치 레퍼런스들의 생성을 개시하도록, 백업 서버(218)의 비즈니스 로직 에이전트(222)에게 호출하도록 구성된다. 백업 서버(218)는 업로드 서버(224)로부터 요청들을 수신하며, 이들 요청들을 클라우드 저장 서비스(203)에 전달하며, 이 클라우드 저장 서비스(203)는 메타데이터 저장소(226)로의 저장을 위해 메타데이터를 준비한다. 부가적으로, 클라이언트 디바이스의 백업들에 관련된 구조화된 데이터가 키-값 쌍 저장소(220)에 저장될 수 있다. 구조화된 데이터는 디바이스 ID, 제3자 애플리케이션 ID, 및 업로드 방법의 일부로서 수신된, 클라우드 저장소에 저장된 제3자 애플리케이션 데이터의 저장 위치들에 대한 레퍼런스들을 포함할 수 있다. 이 구조화된 데이터는, 클라이언트 디바이스 타입 및 제조 날짜, 최근 백업들에 관련된 타임스탬프들, 및 클라이언트 디바이스(201) 상의 백업 프레임워크(208)의 버전들에 관련된 정보를 비롯하여, 추가 정보를 포함할 수 있다.
[0030] 일부 실시예들에서, 제3자 애플리케이션 데이터의 업로드는 일련의 단계들을 통해 달성된다. 이들 단계들은 도 2와 관련하여 설명된 컴포넌트들 중 일부를 이용하여 도 3에서 예시 및 열거된다:
[0031] 도 3의 단계(1)에서, 데이터 업로드에 대한 필요가 클라이언트 디바이스 백업 프레임워크(208)에 의해 결정될 때, 백업을 요구하는 제3자 애플리케이션들(202a, 202b, 202c)에 관련된 기본 메타데이터와 함께 백업 요청 메시지가 생성된다. 백업 요청 메시지는 클라이언트 디바이스(201)로부터 업로드 서버(224)로 전송된다. 클라이언트 디바이스 백업 프레임워크(208)는 새로운 백업을 요구하는 각각의 제3자 애플리케이션(202a, 202b, 202c)에 대해 타르볼(tarball)(".tar" 아카이브 파일)을 생성한다. 클라이언트 디바이스 백업 전송부(210)는, 백업 요청 메시지를 업로드 서버(224)에 전달함으로써, 업로드 서버(224)로의 제3자 애플리케이션 데이터 타르볼들의 업로드를 개시한다. 클라이언트 디바이스 백업 전송부(210)는 또한, 업로드 서버(224)로의 제3자 애플리케이션 데이터 업로드에 관련된 메타데이터를 제공한다. 업로드 서버(224)는 표준 업로드, 바이너리 차동(differential) 방법, 또는 청크(chunk)된 또는 재시작가능한 업로드를 통해 파일을 수신한다. 바이너리 차동 업로드들을 포함하는 실시예들에서, 업로딩될 바이너리 및 메타데이터는 클라이언트 디바이스(201) 상에 위치된 바이너리 차이 라이브러리(binary diff library)(214)에서 스테이징(staging)될 수 있다. 업로딩될 제3자 애플리케이션 데이터가 체크섬 방법에 의해 결정되어서, 기존의 저장된 데이터와 비교하여 클라이언트 디바이스(201) 상의 제3자 애플리케이션 데이터 간의 차이들만이, 2개의 데이터 파일들 간의 차이들을 설명하는 구조와 함께 업로딩될 수 있다.
[0032] 단계(2)에서, 업로드 서버(224)는 수신된 제3자 애플리케이션 바이너리 데이터를 바이너리 데이터 저장소(223)에 기록한다. 바이너리 데이터 저장소(228)는 다량의 바이너리 데이터의 저장을 위해 설계되는 클라우드 저장 위치이다. 바이너리 데이터 저장소(228)는 바이트들에 대한 액세스를 순차적으로 판독하며, 호출된 위치에 대한 응답으로 그들을 서빙할 수 있다. 제 2 클라우드 저장 위치(예컨대, 도 2의 메타데이터 저장소(226)에 있음)로의 저장을 위해, 제3자 애플리케이션 메타데이터는 제거된다.
[0033] 단계(3)에서, 업로드 서버(224)는 업로딩된 제3자 애플리케이션 데이터의 파일 위치를 포함하는, 제3자 애플리케이션 바이너리 데이터에 대한 바이너리 데이터 저장 위치 레퍼런스를 수신한다. 바이너리 데이터 저장 위치 레퍼런스는, 제3자 애플리케이션 데이터가 저장된 바이너리 데이터 저장소(228) 내의 위치를 룩업(look up)하기 위해 사용될 수 있는 숫자 열(numerical string)이다.
[0034] 단계(4)에서, 업로드 서버(224)는 제3자 애플리케이션 데이터에 대한 바이너리 데이터 저장 위치 레퍼런스를, 바이너리 데이터 위치 레퍼런스를 복제(clone)하는 백업 서버(218) 내의 비즈니스 로직 에이전트(222)에 제공한다. 업로드 서버(224)는 또한, 제3자 애플리케이션 메타데이터를 백업 서버(218)에 제공한다.
[0035] 단계(5)에서, 백업 서버(218)는, 저장된 바이너리 데이터와 연관된 제3자 애플리케이션 메타데이터와 함께, 바이너리 데이터 저장 위치 레퍼런스를 클라우드 저장 서비스(203)에 전달한다. 백업 서버(218)는, 메타데이터의 정확한 저장을 위해 요구되는 대로 파일들 및 폴더들을 생성한다. 클라우드 저장 서비스(203)는, 메타데이터 저장소(226)에 파일들을 판독 및 기록할 수 있다.
[0036] 단계(6)에서, 클라우드 저장 서비스(203)는 수신된 제3자 애플리케이션 메타데이터 및 바이너리 데이터 저장 위치 레퍼런스를 사용하며, 바이너리 데이터 저장 위치 레퍼런스를 메타데이터 엔트리에 첨부한다. 또한, 사용자의 저장 쿼터(quota)에 대해 제3자 애플리케이션 데이터에 대한 저장 공간을 카운팅하지 말라는 명령들과 같이, 추가 디스크립터(descriptor)들이 제3자 애플리케이션 메타데이터에 첨부될 수 있다. 클라우드 저장 서비스(203)는 메타데이터 저장소(226)로의 제3자 애플리케이션 메타데이터의 저장을 위해 적절한 엔트리들 및 폴더들을 생성한다. 클라우드 저장 서비스(203)는 제3자 애플리케이션 데이터를 메타데이터 저장소(226)에 기록한다. 메타데이터 저장소(226)는 메타데이터를 저장하도록 갖추어져 있는 클라우드 저장소이다.
[0037] 단계(7)에서, 메타데이터 저장소(226)는 제3자 애플리케이션 메타데이터의 성공적 저장을 의미하는 성공 신호를 리턴한다. 성공 신호가 메타데이터의 위치에 대한 레퍼런스를 포함하여서, 메타데이터의 위치를 룩업하기 위해, 성공 신호가 사용될 수 있다.
[0038] 단계(8)에서, 클라우드 저장 서비스(203)는 성공 신호를 백업 서버(218)에 전달하며, 이 백업 서버(218)는 성공 신호를 레코딩한다.
[0039] 단계(9)에서, 백업 서버(218)는 성공 신호를 업로드 서버(224)에 전달한다.
[0040] 단계(10)에서, 업로드 서버(224)는 성공 신호를 클라이언트 디바이스(201)에 리턴한다.
[0041] 바이너리 데이터는 업로드 서버(224)에 업로딩되며, 바이너리 데이터 저장소(228)에 저장된다. 제3자 애플리케이션 데이터의 배칭(batching)은 업로드 서버(224)에서 발생할 수 있다. 대응하는 메타데이터에는 바이너리 데이터 저장 위치에 대한 레퍼런스가 첨부되며, 이 대응하는 메타데이터는 메타데이터 저장소(226)에 저장된다. 메타데이터 저장소(226) 위치로의 메타데이터의 저장은 클라우드 저장 서비스(203)에 의해 보조된다. 메타데이터가 성공적으로 저장된 후에, 성공 신호가 메타데이터 저장 서비스(226)에 의해 생성되어 다시 백업 서버(218), 업로드 서버(224), 그리고 마지막으로 클라이언트 디바이스(201)에 전달된다. 성공 신호는, 제3자 애플리케이션 데이터가 클라우드 저장소에 성공적으로 업로딩 및 저장되었다는 것을 표시한다.
[0042] 일부 실시예들에서, 제3자 애플리케이션 데이터는, 단일 파일로서 애플리케이션마다 모바일 디바이스로부터 클라우드 저장소로 업로딩된다. 단일 제3자 애플리케이션, 예컨대 도 2의 202a, 202b, 또는 202c에 대한 제3자 애플리케이션 데이터는 ".tar" 타입 아카이브 파일로서 업로딩될 수 있다. 이 타입의 파일들은 본원에서 타르볼들로 지칭될 수 있다. 애플리케이션 단위로 백업을 수행하는 것은 적어도 유리할 수 있는데, 그 이유는 그렇게 하는 것이 성공적 업로드의 가능성을 증가시킬 수 있기 때문이다. 특히, 다수의 제3자 애플리케이션들에 대한 변화들을 함께 배칭하는 것이 아니라, 제3자 애플리케이션마다 한 번에 하나의 파일을 업로딩하는 것이 바람직할 수 있다. 커다란 파일들을 수반하는 업로드들은 더 작은 파일들을 수반하는 업로드들보다 실패하기가 더 쉽다. 업로드에 대한 문제가 있으면, 단일 제3자 애플리케이션에 대한 애플리케이션 데이터만이 리-업로딩될 필요가 있다. 그러므로, 이러한 방식으로, 단일 제3자 애플리케이션에 관련된 애플리케이션 데이터만을 포함하는 업로드는 더 적은 시간이 걸릴 것이며, 업로드는 더욱 효율적일 것이다.
[0043] 백업 동안 제3자 애플리케이션(202a, 202b, 202c)마다의 단일 파일 업로드의 사용은, 업로드 프로세스 전에 단지 소량의 임시 저장소만을 요구한다. 제3자 애플리케이션 데이터의 업로드 프로세스는, 데이터가 업로드 전에 로컬 캐시에서 복제되는 것이 아니라 직접적으로 스트리밍되도록 수행될 수 있다. 따라서, 전체 백업 페이로드가 디스크 상에서 결코 생성되지 않는다. 업로딩된 제3자 애플리케이션 데이터가 코히렌트(coherent)하다는 것을 보장하기 위하여, 각각의 제3자 애플리케이션 데이터 업로드는 단일 패스(pass)로서 프로세싱 및 업로딩될 수 있다. 하나보다 많은 패스로 제3자 애플리케이션 데이터를 업로딩하는 것은, 2개의 패스들 간에 제3자 애플리케이션 데이터의 변화가 있다면, 코히렌트하지 않은 업로드 프로세스의 생성을 야기할 수 있다.
[0044] 일부 실시예들에서, 단일 패스로 제3자 애플리케이션 데이터를 업로딩하는 것이 어려울 수 있다. 이는, 업로드 서버(224)가 서버에 전송되고 있는 바이트 범위들의 매니페스트가 업로드의 시작 시 제공될 것을 요구하면, 발생할 수 있다. 그러한 경우들에서, 단일 패스 업로드는 발생할 수 없을 수 있는데, 그 이유는 매니페스트를 컴퓨팅하기 위해서는 제3자 애플리케이션 데이터 파일들을 통하는 전체 패스(full pass)가 먼저 이루어져야 하기 때문이다. 이 경우, 프로세싱을 위한 파일을 스테이징할 디스크 공간이 충분하지 않을 수 있다. 업로드를 위한 준비를 위한 제3자 애플리케이션 데이터 파일을 통하는 제 2 패스는, 이러한 제3자 애플리케이션 데이터 파일을 통하는 제 1 패스와 동일한 제3자 애플리케이션 데이터 스냅샷인 것이 보증되지 않을 수 있다. 차이 매니페스트 정보를 인터리빙함으로써, 그러한 경우가 지원될 수 있다. 예컨대, 단일 패스 업로드 스크립트는 다음의 포맷을 사용하여 특정될 수 있다:
{ 서버 카피 바이트들 0 100 사용, 이들 20 바이트들 업로딩, 서버 바이트들 120-150 사용 }.
[0045] 클라우드 저장소에 백업되는 제3자 애플리케이션 데이터는 앱(app)마다의 백업 데이터로서 저장된다. 제3자 애플리케이션 데이터의 최신 개정(latest revision)만이 클라우드 저장소 내의 일 위치에 저장된다. 선택적으로, 데이터의 업로드는, 변화된 데이터만이 클라우드 저장소에 업로딩되는 바이너리 차동 방법에 의해 달성될 수 있다. 바이너리 차동 방법을 사용하여, 제3자 애플리케이션 데이터의 현재 상태가 이전에 업로딩된 백업과 비교되며, 제3자 애플리케이션 데이터에서 어떤 변화들이 발생했는지에 대한 결정이 이루어진다. 이전 제3자 애플리케이션 데이터 백업과 현재 제3자 애플리케이션 데이터의 비교는 체크섬 방법에 의해 달성될 수 있다. 이 접근법에서, 제3자 애플리케이션 데이터의 최종 업로드의 커스텀(custom) 청크 사이즈들에 대한 체크섬들은 클라이언트 디바이스 상에서 로컬로 컴퓨팅된다. 미가공 제3자 애플리케이션 데이터의 전체 세트를 업로딩하는 것이 아니라, 차이들을 표시하는 데이터만이 클라우드 저장소에 업로딩될 수 있으며, 이로써 대역폭이 절약되며, 백업 업로드에 요구되는 시간이 감소된다. 그러므로, 업로딩될 제3자 애플리케이션 데이터에 대한 변화들을 결정하기 위해 바이너리 차동 프로토콜을 사용하는 것은, 제3자 애플리케이션 방법마다의 단일 업로드의 효율을 개선시킨다.
[0046] 일부 실시예들에서, 바이너리 차동 방법은, 제3자 애플리케이션 데이터의 업로드가 수행되어야 할지의 여부를 결정하기 위해, 그리고 제3자 애플리케이션 데이터에 어떤 변화들이 발생했는지 그리고 무엇이 클라우드 저장소에 업로딩되어야 하는지를 결정하기 위해 사용된다. 클라이언트 디바이스 백업 전송부는 제3자 애플리케이션 데이터로부터 데이터를 판독하며, 그것을 점진적으로(incrementally) 프로세싱한다. 클라이언트 디바이스 백업 프레임워크는 적어도 하나의 체크섬 청크를 저장한다. 클라이언트 디바이스 백업 전송부가 판독하는 각각의 바이트에 대해, 최종 N개의 바이트들의 롤링(rolling) 체크섬이 컴퓨팅되며, 최종 업로드와 연관된 청크들의 체크섬과 비교된다. 제3자 애플리케이션 데이터의 최종 업로드로부터의 청크들의 체크섬은 서버 상에 저장되며, 비교를 위해 다운로딩된다. 새롭게 컴퓨팅된 체크섬과 저장된 체크섬 간에 어떤 매치도 없다면, 가장 오래된 바이트가 서버에 전송된다. 매치가 있다면, 청크는 클라우드 저장소에 업로딩되지 않는다.
[0047] 일부 실시예들에서, 제3자 애플리케이션 데이터의 백업은, 자동적이며 그리고 세팅된 스케줄에 따라 발생하도록 구성된다. 제3자 애플리케이션 데이터 백업 및 업로드가 자동적이며 모든 제3자 애플리케이션들(202a, 202b, 202c)에 공통적일 수 있어서, 제3자 애플리케이션들의 개발자들은, 제3자 애플리케이션 데이터를 이 시스템에 백업하기 위하여 자신들의 제3자 애플리케이션 구성들을 변경시키도록 조금도 요구받지 않는다. 제3자 애플리케이션들(202a, 202b, 202c)의 개발자들은, 자신들의 제3자 애플리케이션들(202a, 202b, 202c)의 구성 세부사항들 또는 매니페스트를 변화시킴으로써, 백업에서 손을 뗄 수 있다. 전체 데이터 백업이 바람직하지 않을 수 있는 제3자 애플리케이션들(202a, 202b, 202c)의 예들은 파이낸셜 애플리케이션들, 패스워드 저장 애플리케이션들 또는 인증자(authenticator)들이다. 자동 백업에서 손을 뗀 개발자들을 갖는 이들 제3자 애플리케이션들(202a, 202b, 202c)은, 제3자 애플리케이션(202a, 202b, 202c) 또는 사용자에 의한 대안적 수동 메커니즘들에 의해 여전히 백업될 수 있다.
[0048] 일단 제3자 애플리케이션 데이터가 클라우드 저장소에 업로딩 및 저장되었다면, 제3자 애플리케이션 데이터의 백업은 사용자의 시야로부터 숨겨지지만, 사용자의 클라우드 저장 계정과 여전히 연관될 수 있다. 대안적으로, 제3자 애플리케이션 데이터의 백업에는, 클라우드 저장 파일 시스템의 사용자 인터페이스를 통해 사용자가 액세스가능할 수 있다. 사용자 인터페이스를 통해 제3자 애플리케이션 데이터의 백업에 액세스하는 것은, 사용자로 하여금, 클라우드 저장 시스템에 있는 동안 제3자 애플리케이션 데이터 또는 다른 데이터를 변화시키거나 또는 조작하도록 허용한다. 예컨대, 사진-편집 제3자 애플리케이션에 관련된 데이터의 백업은 편집된 또는 편집되지 않은 사진들을 포함할 수 있으며, 사용자는, 자신의 계정과 연관된 클라우드 저장 파일 시스템의 사용자 인터페이스를 통해 백업 파일들에서 이 사진들에 액세스하며, 이 사진들을 편집하거나 또는 조작할 수 있다. 사용자는 또한, 데이터의 백업을 삭제하기 위하여, 제3자 애플리케이션 데이터의 백업에 액세스할 수 있다.
[0049] 일부 실시예들에서, 제3자 애플리케이션 데이터의 백업은 클라우드 저장 시스템의 계층적 폴더들에 저장된다. 제3자 애플리케이션 바이너리 데이터 및 메타데이터는 사용자와 연관된 폴더 내에 저장될 수 있다. 백업 데이터를 포함하는 폴더들은, 클라이언트 디바이스 및 제3자 애플리케이션이 식별가능한 방식으로 조직화된다. 이는 클라이언트 디바이스에 대한 제3자 애플리케이션 데이터 백업들, 클라이언트 디바이스 ID, 저장된 제3자 애플리케이션 데이터 백업들, 이름과 같은 애플리케이션 기표, 그리고 일부 경우들에서, 제3자 애플리케이션 데이터 파일에 대한 타르볼과 연관된 오브젝트 패밀리 루트 폴더(Object Family Root Folder)를 포함할 수 있다. 오브젝트 패밀리 루트 폴더는, 사용자의 계정과 연관되어 있더라도, 사용자에게 이용가능하지 않을 수 있다. 이 폴더는 또한, 동기화(syncing) 이벤트들 동안 동기화되지 않을 수 있다.
[0050] 데이터 복원
[0051] 본 개시내용의 시스템들 및 방법들에 따라, 클라우드 저장소에 저장되는 제3자 애플리케이션 데이터는 클라이언트 디바이스(201)에 복원될 수 있다. 복원 경로를 구현하기 위해, 클라이언트 디바이스(201)에 의한 커맨드 후에, 제3자 애플리케이션 데이터는 리트리빙될 수 있다. 제3자 애플리케이션들(202a, 202b, 202c)의 복원 동안, 업로드 서버(224)는 데이터를 다운로딩하도록 구성될 수 있다. 이 사례에서, 업로드 서버(224)는 다운로드 서버(230)로 지칭될 수 있다. 클라우드 저장 시스템으로부터 디바이스로 제3자 애플리케이션 데이터를 복원시키는 것은, 도 2에서 설명된 컴포넌트들 중 일부와 함께 도 4에서 예시된 다음의 단계들을 사용하여 애플리케이션 단위로 수행될 수 있다:
[0052] 도 4의 단계(1)에서, 디바이스의 복원 시, 클라이언트 디바이스(201) 백업 전송부(210)는, 디바이스 ID 및 제3자 애플리케이션 ID를 백업 서버(218)에 전송함으로써, 제3자 애플리케이션 데이터 다운로드를 개시한다. 이는 클라이언트 디바이스(201) 및 사용자 뿐만 아니라 사용자와 연관된 데이터가 요청되는 제3자 애플리케이션(202a, 202b, 202c)을 식별한다.
[0053] 단계(2)에서, 백업 서버(218)는, 클라이언트 디바이스(201)로부터 식별 정보 및 제3자 애플리케이션 데이터 복원 요청을 수신하자마자, 제3자 애플리케이션 데이터의 최종 성공적 백업으로부터의 성공 신호를 다시 클라이언트 디바이스(201)에 전송한다. 이 성공 신호는 메타데이터 저장 위치에 대한 레퍼런스를 포함한다.
[0054] 단계(3)에서, 클라이언트 디바이스 백업 전송부(210)는 다운로드 서버(230)와 연결되며, 메타데이터 저장 위치 레퍼런스를 갖는 성공 신호가 다운로드 서버(230)에 전송된다.
[0055] 단계(4)에서, 다운로드 서버(230)는 메타데이터 저장 위치 레퍼런스를 사용하여, 메타데이터 저장소(226)로부터의 제3자 애플리케이션 메타데이터를 요청한다.
[0056] 단계(5)에서, 다운로드 서버(230)는, 제3자 애플리케이션 메타데이터 뿐만 아니라 제3자 애플리케이션 데이터의 백업 동안 메타데이터에 첨부된 바이너리 저장 위치 레퍼런스를 수신한다.
[0057] 단계(6)에서, 다운로드 서버(230)는 바이너리 저장 위치 레퍼런스를 사용하여, 바이너리 데이터 저장소(228)로부터의 제3자 애플리케이션 바이너리 데이터를 요청한다.
[0058] 단계(7)에서, 제3자 애플리케이션 바이너리 데이터는 바이너리 데이터 저장소(228)로부터 추출되어 다운로드 서버(230)에 전송된다.
[0059] 단계(8)에서, 다운로드 서버(230)는 요청된 제3자 애플리케이션 바이너리 및 메타데이터를 클라이언트 디바이스 백업 전송부(210)에 직접적으로 제공한다. 클라이언트 디바이스 백업 전송부(210)는 제3자 애플리케이션 데이터의 저장과 연관된 클라이언트 디바이스 저장소 내의 특정 위치에 전달되는 데이터를 추출한다. 데이터가 디바이스에 복원되는 각각의 제3자 애플리케이션(202a, 202b, 202c)은 데이터의 저장을 위해 지정된 클라이언트 디바이스 저장소 내에 별개의 위치를 가질 수 있다. 따라서, 클라이언트 디바이스 백업 전송부(210)는 제3자 애플리케이션(202a, 202b, 202c)을 클라이언트 디바이스(201) 상에 구현하며, 모든 제3자 애플리케이션 세팅들 및 파일들이 복원된다.
[0060] 위에서 설명된 복원 방법은, 새로운 디바이스를 셋업하기 위한 셋업 프로세스 동안 수행될 수 있다. 계정이 클라이언트 디바이스(201)에 추가될 때, 클라이언트 디바이스의 백업 프레임워크(208)는, 백업이 이미 클라우드 저장소에 저장되어 있는지의 여부에 대해 체크할 수 있다. 이미 저장되어 있다면, 제3자 애플리케이션 데이터는 각각의 제3자 애플리케이션(202a, 202b, 202c)에 대해 복원된다. 예컨대, 클라이언트 디바이스(201)는 제3자 애플리케이션(202a, 202b, 또는 202c)에 관해 백업 서버(218)에게 질의한다. 백업 서버(218)가 성공 신호를 클라이언트 디바이스(201)에 제공하면, 이는 애플리케이션의 백업이 클라우드 저장소에 존재한다는 것을 표시할 수 있다.
[0061] 복원 요청 동안, 특정한 요청된 제3자 애플리케이션(202a, 202b, 202c)에 대한 제3자 애플리케이션 데이터의 백업이 존재한다고 결정되면, 제3자 애플리케이션 데이터를 다운로딩하는 프로세스가 시작된다. 저장된 메타데이터로부터 바이너리 데이터 저장 위치 레퍼런스가 리트리빙된다. 바이너리 데이터 저장소(228)에서 적절한 제3자 애플리케이션 바이너리 데이터의 위치를 찾아내기 위한 바이너리 데이터 저장 위치 레퍼런스를 사용하여, 다운로드 서버(230)에 의해 바이너리 데이터 저장소(228)로부터 타르볼 파일(".tar" 아카이브 파일)이 다운로딩된다. 다운로드 서버(230)는 제3자 애플리케이션 데이터를 클라이언트 디바이스(201)에 서빙한다. 요청된 제3자 애플리케이션에 대한 백업이 식별되지 않으면, 키-값 쌍들을 비롯하여, 제3자 애플리케이션 세팅들을 복원하는 대안적 수단이 시도될 것이다.
[0062] 클라우드 저장소로부터 새로운 디바이스 상으로 제3자 애플리케이션 데이터를 복원시키는 것은, 사용자로 하여금, 복원 시, 디바이스 상의 제3자 애플리케이션들(202a, 202b, 202c)에서 동일한 환경 및 세팅들을 경험하며, 이전 디바이스 상에서와 동일한, 제3자 애플리케이션(202a, 202b, 202c) 내의 환경을 경험하도록 허용한다. 이는 사용자 기본 설정들, 이를테면, 애플리케이션이 무엇처럼 보이는지 그리고 애플리케이션이 어떻게 기능하는지를 포함할 수 있다. 애플리케이션에 저장된 데이터를 비롯하여 애플리케이션에 특정한 데이터가 또한 복원된다. 예컨대, 텍스트 메시징 애플리케이션인 제3자 애플리케이션에 대해 저장된 데이터는 텍스트들, 사진들, 오디오파일들, 텍스트 메시지 히스토리 및 연락처(contact)들을 포함할 수 있다. 이들은 설명된 업로드 방법에 의해 클라우드 저장소에 저장되며, 복원 요청에 의해 디바이스에 복원될 것이다. 제3자 애플리케이션 데이터의 복원 후에, 제3자 애플리케이션 데이터의 백업은, 추가 복원 또는 다운로드 요청 시 사용하기 위해 클라우드 저장소에서 유지된다.
[0063] 일부 실시예들에서, 사용자는, 제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩한 제 1 디바이스와 제 2 디바이스를 동기화시키기 위하여, 복원 요청을 개시할 수 있다. 제3자 애플리케이션들(202a, 202b, 202c)이 동일한 애플리케이션 세팅들, 환경들 및 콘텐츠를 포함하도록, 사용자는 2개의 디바이스들 간의 제3자 애플리케이션들(202a, 202b, 202c)을 동기화시키기 위한 수단으로서 기능하는 복원 프로세스를 개시할 수 있다.
[0064] 일부 실시예들에서, 본 개시내용의 시스템들 및 방법들은, 기존 백업 방법들과의 역호환성을 유지하는 방식으로 구현될 수 있다. 복원 프로세스는, 백업 프로토콜의 오래된 버전, 예컨대 키-값 쌍들의 사용에 의존하는 백업 프로토콜을 이용하여 생성된 백업으로부터 제3자 애플리케이션 데이터를 복원시키는 옵션을 사용자에게 제공할 수 있다. 이러한 방식으로, 본원에서 설명된 방법에 따라 백업 및 복원에 요구되는 소프트웨어로 동작하는 클라이언트 디바이스(201)는, 이전 백업 방법을 사용하여 만들어진 백업으로부터의 복원을 요청할 수 있다. 사용자는 또한, 오래된 백업 및 복원 소프트웨어를 사용하면서, 설명된 방법을 이용하여 만들어진 백업으로부터 제3자 애플리케이션 데이터를 복원시킬 수 있다. 오래된 백업 및 복원 소프트웨어를 이용하여 만들어진 복원은 성공할 것인데, 그 이유는 오래된 백업 소프트웨어가, 메타데이터 저장 위치 레퍼런스 뿐만 아니라 새로운 데이터를 포함하는 성공 신호를 무시할 것이며, 대신에, 복원을 위해 메타데이터와 함께 저장된 키-값 쌍들에 의존할 것이기 때문이다.
[0065] 백업 및 복원 방법은 역호환성이 있으며, 마이그레이팅될 키-값 쌍 방법에 의해 실행되는 이전 백업들의 마이그레이션(migration)을 요구하지 않는다. 본원에서 설명된 백업 방법은 키-값 쌍들을 포함하는 백업들과 호환성이 있다. 부가적으로, 제3자 애플리케이션 파일들의 전체 레코드를 설정하기 위하여, 설명된 백업 방법의 사용은 모든 애플리케이션 데이터의 초기 전체 백업을 요구한다. 백업에 대한 필요를 결정하기 위하여, 클라이언트 디바이스 상에 존재하는 제3자 애플리케이션 데이터와의 비교를 위해 이들 파일들이 사용된다. 백업 방법에 대한 액세스를 수신하자마자 제3자 애플리케이션(202a, 202b, 202c)의 전체 초기 백업은, 임의의 이전 키-값 쌍 백업 파일들에 대한 필요를 제거한다. 일부 실시예들에서, 이전에 백업된 제3자 애플리케이션 데이터를 포함하는 키-값 쌍들이 또한, 전체 데이터 백업의 일부로서 백업된다.
[0066] 디바이스가 폐기(decommission)될 때, 디바이스 상에 이전에 저장된 제3자 애플리케이션 데이터는 새로운 디바이스에 복원될 수 있다. 그러나, 폐기된 디바이스들은 "고아(orphaned) 데이터세트들"의 존재로 이어질 수 있으며, 여기서 제3자 애플리케이션 데이터는 클라우드에 저장되었지만 더 이상 사용자 또는 기능하는 클라이언트 디바이스(201)에 연결되지 않는다. 이들 고아 데이터세트들을 제거하기 위한 방법들이 착수될 수 있다. 고아 데이터세트들은, 어떤 시간 기간 후에 만료되도록 세팅될 수 있다. 대안적으로, 사용자는, 디바이스 상의 사용자 인터페이스를 통해 또는 클라이언트 디바이스(201)와 연관된 사용자 계정에서, 디바이스가 폐기되었다는 것 또는 비활성 상태가 될 것이라는 것을 시그널링할 수 있다.
[0067] 새로운 백업 및 복원 방법의 단계적 도입(phase-in) 동안, 클라이언트 디바이스들(201)에 대한 제3자 애플리케이션 데이터가 전체적으로 백업되기 때문에, 클라우드 저장소로의 압도적인 양의 데이터 흐름이 있을 수 있다. 이 백업 특징의 초기 롤-아웃(roll-out) 동안, 업로드 흐름은 클라이언트 및 서버 측 둘 모두의 메커니즘들에 의해 제어될 수 있다. 예컨대, 업로드 및 복원 기능들에 대한 사용자 액세스가 디바이스에 기반하여 제한될 수 있다. 클라이언트 디바이스는, 클라이언트 디바이스 모델 또는 특정 클라이언트 디바이스 상의 특징을 세팅하거나 또는 디스에이블(disable)하도록 구성될 수 있다. 대안적으로, 특징은 클라이언트 디바이스의 어느 비율의 사용자들에 대해서만 롤 아웃될 수 있어서, 제3자 애플리케이션 데이터의 초기 업로드들을 위한 시간이, 추가 비율의 사용자들에 대해 특징을 롤 아웃하기 전에, 이들 사용자들을 위해 발생하도록 허용한다. 부가적으로, 업로드 및 복원 특징에 대한 액세스는 제3자 애플리케이션에 기반하여 제한될 수 있으며, 시간에 따라 더 많은 제3자 애플리케이션들이 업로드 및 복원 기능성에 의해 커버된다. 또한, 2개의 모드들 간에 토글링(toggling)함으로써 데이터 흐름을 제어하기 위하여, 백업 기간의 구성들이 변화될 수 있다. 제 1 모드에 따라, 제3자 애플리케이션 데이터에 대한 충분한 양의 변화가 있을 때, 업로드 프로세스가 개시될 수 있다. 제 2 모드에 따라, N일마다 한 번과 같이 미리 결정된 스케줄에 기반하여, 업로드 프로세스가 개시될 수 있다.
[0068] 서버 측에서, 데이터의 흐름은, 플래그들 또는 특징 스위치(feature switch)들과 같이 서버들 상의 스로틀링 레버(throttling lever)들의 구현에 의해 제어될 수 있다. 플래그들 또는 특징 스위치들은 업로드 서버 및 백업 서버에 의해 판독가능하다. 위의 세팅된 서버는, 플래그가 스로틀링에 기인하는 실패를 표시하는 커스텀 오류 코드를 리턴하는 것을 제한한다. 이 커스텀 오류 코드는 또한, 다른 시도가 이루어지기 전에 대기하기에 바람직한 시간 기간을 표시하는 필드를 포함한다. 전체 업로드 호출을 디스에이블할 비상사태들에서 다운스트림 서비스들을 보호하기 위하여, 추가 플래그들이 또한 통합될 수 있다..
[0069] 도 5는 제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법(500)을 예시하는 흐름도를 도시한다. 방법(500)은, 제3자 애플리케이션과 연관된 데이터를 클라우드 저장 서버에 다운로딩하기로 결정하는 단계(단계(502)), 제3자 애플리케이션의 바이너리 데이터를 제 1 클라우드 저장 위치에 저장하는 단계(단계(504)), 제 1 클라우드 저장 위치의 저장 어드레스를 포함하도록 메타데이터를 업데이트하는 단계(단계(506)), 및 업데이트된 메타데이터를, 제 1 클라우드 저장 위치와 상이한 제 2 클라우드 저장 위치에 저장하는 단계(단계(508))를 포함한다.
[0070] 단계(502)에서, 클라이언트 디바이스 백업 프레임워크(예컨대, 도 2의 208)는 클라이언트 디바이스 상의 제3자 애플리케이션과 연관된 데이터가 클라우드 저장 서버에 다운로딩되어야 한다고 결정한다. 제3자 애플리케이션 데이터를 클라우드 저장 서버에 다운로딩하기 위한 요건은 스케줄링된 다운로드, 데이터를 업로딩하기 위한 사용자 요청, 또는 제3자 애플리케이션 데이터의 변화에 기반하여 결정될 수 있다. 일부 구현들에서, 제3자 애플리케이션 데이터를 다운로딩하기 위한 요건은, 체크섬 방법을 사용하여, 클라우드 저장 서버에 현재 저장된 제3자 애플리케이션 데이터와 클라이언트 디바이스 상에 저장된 제3자 애플리케이션 데이터 간의 비교에 의해 결정될 수 있다. 클라우드 저장소에 다운로딩될 제3자 애플리케이션 데이터는 바이너리 데이터 및 메타데이터 둘 모두를 포함한다.
[0071] 단계(504)에서, 바이너리 데이터는 제 1 클라우드 저장 위치에 저장된다. 클라우드 저장 위치는 연관된 저장 어드레스를 갖는다. 제3자 애플리케이션과 연관된 바이너리 데이터는 데이터 타르볼(예컨대, ".tar" 아카이브 파일)로서 클라이언트 디바이스 백업 전송부(예컨대, 도 2의 210)로부터 업로드 서버로 전송된다. 바이너리 데이터는 다량의 바이너리 데이터의 저장을 위해 설계된 제 1 클라우드 저장 위치에 저장된다.
[0072] 단계(506)에서, 제3자 애플리케이션과 연관된 메타데이터는, 제 1 클라우드 저장 위치의 저장 어드레스를 포함하도록 업데이트된다. 클라우드 저장 서비스(예컨대, 도 2의 203)는 바이너리 저장 어드레스를 메타데이터에 첨부한다. 따라서, 바이너리 데이터는 제3자 메타데이터와 연관될 수 있으며, 업데이트된 메타데이터 내의 클라우드 저장 어드레스를 사용하여 리트리빙될 수 있다. 저장 위치는, 제3자 애플리케이션 바이너리 데이터의 파일 위치를 가리키는 숫자 열일 수 있다. 일부 구현들에서, 클라우드 저장 서비스는 또한, 저장 전에 추가 디스크립터들 및 명령들을 메타데이터에 첨부할 수 있다.
[0073] 단계(508)에서, 업데이트된 메타데이터는 제 2 클라우드 저장 위치에 저장된다. 제 2 클라우드 저장 위치는 제 1 클라우드 저장 위치와 상이하며, 메타데이터의 저장을 위해 최적화된다. 바이너리 데이터 및 메타데이터의 성공적 저장 후에, 성공 신호가 업로드 서버로 리턴될 수 있다. 부가적으로, 성공 신호는 메타데이터에 액세스하기 위해 사용될, 메타데이터의 위치에 대한 레퍼런스를 포함할 수 있다.
[0074] 도 6은 제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법(600)을 예시하는 흐름도를 도시한다. 방법(600)은, 제3자 애플리케이션과 연관된 데이터를 클라우드 저장소로부터 클라이언트 디바이스로 제공할지의 여부를 결정하는 단계(단계(602)), 제 1 클라우드 저장 위치의 저장 어드레스를 결정하기 위해, 메타데이터를 사용하는 단계(단계(604)), 및 제 1 저장 위치로부터 클라이언트 디바이스로 바이너리 데이터를 제공하는 단계(단계(606))를 포함한다.
[0075] 단계(602)에서, 제3자 애플리케이션과 연관된 데이터를 클라이언트 디바이스에 제공하기 위해 복원이 요구되는지의 여부가 결정된다. 복원은 사용자로부터의 요청 또는 선택 또는 제3자 애플리케이션에 의한 요청에 대한 응답으로 이루어질 수 있다. 복원은 또한, 디바이스들 간의 동기화(synch)로서 구현될 수 있다. 제3자 애플리케이션과 연관된 데이터는, 저장 어드레스를 갖는 제 1 클라우드 위치에 저장된 바이너리 데이터 및 제 2 클라우드 저장 위치에 저장된 메타데이터 둘 모두를 포함한다. 클라이언트 디바이스 백업 전송부(예컨대, 도 2의 210)는, 클라이언트 디바이스와 연관된 디바이스 ID 및 제3자 애플리케이션과 연관된 제3자 애플리케이션 ID를 백업 서버(예컨대, 도 2의 218)에 전송함으로써 데이터 다운로드를 개시한다.
[0076] 단계(604)는, 바이너리 데이터의 저장 어드레스를 결정하기 위해, 제3자 애플리케이션과 연관된 이전에 저장된 메타데이터를 사용하는 단계를 포함한다. 디바이스 ID 및 제3자 애플리케이션 ID를 포함하는 식별 정보를 수신한 후에, 백업 서버는, 제3자 애플리케이션 데이터의 최종 성공적 백업으로부터의 성공 신호를 클라이언트 디바이스에 전송한다. 이 성공 신호는 메타데이터 저장 위치에 대한 레퍼런스를 포함한다. 그 다음, 제3자 애플리케이션 데이터의 이전 백업 동안 메타데이터에 첨부된 바이너리 저장 위치 레퍼런스를 획득하기 위하여, 메타데이터 저장소로부터 메타데이터가 리트리빙될 수 있다.
[0077] 단계(606)에서, 리트리빙된 바이너리 데이터 저장 위치 어드레스는, 제3자 애플리케이션과 연관된 바이너리 데이터의 위치를 찾아내고 이 바이너리 데이터를 요청하기 위해 사용된다. 바이너리 데이터 및 메타데이터는 다운로드 서버에 의해 백업 전송부를 통해 클라이언트 디바이스에 송신된다. 바이너리 데이터 및 메타데이터는 클라이언트 디바이스 상의 저장소에 전달된다.
[0078] 본 개시내용의 다양한 실시예들이 본원에서 도시 및 설명되었지만, 그러한 실시예들이 단지 예로서만 제공된다는 것이 당업자들에게 명백할 것이다. 본 개시내용으로부터 벗어나지 않고, 많은 변형들, 변화들, 및 치환들이 당업자들에게 이제 발생할 것이다. 본 개시내용을 실시할 때, 본원에서 설명된 본 개시내용의 실시예들에 대한 다양한 대안들이 사용될 수 있다는 것이 이해되어야 한다.
A1. 제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법으로서,
클라이언트 디바이스로부터, 제3자 애플리케이션과 연관된 데이터를 업로딩할지의 여부를 결정하는 단계 ―제3자 애플리케이션과 연관된 데이터는 바이너리 데이터 및 메타데이터를 포함함―; 및
제3자 애플리케이션의 바이너리 데이터 및 제3자 애플리케이션의 메타데이터를 클라우드 저장소에 송신하는 단계를 포함하며,
바이너리 데이터는 저장 어드레스를 갖는 제 1 클라우드 저장 위치에 저장되고,
업데이트된 메타데이터를 획득하도록, 메타데이터에는 저장 어드레스가 첨부되며, 그리고
업데이트된 메타데이터는 제 1 클라우드 저장 위치와 상이한 제 2 클라우드 저장 위치에 저장된다.
A2. 실시예 A1의 방법에 있어서, 제3자 애플리케이션의 바이너리 데이터는 제3자 애플리케이션에 대한 전체(full) 데이터를 포함한다.
A3. 실시예들 A1-A2 중 임의의 실시예의 방법에 있어서, 제3자 애플리케이션과 연관된 데이터를 업로딩할지의 여부를 결정하는 단계는,
클라이언트 디바이스 상에 저장되는 제3자 애플리케이션과 연관된 저장된 바이너리 데이터를 식별하는 단계;
제3자 애플리케이션과 연관된, 이전에 업로딩된 바이너리 데이터를 식별하는 단계;
저장된 바이너리 데이터와 이전에 업로딩된 바이너리 데이터 간의 차이를 컴퓨팅하는 단계; 및
차이를 임계치와 비교하는 단계를 포함한다.
A4. 실시예 A3의 방법에 있어서, 차이가 임계치와 동일하거나 또는 임계치를 초과하면, 클라이언트 디바이스는 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다.
A5. 실시예들 A1-A4 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는 복수의 제3자 애플리케이션들과 연관된 데이터를 저장하며, 복수의 제3자 애플리케이션들의 각각의 제3자 애플리케이션은 대응하는 바이너리 데이터 및 대응하는 메타데이터와 연관되며, 각각의 제3자 애플리케이션에 대한 대응하는 바이너리 데이터 및 대응하는 메타데이터는 단일 업로드로 클라이언트 디바이스로부터 업로딩된다.
A6. 실시예들 A1-A5 중 임의의 실시예의 방법에 있어서, 제3자 애플리케이션과 연관된 데이터는, 송신하는 단계 전에 클라이언트 디바이스 상에서 전체적으로 복제되지 않는다.
A7. 실시예들 A1-A6 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는, 미리 결정된 업로드 스케줄에 기반하여, 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다.
A8. 실시예들 A1-A7 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는 제3자 애플리케이션에 의해 보고된, 제3자 애플리케이션에 대한 변화들의 검출에 기반하여, 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다.
A9. 실시예들 A1-A8 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는, 클라이언트 디바이스가 클라이언트 디바이스의 사용자로부터 백업 요청을 수신할 때, 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다.
A10. 실시예들 A1-A9 중 임의의 실시예의 방법에 있어서, 바이너리 데이터 및 메타데이터를 송신하는 단계는,
제3자 애플리케이션의 바이너리 데이터 및 메타데이터를 단일 파일로 애그리게이팅(aggregating)하는 단계; 및
파일을 클라우드 저장소의 업로드 서버에 송신하는 단계를 포함하며, 업로드 서버는,
메타데이터로부터 바이너리 데이터를 분리하고;
제 1 클라우드 저장 위치로의 저장을 위해, 바이너리 데이터를 송신하고;
업데이트된 메타데이터를 획득하도록, 제 1 클라우드 저장 위치의 저장 어드레스를 메타데이터에 첨부하며; 그리고
제 2 클라우드 저장 위치로의 저장을 위해, 업데이트된 메타데이터를 송신하도록 구성된다.
A11. 실시예 A10의 방법에 있어서, 단일 파일은 파일 타입 ".tar"를 갖는다.
A12. 실시예들 A1-A11 중 임의의 실시예의 방법에 있어서, 제3자 애플리케이션과 연관된 데이터는 애플리케이션 데이터, 사용자 기본 설정들 및 애플리케이션 콘텐츠를 포함한다.
A13. 실시예들 A1-A12 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스에서, 제 2 클라우드 저장 위치에 대한 레퍼런스를 수신하는 단계를 더 포함한다.
A14. 실시예들 A1-A13 중 임의의 실시예의 방법에 있어서, 바이너리 데이터가 제 1 클라우드 저장 위치에 저장될 때, 제3자 애플리케이션에 대한 이전에 업로딩된 바이너리 데이터가 오버라이트되며, 업데이트된 메타데이터가 제 2 클라우드 저장 위치에 저장될 때, 제3자 애플리케이션에 대한 이전에 업로딩된 메타데이터가 오버라이트된다.
A15. 실시예들 A1-A14 중 임의의 실시예의 방법에 있어서, 송신된 바이너리 데이터 및 메타데이터에는, 클라우드 저장소에 대한 액세스를 갖는 사용자가 사용자 인터페이스를 통해 액세스가능하다.
A16. 실시예들 A1-A15 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스가 제 1 클라이언트 디바이스이고, 바이너리 데이터 및 업데이트된 메타데이터가 제 2 클라이언트 디바이스에 다운로딩되어서, 제 1 클라이언트 디바이스 상의 제3자 애플리케이션 데이터는 제 2 디바이스 상의 제3자 애플리케이션 데이터와 동기화된다.
A17. 실시예들 A1-A16 중 임의의 실시예의 방법에 있어서, 바이너리 데이터 및 메타데이터는 클라우드 저장소의 업로드 서버에 송신되며, 업로드 서버는, 바이너리 데이터를 제 1 클라우드 저장 위치에 기록하며, 제 2 클라우드 저장 위치로의 기록을 위해, 업데이트된 메타데이터를 송신한다.
A18. 실시예 A17의 방법에 있어서, 업로드 서버는, 업데이트된 메타데이터를 제 2 클라우드 저장 위치로부터 판독하고 업데이트된 메타데이터를 제 2 클라우드 저장 위치에 기록하도록 구성된 클라우드 저장 서비스에, 업데이트된 메타데이터를 송신한다.
A19. 실시예들 A1-A18 중 임의의 실시예의 방법에 있어서, 바이너리 데이터를 송신하는 단계는 키-값 쌍들을 사용하지 않는다.
A20. 실시예들 A1-A19 중 임의의 실시예의 방법에 있어서,
제3자 애플리케이션과 연관된 매니페스트가, 제3자 애플리케이션과 연관된 데이터가 전체-데이터 백업 프로세스를 사용하여 송신될 것이라고 표시하는지 또는 부분-데이터 백업 프로세스를 사용하여 송신될 것이라고 표시하는지의 여부를 결정하는 단계; 및
부분-데이터 백업 프로세스를 사용하는 것으로 결정되면, 어떤 바이너리 데이터도 클라우드 저장소에 송신하지 않고, 메타데이터의 일부를 클라우드 저장소에 송신하는 단계를 더 포함한다.
A21. 실시예 A20의 방법에 있어서, 메타데이터의 일부를 클라우드 저장소에 송신하는 단계는 키-값 쌍들을 사용하는 단계를 포함한다.
A22. 실시예들 A1-A21 중 임의의 실시예의 방법을 수행하기 위한 시스템.
B1. 제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법으로서,
클라이언트 디바이스 상에 저장된 제3자 애플리케이션과 연관된 데이터를 클라우드 저장 서버에 다운로딩하기로 결정하는 단계 ―제3자 애플리케이션과 연관된 데이터는 바이너리 데이터 및 메타데이터를 포함함―;
제3자 애플리케이션의 바이너리 데이터를, 저장 어드레스를 갖는 제 1 클라우드 저장 위치에 저장하는 단계 ―메타데이터는 저장 어드레스를 포함하도록 업데이트됨―; 및
업데이트된 메타데이터를, 제 1 클라우드 저장 위치와 상이한 제 2 클라우드 저장 위치에 저장하는 단계를 포함한다.
B2. 실시예 B1의 방법에 있어서, 제3자 애플리케이션의 바이너리 데이터는 제3자 애플리케이션에 대한 전체 데이터를 포함한다.
B3. 실시예들 B1-B2 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는,
클라이언트 디바이스 상에 저장되는 제3자 애플리케이션과 연관된 저장된 바이너리 데이터를 식별하고;
제3자 애플리케이션과 연관된, 이전에 업로딩된 바이너리 데이터를 식별하고;
저장된 바이너리 데이터와 이전에 업로딩된 바이너리 데이터 간의 차이를 컴퓨팅하며; 그리고
차이를 임계치와 비교함으로써, 데이터를 업로딩할지의 여부를 결정한다.
B4. 실시예 B3의 방법에 있어서, 차이가 임계치와 동일하거나 또는 임계치를 초과하면, 클라이언트 디바이스는 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다.
B5. 실시예들 B1-B4 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는 복수의 제3자 애플리케이션들과 연관된 데이터를 저장하며, 복수의 제3자 애플리케이션들의 각각의 제3자 애플리케이션은 대응하는 바이너리 데이터 및 대응하는 메타데이터와 연관되며, 각각의 제3자 애플리케이션에 대한 대응하는 바이너리 데이터 및 대응하는 메타데이터는 단일 업로드로 클라이언트 디바이스로부터 업로딩된다.
B6. 실시예들 B1-B5 중 임의의 실시예의 방법에 있어서, 제3자 애플리케이션과 연관된 데이터는, 데이터를 다운로딩하는 단계 전에 클라이언트 디바이스 상에서 전체적으로 복제되지 않는다.
B7. 실시예들 B1-B6 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는, 미리 결정된 업로드 스케줄에 기반하여, 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다.
B8. 실시예들 B1-B7 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는 제3자 애플리케이션에 의해 보고된, 제3자 애플리케이션에 대한 변화들의 검출에 기반하여, 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다.
B9. 실시예들 B1-B8 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는, 클라이언트 디바이스가 클라이언트 디바이스의 사용자로부터 백업 요청을 수신할 때, 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정한다.
B10. 실시예들 B1-B9 중 임의의 실시예의 방법에 있어서,
클라이언트 디바이스는,
제3자 애플리케이션의 바이너리 데이터 및 메타데이터를 단일 파일로 애그리게이팅하며; 그리고
파일을 클라우드 저장소의 업로드 서버에 송신하도록 구성되며; 그리고
업로드 서버는,
메타데이터로부터 바이너리 데이터를 분리하고;
제 1 클라우드 저장 위치로의 저장을 위해, 바이너리 데이터를 송신하고;
업데이트된 메타데이터를 획득하도록, 제 1 클라우드 저장 위치의 저장 어드레스를 메타데이터에 첨부하며; 그리고
제 2 클라우드 저장 위치로의 저장을 위해, 업데이트된 메타데이터를 송신하도록 구성된다.
B11. 실시예 B10의 방법에 있어서, 단일 파일은 파일 타입 ".tar"를 갖는다.
B12. 실시예들 B1-B11 중 임의의 실시예의 방법에 있어서, 제3자 애플리케이션과 연관된 데이터는 애플리케이션 데이터, 사용자 기본 설정들 및 애플리케이션 콘텐츠를 포함한다.
B13. 실시예들 B1-B12 중 임의의 실시예의 방법에 있어서, 제 2 클라우드 저장 위치에 대한 레퍼런스를 클라이언트 디바이스에 송신하는 단계를 더 포함한다.
B14. 실시예들 B1-B13 중 임의의 실시예의 방법에 있어서, 바이너리 데이터가 제 1 클라우드 저장 위치에 저장될 때, 제3자 애플리케이션에 대한 이전에 업로딩된 바이너리 데이터가 오버라이트되며, 업데이트된 메타데이터가 제 2 클라우드 저장 위치에 저장될 때, 제3자 애플리케이션에 대한 이전에 업로딩된 메타데이터가 오버라이트된다.
B15. 실시예들 B1-B14 중 임의의 실시예의 방법에 있어서, 송신된 바이너리 데이터 및 메타데이터에는, 클라우드 저장소에 대한 액세스를 갖는 사용자가 사용자 인터페이스를 통해 액세스가능하다.
B16. 실시예들 B1-B15 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는 제 1 클라이언트 디바이스이며, 방법은, 바이너리 데이터 및 업데이트된 메타데이터를 제 2 클라이언트 디바이스에 송신하여서, 제 1 클라이언트 디바이스 상의 제3자 애플리케이션 데이터가 제 2 디바이스 상의 제3자 애플리케이션 데이터와 동기화되는 단계를 더 포함한다.
B17. 실시예들 B1-B16 중 임의의 실시예의 방법에 있어서, 바이너리 데이터 및 메타데이터는 클라우드 저장소의 업로드 서버에 송신되며, 업로드 서버는, 바이너리 데이터를 제 1 클라우드 저장 위치에 기록하며, 제 2 클라우드 저장 위치로의 기록을 위해, 업데이트된 메타데이터를 송신한다.
B18. 실시예 B17의 방법에 있어서, 업로드 서버는, 업데이트된 메타데이터를 제 2 클라우드 저장 위치로부터 판독하고 업데이트된 메타데이터를 제 2 클라우드 저장 위치에 기록하도록 구성된 클라우드 저장 서비스에, 업데이트된 메타데이터를 송신한다.
B19. 실시예들 B1-B18 중 임의의 실시예의 방법에 있어서, 바이너리 데이터를 저장하는 단계는 키-값 쌍들을 사용하지 않는다.
B20. 실시예들 B1-B19 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는,
제3자 애플리케이션과 연관된 매니페스트가, 제3자 애플리케이션과 연관된 데이터가 전체-데이터 백업 프로세스를 사용하여 송신될 것이라고 표시하는지 또는 부분-데이터 백업 프로세스를 사용하여 송신될 것이라고 표시하는지의 여부를 결정하며; 그리고
부분-데이터 백업 프로세스를 사용하는 것으로 결정되면, 어떤 바이너리 데이터도 클라우드 저장소에 송신하지 않고, 메타데이터의 일부를 클라우드 저장소에 송신하도록 구성된다.
B21. 실시예 B20의 방법에 있어서, 메타데이터의 일부는, 키-값 쌍들을 사용하여 클라우드 저장소에 송신된다.
B22. 실시예들 B1-B21 중 임의의 실시예의 방법을 수행하기 위한 시스템.
C1. 제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법으로서,
제3자 애플리케이션과 연관된 데이터를 클라이언트 디바이스에 다운로딩할지의 여부를 결정하는 단계 ―제3자 애플리케이션과 연관된 데이터는 저장 어드레스를 갖는 제 1 클라우드 저장 위치에 저장된 바이너리 데이터 및 제 2 클라우드 저장 위치에 저장된 메타데이터를 포함함―;
제 1 클라우드 저장 위치의 저장 어드레스를 결정하기 위해, 메타데이터를 사용하는 단계; 및
제 1 클라우드 저장 위치로부터 클라이언트 디바이스로 바이너리 데이터를 다운로딩하는 단계를 포함한다.
C2. 실시예 C1의 방법에 있어서, 제3자 애플리케이션의 바이너리 데이터는 제3자 애플리케이션에 대한 전체 데이터를 포함한다.
C3. 실시예들 C1-C2 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는 복수의 제3자 애플리케이션들과 연관된 데이터를 저장하며, 복수의 제3자 애플리케이션들의 각각의 제3자 애플리케이션은 대응하는 바이너리 데이터 및 대응하는 메타데이터와 연관되며, 각각의 제3자 애플리케이션에 대한 대응하는 바이너리 데이터는 단일 다운로드로 클라이언트 디바이스에 다운로딩된다.
C4. 실시예들 C1-C3 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스는, 클라이언트 디바이스가 클라이언트 디바이스의 사용자로부터 복원 요청을 수신할 때, 제3자 애플리케이션과 연관된 데이터를 다운로딩하기로 결정한다.
C5. 실시예들 C1-C4 중 임의의 실시예의 방법에 있어서, 제3자 애플리케이션과 연관된 데이터는 애플리케이션 데이터, 사용자 기본 설정들 및 애플리케이션 콘텐츠를 포함한다.
C6. 실시예들 C1-C5 중 임의의 실시예의 방법에 있어서, 클라이언트 디바이스가 제 1 클라이언트 디바이스이고, 바이너리 데이터 및 업데이트된 메타데이터가 제 2 클라이언트 디바이스에 다운로딩되어서, 제 1 클라이언트 디바이스 상의 제3자 애플리케이션 데이터는 제 2 디바이스 상의 제3자 애플리케이션 데이터와 동기화된다.
C7. 실시예들 C1-C6 중 임의의 실시예의 방법에 있어서, 바이너리 데이터 및 메타데이터는 클라우드 저장소의 다운로드 서버에 송신되며, 다운로드 서버는, 바이너리 데이터를 제 1 클라우드 저장 위치에 이전에 기록했으며, 제 2 클라우드 저장 위치로의 기록을 위해, 메타데이터를 이전에 송신했다.
C8. 실시예 C7의 방법에 있어서, 다운로드 서버는, 업데이트된 메타데이터를 제 2 클라우드 저장 위치로부터 판독하고 업데이트된 메타데이터를 제 2 클라우드 저장 위치에 기록하도록 구성된 클라우드 저장 서비스에, 메타데이터를 이전에 송신했다.
C9. 실시예들 C1-C8 중 임의의 실시예의 방법에 있어서, 다른 제3자 애플리케이션과 연관된 데이터는 제 3 클라우드 저장 위치에 저장된 메타데이터를 포함하며, 바이너리 데이터를 포함하지 않는다.
C10. 실시예 C9의 방법에 있어서,
다른 제3자 애플리케이션과 연관된 데이터를 클라이언트 디바이스에 다운로딩할지의 여부를 결정하는 단계;
다른 제3자 애플리케이션과 연관된 메타데이터를, 제 3 클라우드 저장 위치에 저장된 키-값 쌍들의 세트로서 식별하는 단계; 및
키-값 쌍들의 세트를 클라이언트 디바이스에 다운로딩하는 단계를 더 포함한다.
C11. 실시예들 C1-C10 중 임의의 실시예의 방법을 수행하기 위한 시스템.

Claims (66)

  1. 제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법으로서,
    클라이언트 디바이스에 의해, 상기 클라우드 저장소에 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정하는 단계 ―상기 제3자 애플리케이션과 연관된 데이터는 바이너리 데이터 및 메타데이터를 포함함―;
    상기 클라이언트 디바이스에 의해, 상기 제3자 애플리케이션의 상기 바이너리 데이터 및 상기 메타데이터를 단일 파일로 애그리게이팅(aggregating)하는 단계; 및
    상기 바이너리 데이터가 상기 메타데이터로부터 분리되도록 상기 단일 파일을 상기 클라우드 저장소의 업로드 서버에 송신하는 단계
    를 포함하고,
    상기 바이너리 데이터는 제 1 클라우드 저장 위치로의 저장을 위해 송신되고, 상기 제 1 클라우드 저장 위치의 저장 어드레스는 업데이트된 메타데이터를 획득하도록 상기 메타데이터에 첨부되며, 그리고 상기 업데이트된 메타데이터는 제 2 클라우드 저장 위치로의 저장을 위해 송신되는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 제3자 애플리케이션의 바이너리 데이터는 상기 제3자 애플리케이션에 대한 전체(full) 데이터를 포함하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 클라이언트 디바이스에 의해, 상기 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정하는 단계는,
    상기 클라이언트 디바이스 상에 저장되는 상기 제3자 애플리케이션과 연관된 저장된 바이너리 데이터를 식별하는 단계;
    상기 제3자 애플리케이션과 연관된 이전에 업로딩된 바이너리 데이터를 식별하는 단계;
    상기 저장된 바이너리 데이터와 상기 이전에 업로딩된 바이너리 데이터 간의 차이를 컴퓨팅하는 단계; 및
    상기 차이를 임계치와 비교하는 단계
    를 더 포함하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  4. 제 3 항에 있어서,
    상기 차이가 상기 임계치와 동일하거나 또는 상기 임계치를 초과하면, 상기 클라이언트 디바이스는 상기 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 클라이언트 디바이스는 복수의 제3자 애플리케이션들과 연관된 데이터를 저장하며, 상기 복수의 제3자 애플리케이션들의 각각의 제3자 애플리케이션은 대응하는 바이너리 데이터 및 대응하는 메타데이터와 연관되며, 각각의 제3자 애플리케이션에 대한 대응하는 바이너리 데이터 및 대응하는 메타데이터는 단일 업로드로 상기 클라이언트 디바이스로부터 업로딩되는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 제3자 애플리케이션과 연관된 데이터는, 상기 송신하는 단계 전에는 상기 클라이언트 디바이스 상에서 복제되지 않는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 클라이언트 디바이스는, 미리 결정된 업로드 스케줄에 기반하여, 상기 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 클라이언트 디바이스는 상기 제3자 애플리케이션에 의해 보고된, 상기 제3자 애플리케이션에 대한 변화들의 검출에 기반하여, 상기 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  9. 제 1 항 또는 제 2 항에 있어서,
    상기 클라이언트 디바이스는, 상기 클라이언트 디바이스가 상기 클라이언트 디바이스의 사용자로부터 백업 요청을 수신할 때, 상기 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  10. 삭제
  11. 제 1 항에 있어서,
    상기 단일 파일은 파일 타입 ".tar"을 갖는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  12. 제 1 항 또는 제 2 항에 있어서,
    상기 제3자 애플리케이션과 연관된 데이터는 애플리케이션 데이터, 사용자 기본 설정(preference)들 및 애플리케이션 콘텐츠를 포함하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  13. 제 1 항 또는 제 2 항에 있어서,
    상기 클라이언트 디바이스에서, 상기 제 2 클라우드 저장 위치에 대한 레퍼런스를 수신하는 단계
    를 더 포함하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  14. 제 1 항 또는 제 2 항에 있어서,
    상기 바이너리 데이터를 상기 클라우드 저장소에 송신하는 단계는 상기 제3자 애플리케이션에 대한 이전에 업로딩된 바이너리 데이터가 상기 제 1 클라우드 저장 위치에 오버라이트(overwrite)되게 하며, 상기 메타데이터를 상기 클라우드 저장소에 송신하는 단계는 상기 제3자 애플리케이션에 대한 이전에 업로딩된 메타데이터가 상기 제 2 클라우드 저장 위치에 오버라이트되게 하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  15. 제 1 항 또는 제 2 항에 있어서,
    송신된 바이너리 데이터 및 메타데이터에는, 상기 클라우드 저장소에 대한 액세스를 갖는 사용자가 사용자 인터페이스를 통해 액세스가능한,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  16. 제 1 항 또는 제 2 항에 있어서,
    상기 클라이언트 디바이스는 제 1 클라이언트 디바이스이고,
    상기 바이너리 데이터 및 상기 업데이트된 메타데이터는 상기 제 1 클라이언트 디바이스 상의 상기 제3자 애플리케이션 데이터가 제 2 클라이언트 디바이스 상의 제3자 애플리케이션 데이터와 동기화되도록 상기 제 2 클라이언트 디바이스에 다운로딩되는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  17. 제 1 항 또는 제 2 항에 있어서,
    상기 바이너리 데이터 및 상기 메타데이터는 상기 클라우드 저장소의 업로드 서버에 송신되며, 상기 업로드 서버는, 상기 바이너리 데이터를 상기 제 1 클라우드 저장 위치에 기록하며, 상기 제 2 클라우드 저장 위치로의 기록을 위해, 상기 업데이트된 메타데이터를 송신하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  18. 제 17 항에 있어서,
    상기 업로드 서버는, 상기 제 2 클라우드 저장 위치로부터 상기 업데이트된 메타데이터를 판독하고 상기 업데이트된 메타데이터를 상기 제 2 클라우드 저장 위치에 기록하도록 구성된 클라우드 저장 서비스에, 상기 업데이트된 메타데이터를 송신하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  19. 제 1 항 또는 제 2 항에 있어서,
    상기 바이너리 데이터를 송신하는 단계는 키-값 쌍들을 사용하지 않는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  20. 제 1 항 또는 제 2 항에 있어서,
    상기 제3자 애플리케이션과 연관된 매니페스트가, 상기 제3자 애플리케이션과 연관된 데이터가 전체-데이터 백업 프로세스를 사용하여 송신될 것이라고 표시하는지 또는 부분-데이터 백업 프로세스를 사용하여 송신될 것이라고 표시하는지의 여부를 결정하는 단계; 및
    부분-데이터 백업 프로세스를 사용한다는 결정에 응답하여, 어떤 바이너리 데이터도 상기 클라우드 저장소에 송신하지 않고, 상기 메타데이터의 일부를 상기 클라우드 저장소에 송신하는 단계
    를 더 포함하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  21. 제 20 항에 있어서,
    상기 메타데이터의 일부를 상기 클라우드 저장소에 송신하는 단계는 키-값 쌍들을 사용하는 단계를 포함하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 업로딩하기 위한 방법.
  22. 제 1 항 또는 제 2 항에 따른 방법을 수행하기 위한 시스템.
  23. 제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법으로서,
    클라이언트 디바이스 상에 저장된 제3자 애플리케이션과 연관된 데이터를 클라우드 저장 서버에 다운로딩하기로 결정하는 단계 ―상기 제3자 애플리케이션과 연관된 데이터는 바이너리 데이터 및 메타데이터를 포함함―;
    저장 어드레스를 갖는 제 1 클라우드 저장 위치에 저장될 상기 제3자 애플리케이션의 상기 바이너리 데이터를 업로딩하는 단계; 및
    제 2 클라우드 저장 위치에 저장될 상기 제3자 애플리케이션의 상기 메타데이터를 업로딩하는 단계
    를 포함하고,
    상기 메타데이터는 상기 저장 어드레스를 포함하도록 업데이트될 것이며,
    상기 방법은:
    상기 클라이언트 디바이스에 의해, 상기 제3자 애플리케이션의 상기 바이너리 데이터 및 상기 메타데이터를 단일 파일로 애그리게이팅하는 단계; 및
    상기 바이너리 데이터가 상기 메타데이터로부터 분리되도록 상기 단일 파일을 상기 클라우드 저장소의 업로드 서버에 송신하는 단계
    를 더 포함하고,
    상기 바이너리 데이터는 상기 제 1 클라우드 저장 위치로의 저장을 위해 송신되고, 상기 제 1 클라우드 저장 위치의 상기 저장 어드레스는 업데이트된 메타데이터를 획득하도록 상기 메타데이터에 첨부되며, 그리고 상기 업데이트된 메타데이터는 상기 제 2 클라우드 저장 위치로의 저장을 위해 송신되는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  24. 제 23 항에 있어서,
    상기 제3자 애플리케이션의 상기 바이너리 데이터는 상기 제3자 애플리케이션에 대한 전체 데이터를 포함하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  25. 제 23 항 또는 제 24 항에 있어서,
    상기 클라이언트 디바이스는,
    상기 클라이언트 디바이스 상에 저장되는 상기 제3자 애플리케이션과 연관된 저장된 바이너리 데이터를 식별하고;
    상기 제3자 애플리케이션과 연관된, 이전에 업로딩된 바이너리 데이터를 식별하고;
    상기 저장된 바이너리 데이터와 상기 이전에 업로딩된 바이너리 데이터 간의 차이를 컴퓨팅하며; 그리고
    상기 차이를 임계치와 비교함으로써,
    상기 데이터를 업로딩할지의 여부를 결정하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  26. 제 25 항에 있어서,
    상기 차이가 상기 임계치와 동일하거나 또는 상기 임계치를 초과하면, 상기 클라이언트 디바이스는 상기 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  27. 제 23 항 또는 제 24 항에 있어서,
    상기 클라이언트 디바이스는 복수의 제3자 애플리케이션들과 연관된 데이터를 저장하며, 상기 복수의 제3자 애플리케이션들의 각각의 제3자 애플리케이션은 대응하는 바이너리 데이터 및 대응하는 메타데이터와 연관되며, 각각의 제3자 애플리케이션에 대한 대응하는 바이너리 데이터 및 대응하는 메타데이터는 단일 업로드로 상기 클라이언트 디바이스로부터 업로딩되는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  28. 제 23 항 또는 제 24 항에 있어서,
    상기 제3자 애플리케이션과 연관된 데이터는, 상기 데이터를 업로딩하기 전에는 상기 클라이언트 디바이스 상에서 복제되지 않는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  29. 제 23 항 또는 제 24 항에 있어서,
    상기 클라이언트 디바이스는, 미리 결정된 업로드 스케줄에 기반하여, 상기 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  30. 제 23 항 또는 제 24 항에 있어서,
    상기 클라이언트 디바이스는 상기 제3자 애플리케이션에 의해 보고된, 상기 제3자 애플리케이션에 대한 변화들의 검출에 기반하여, 상기 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  31. 제 23 항 또는 제 24 항에 있어서,
    상기 클라이언트 디바이스는, 상기 클라이언트 디바이스가 상기 클라이언트 디바이스의 사용자로부터 백업 요청을 수신할 때, 상기 제3자 애플리케이션과 연관된 데이터를 업로딩하기로 결정하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  32. 삭제
  33. 제 23 항에 있어서,
    상기 단일 파일은 파일 타입 ".tar"을 갖는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  34. 제 23 항 또는 제 24 항에 있어서,
    상기 제3자 애플리케이션과 연관된 데이터는 애플리케이션 데이터, 사용자 기본 설정들 및 애플리케이션 콘텐츠를 포함하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  35. 제 23 항 또는 제 24 항에 있어서,
    상기 제 2 클라우드 저장 위치에 대한 레퍼런스를 상기 클라이언트 디바이스에서 수신하는 단계
    를 더 포함하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  36. 제 23 항 또는 제 24 항에 있어서,
    상기 바이너리 데이터가 상기 제 1 클라우드 저장 위치에 저장될 때, 상기 제3자 애플리케이션에 대한 이전에 업로딩된 바이너리 데이터가 오버라이트되며, 상기 업데이트된 메타데이터가 상기 제 2 클라우드 저장 위치에 저장될 때, 상기 제3자 애플리케이션에 대한 이전에 업로딩된 메타데이터가 오버라이트되는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  37. 제 23 항 또는 제 24 항에 있어서,
    송신된 바이너리 데이터 및 메타데이터에는, 상기 클라우드 저장소에 대한 액세스를 갖는 사용자가 사용자 인터페이스를 통해 액세스가능한,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  38. 제 23 항 또는 제 24 항에 있어서,
    상기 클라이언트 디바이스는 제 1 클라이언트 디바이스이며,
    상기 바이너리 데이터 및 상기 업데이트된 메타데이터는 상기 제 1 클라이언트 디바이스 상의 상기 제3자 애플리케이션 데이터가 제 2 클라이언트 디바이스 상의 제3자 애플리케이션 데이터와 동기화되도록 상기 제 2 클라이언트 디바이스에 다운로딩되는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  39. 제 23 항 또는 제 24 항에 있어서,
    상기 바이너리 데이터 및 상기 메타데이터는 상기 클라우드 저장소의 업로드 서버에 송신되며, 상기 업로드 서버는, 상기 바이너리 데이터를 상기 제 1 클라우드 저장 위치에 기록하며, 상기 제 2 클라우드 저장 위치로의 기록을 위해, 상기 업데이트된 메타데이터를 송신하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  40. 제 39 항에 있어서,
    상기 업로드 서버는, 상기 제 2 클라우드 저장 위치로부터 상기 업데이트된 메타데이터를 판독하고 상기 업데이트된 메타데이터를 상기 제 2 클라우드 저장 위치에 기록하도록 구성된 클라우드 저장 서비스에, 상기 업데이트된 메타데이터를 송신하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  41. 제 23 항 또는 제 24 항에 있어서,
    상기 바이너리 데이터를 저장하는 단계는 키-값 쌍들을 사용하지 않는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  42. 제 23 항 또는 제 24 항에 있어서,
    상기 제3자 애플리케이션과 연관된 매니페스트가, 상기 제3자 애플리케이션과 연관된 데이터가 전체-데이터 백업 프로세스를 사용하여 송신될 것이라고 표시하는지 또는 부분-데이터 백업 프로세스를 사용하여 송신될 것이라고 표시하는지의 여부를 결정하는 단계; 및
    부분-데이터 백업 프로세스를 사용한다는 결정에 응답하여, 어떤 바이너리 데이터도 상기 클라우드 저장소에 송신하지 않고, 상기 메타데이터의 일부를 상기 클라우드 저장소에 송신하는 단계
    를 더 포함하는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  43. 제 42 항에 있어서,
    상기 메타데이터의 일부는, 키-값 쌍들을 사용하여 상기 클라우드 저장소에 송신되는,
    제3자 애플리케이션 데이터를 클라우드 저장소에 저장하기 위한 방법.
  44. 제 23 항 또는 제 24 항에 따른 방법을 수행하기 위한 시스템.
  45. 제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법으로서,
    상기 클라이언트 디바이스에 의해, 제3자 애플리케이션과 연관된 데이터를 상기 클라이언트 디바이스에 다운로딩하기로 결정하는 단계 ―상기 제3자 애플리케이션과 연관된 데이터는 저장 어드레스를 갖는 제 1 클라우드 저장 위치에 저장된 바이너리 데이터 및 제 2 클라우드 저장 위치에 저장된 메타데이터를 포함함―;
    상기 제 2 클라우드 저장 위치에 대한 제 1 레퍼런스를 수신하는 단계;
    상기 제 2 클라우드 저장 위치에 대한 제 1 레퍼런스를, 상기 제 2 클라우드 저장 위치에 대한 제 1 레퍼런스를 이용하여 상기 제 2 클라우드 저장 위치로부터 상기 메타데이터를 획득함으로써 상기 제 1 클라우드 저장 위치의 상기 저장 어드레스를 결정하는 서버에 송신하는 단계 ―상기 메타데이터는 상기 제 1 클라우드 저장 위치에 대한 제 2 레퍼런스를 포함함―; 및
    상기 제 1 클라우드 저장 위치로부터 상기 클라이언트 디바이스로 상기 바이너리 데이터를 다운로딩하는 단계
    를 포함하고,
    상기 클라이언트 디바이스는 제 1 클라이언트 디바이스이며,
    상기 바이너리 데이터 및 업데이트된 메타데이터는 상기 제 1 클라이언트 디바이스 상의 상기 제3자 애플리케이션 데이터가 제 2 클라이언트 디바이스 상의 제3자 애플리케이션 데이터와 동기화되도록 상기 제 2 클라이언트 디바이스에 다운로딩되는,
    제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법.
  46. 제 45 항에 있어서,
    상기 제3자 애플리케이션의 상기 바이너리 데이터는 상기 제3자 애플리케이션에 대한 전체 데이터를 포함하는,
    제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법.
  47. 제 45 항 또는 제 46 항에 있어서,
    상기 클라이언트 디바이스는 복수의 제3자 애플리케이션들과 연관된 데이터를 저장하며, 상기 복수의 제3자 애플리케이션들의 각각의 제3자 애플리케이션은 대응하는 바이너리 데이터 및 대응하는 메타데이터와 연관되며, 각각의 제3자 애플리케이션에 대한 대응하는 바이너리 데이터는 단일 다운로드로 상기 클라이언트 디바이스에 다운로딩되는,
    제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법.
  48. 제 45 항 또는 제 46 항에 있어서,
    상기 클라이언트 디바이스는, 상기 클라이언트 디바이스가 상기 클라이언트 디바이스의 사용자로부터 복원 요청을 수신할 때, 상기 제3자 애플리케이션과 연관된 데이터를 다운로딩하기로 결정하는,
    제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법.
  49. 제 45 항 또는 제 46 항에 있어서,
    상기 제3자 애플리케이션과 연관된 데이터는 애플리케이션 데이터, 사용자 기본 설정들 및 애플리케이션 콘텐츠를 포함하는,
    제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법.
  50. 삭제
  51. 제 45 항 또는 제 46 항에 있어서,
    상기 바이너리 데이터 및 상기 메타데이터는 클라우드 저장소의 다운로드 서버에 송신되며, 상기 다운로드 서버는, 상기 바이너리 데이터를 상기 제 1 클라우드 저장 위치에 이전에 기록했으며, 상기 제 2 클라우드 저장 위치로의 기록을 위해, 상기 메타데이터를 이전에 송신한,
    제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법.
  52. 제 51 항에 있어서,
    상기 다운로드 서버는, 상기 제 2 클라우드 저장 위치로부터 업데이트된 메타데이터를 판독하고 상기 업데이트된 메타데이터를 상기 제 2 클라우드 저장 위치에 기록하는 클라우드 저장 서비스에, 상기 메타데이터를 이전에 송신한,
    제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법.
  53. 제 45 항 또는 제 46 항에 있어서,
    제 2의 제3자 애플리케이션과 연관된 데이터는 제 3 클라우드 저장 위치에 저장된 메타데이터를 포함하며, 상기 제 2의 제3자 애플리케이션과 연관된 바이너리 데이터가 없는,
    제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법.
  54. 제 53 항에 있어서,
    상기 제 2의 제3자 애플리케이션과 연관된 데이터를 상기 클라이언트 디바이스에 다운로딩할지의 여부를 결정하는 단계 ― 상기 제 2의 제3자 애플리케이션과 연관된 메타데이터는 상기 제 3 클라우드 저장 위치에 저장된 키-값 쌍들의 세트로서 식별됨 ―; 및
    상기 키-값 쌍들의 세트를 상기 클라이언트 디바이스에 다운로딩하는 단계
    를 더 포함하는,
    제3자 애플리케이션 데이터를 클라이언트 디바이스에 복원시키기 위한 방법.
  55. 제 45 항 또는 제 46 항에 따른 방법을 수행하기 위한 시스템.
  56. 제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법으로서,
    서버에 의해, 제3자 애플리케이션과 연관된 데이터를 상기 클라이언트 디바이스에 제공할지의 여부를 결정하는 단계 ―상기 제3자 애플리케이션과 연관된 데이터는 저장 어드레스를 갖는 제 1 클라우드 저장 위치에 저장된 바이너리 데이터 및 제 2 클라우드 저장 위치에 저장된 메타데이터를 포함함―;
    상기 제 2 클라우드 저장 위치로부터 상기 메타데이터를 다운로딩하는 단계;
    상기 제 1 클라우드 저장 위치의 상기 저장 어드레스를 결정하기 위해, 상기 메타데이터를 사용하는 단계; 및
    상기 제 1 클라우드 저장 위치로부터 상기 클라이언트 디바이스로 상기 바이너리 데이터를 제공하는 단계
    를 포함하고,
    상기 클라이언트 디바이스는 제 1 클라이언트 디바이스이며,
    상기 바이너리 데이터 및 업데이트된 메타데이터는 상기 제 1 클라이언트 디바이스 상의 상기 제3자 애플리케이션 데이터가 제 2 클라이언트 디바이스 상의 제3자 애플리케이션 데이터와 동기화되도록 상기 제 2 클라이언트 디바이스에 다운로딩되는,
    제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법.
  57. 제 56 항에 있어서,
    상기 제3자 애플리케이션의 상기 바이너리 데이터는 상기 제3자 애플리케이션에 대한 전체 데이터를 포함하는,
    제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법.
  58. 제 56 항 또는 제 57 항에 있어서,
    상기 클라이언트 디바이스는 복수의 제3자 애플리케이션들과 연관된 데이터를 저장하며, 상기 복수의 제3자 애플리케이션들의 각각의 제3자 애플리케이션은 대응하는 바이너리 데이터 및 대응하는 메타데이터와 연관되며, 각각의 제3자 애플리케이션에 대한 대응하는 바이너리 데이터는 단일 다운로드로 상기 클라이언트 디바이스에 다운로딩되는,
    제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법.
  59. 제 56 항 또는 제 57 항에 있어서,
    상기 서버는 상기 클라이언트 디바이스로부터 신호를 수신하는 것에 응답하여 상기 제3자 애플리케이션과 연관된 데이터를 제공하기로 결정하는,
    제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법.
  60. 제 56 항 또는 제 57 항에 있어서,
    상기 제3자 애플리케이션과 연관된 데이터는 애플리케이션 데이터, 사용자 기본 설정들 및 애플리케이션 콘텐츠를 포함하는,
    제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법.
  61. 삭제
  62. 제 56 항 또는 제 57 항에 있어서,
    상기 서버는, 상기 바이너리 데이터를 상기 제 1 클라우드 저장 위치에 이전에 기록했으며, 상기 제 2 클라우드 저장 위치로의 기록을 위해, 상기 메타데이터를 이전에 송신한,
    제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법.
  63. 제 62 항에 있어서,
    상기 서버는, 상기 제 2 클라우드 저장 위치로부터 업데이트된 메타데이터를 판독하도록 구성된 클라우드 저장 서비스에 상기 메타데이터를 이전에 송신했고, 상기 제 2 클라우드 저장 위치에 상기 업데이트된 메타데이터를 이전에 기록한,
    제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법.
  64. 제 56 항 또는 제 57 항에 있어서,
    제 2의 제3자 애플리케이션과 연관된 데이터는 제 3 클라우드 저장 위치에 저장된 메타데이터를 포함하며, 상기 제 2의 제3자 애플리케이션과 연관된 바이너리 데이터가 없는,
    제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법.
  65. 제 64 항에 있어서,
    상기 서버에서, 상기 제 2의 제3자 애플리케이션과 연관된 데이터를 상기 클라이언트 디바이스에 제공할지의 여부를 결정하는 단계;
    상기 제 2의 제3자 애플리케이션과 연관된 메타데이터를 상기 제 3 클라우드 저장 위치에 저장된 키-값 쌍들의 세트로서 식별하는 단계; 및
    상기 키-값 쌍들의 세트를 상기 클라이언트 디바이스에 제공하는 단계
    를 더 포함하는,
    제3자 애플리케이션 데이터의 복원을 클라이언트 디바이스에 제공하기 위한 방법.
  66. 제 56 항 또는 제 57 항에 따른 방법을 수행하기 위한 시스템.
KR1020177027878A 2015-05-27 2016-05-17 자동적인 클라우드-기반 전체 데이터 백업 및 모바일 디바이스들 상에서의 복원을 위한 시스템 및 방법 KR102057527B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562167148P 2015-05-27 2015-05-27
US62/167,148 2015-05-27
PCT/US2016/032878 WO2016191152A1 (en) 2015-05-27 2016-05-17 System and method for automatic cloud-based full-data backup and restore on mobile devices

Publications (2)

Publication Number Publication Date
KR20170130448A KR20170130448A (ko) 2017-11-28
KR102057527B1 true KR102057527B1 (ko) 2020-01-22

Family

ID=56097301

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177027878A KR102057527B1 (ko) 2015-05-27 2016-05-17 자동적인 클라우드-기반 전체 데이터 백업 및 모바일 디바이스들 상에서의 복원을 위한 시스템 및 방법

Country Status (8)

Country Link
US (3) US10455015B2 (ko)
EP (2) EP4040297A1 (ko)
JP (1) JP6571202B2 (ko)
KR (1) KR102057527B1 (ko)
CN (2) CN107667351B (ko)
DE (2) DE202016107158U1 (ko)
GB (1) GB2554555A (ko)
WO (1) WO2016191152A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU781021B2 (en) * 1999-06-18 2005-04-28 Echarge Corporation Method and apparatus for ordering goods, services and content over an internetwork using a virtual payment account
EP2850772A4 (en) * 2012-05-04 2016-02-17 Institutional Cash Distributors Technology Llc CREATION, PROPAGATION AND INVOCATION OF SECURE TRANSACTION OBJECTS
US10423952B2 (en) * 2013-05-06 2019-09-24 Institutional Cash Distributors Technology, Llc Encapsulated security tokens for electronic transactions
US11250423B2 (en) * 2012-05-04 2022-02-15 Institutional Cash Distributors Technology, Llc Encapsulated security tokens for electronic transactions
US9722852B2 (en) * 2013-05-24 2017-08-01 Cisco Technology, Inc. On-demand encapsulating of timed metadata in a network environment
US11030176B2 (en) * 2016-07-01 2021-06-08 Ebay Inc. Distributed storage of metadata for large binary data
US10432737B2 (en) 2017-10-12 2019-10-01 Engine Media, Llc Geopartitioned data caching
US10063632B1 (en) * 2017-12-22 2018-08-28 Engine Media, Llc Low-latency high-throughput scalable data caching
CN110674084A (zh) * 2018-06-15 2020-01-10 伊姆西Ip控股有限责任公司 用于数据保护的方法、设备和计算机可读存储介质
US11245761B2 (en) 2018-12-28 2022-02-08 Alibaba Group Holding Limited Method, apparatus, and computer-readable storage medium for network optimization of cloud storage service
CN109815207A (zh) * 2018-12-28 2019-05-28 深圳市安云信息科技有限公司 数据存储方法和客户端代理
WO2020223099A2 (en) 2019-04-30 2020-11-05 Clumio, Inc. Cloud-based data protection service
CN113315800A (zh) * 2020-02-27 2021-08-27 华为技术有限公司 镜像存储、下载方法、设备以及系统
US11899544B2 (en) * 2020-05-19 2024-02-13 EMC IP Holding Company LLC Efficient synchronization of cloud enabled file system database during snapshot restore operation
KR102375511B1 (ko) * 2020-07-24 2022-03-17 주식회사 한글과컴퓨터 복수의 문서 저장소들과 연동하여 클라이언트 단말로부터 수신된 문서 파일의 저장 처리를 수행하는 문서 저장 관리 서버 및 그 동작 방법
US20230146076A1 (en) * 2021-11-08 2023-05-11 Rubrik, Inc. Backing file system with cloud object store
CN116501552B (zh) * 2023-06-21 2023-09-08 苏州浪潮智能科技有限公司 数据备份的方法、装置、系统及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004021424A (ja) * 2002-06-13 2004-01-22 Toshiba Corp 車載器データのバックアップシステムおよびその方法
US20120310984A1 (en) 2011-06-01 2012-12-06 International Business Machines Corporation Data security for a database in a multi-nodal environment
JP2013033433A (ja) * 2011-06-30 2013-02-14 Ntt Docomo Inc バックアップデータ生成装置、オンライン記憶装置、メタデータ管理装置、バックアップシステム及びバックアップ方法
US20130304706A1 (en) 2012-05-10 2013-11-14 Aetherstore Llc Systems and methods for distributed storage
JP2014519122A (ja) * 2011-06-03 2014-08-07 アップル インコーポレイテッド 多ソース復元の方法と装置

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020156921A1 (en) 2001-04-19 2002-10-24 International Business Machines Corporation Automatic backup of wireless mobile device data onto gateway server while device is idle
JP2003280825A (ja) * 2002-03-22 2003-10-02 Fujitsu Ltd ストレージシステム
US7584225B2 (en) 2003-11-10 2009-09-01 Yahoo! Inc. Backup and restore mirror database memory items in the historical record backup associated with the client application in a mobile device connected to a communion network
US8229897B2 (en) * 2006-02-03 2012-07-24 International Business Machines Corporation Restoring a file to its proper storage tier in an information lifecycle management environment
US7860839B2 (en) 2006-08-04 2010-12-28 Apple Inc. Application-based backup-restore of electronic information
US8311988B2 (en) 2006-08-04 2012-11-13 Apple Inc. Consistent back up of electronic information
US20080243878A1 (en) * 2007-03-29 2008-10-02 Symantec Corporation Removal
US8489830B2 (en) * 2007-03-30 2013-07-16 Symantec Corporation Implementing read/write, multi-versioned file system on top of backup data
US8099392B2 (en) 2007-06-08 2012-01-17 Apple Inc. Electronic backup of applications
US8781528B2 (en) 2007-12-31 2014-07-15 The Invention Science Fund I, Llc Automatic mobile device backup
US8250102B2 (en) 2008-03-14 2012-08-21 Microsoft Corporation Remote storage and management of binary object data
US8583602B2 (en) 2008-06-05 2013-11-12 Palm, Inc. Restoring of data to mobile computing device
US20110016089A1 (en) 2009-07-16 2011-01-20 Apple Inc. Restoring data to a mobile device
US8694469B2 (en) 2009-12-28 2014-04-08 Riverbed Technology, Inc. Cloud synthetic backups
US8694744B1 (en) 2010-03-31 2014-04-08 Emc Corporation Mobile device snapshot backup
US8412934B2 (en) 2010-04-07 2013-04-02 Apple Inc. System and method for backing up and restoring files encrypted with file-level content protection
US9386098B2 (en) 2010-06-11 2016-07-05 Fidelithon Systems, Llc Smartphone management system and method
US8291170B1 (en) 2010-08-19 2012-10-16 Symantec Corporation System and method for event driven backup data storage
US8682873B2 (en) * 2010-12-01 2014-03-25 International Business Machines Corporation Efficient construction of synthetic backups within deduplication storage system
KR20120069400A (ko) 2010-12-20 2012-06-28 주식회사 케이티 모바일 플랫폼에서의 어플리케이션 보관 방법
WO2012166102A1 (en) 2011-05-27 2012-12-06 Empire Technology Development Llc Seamless application backup and recovery using metadata
US9411687B2 (en) 2011-06-03 2016-08-09 Apple Inc. Methods and apparatus for interface in multi-phase restore
US8868882B2 (en) 2011-06-08 2014-10-21 Microsoft Corporation Storage architecture for backup application
US8751457B2 (en) 2012-01-01 2014-06-10 Bank Of America Corporation Mobile device data archiving
US8782441B1 (en) 2012-03-16 2014-07-15 Google Inc. Methods and systems for storage of large data objects
US20130311597A1 (en) 2012-05-16 2013-11-21 Apple Inc. Locally backed cloud-based storage
US20140006551A1 (en) 2012-07-02 2014-01-02 Nti Corporation System and method for backing up data
US9106721B2 (en) 2012-10-02 2015-08-11 Nextbit Systems Application state synchronization across multiple devices
US9776078B2 (en) 2012-10-02 2017-10-03 Razer (Asia-Pacific) Pte. Ltd. Application state backup and restoration across multiple devices
US20160088077A1 (en) * 2014-09-18 2016-03-24 Microsoft Corporation Seamless binary object and metadata sync
US9678687B2 (en) * 2015-09-25 2017-06-13 Mcafee, Inc. User mode heap swapping
US10205651B2 (en) 2016-05-13 2019-02-12 128 Technology, Inc. Apparatus and method of selecting next hops for a session

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004021424A (ja) * 2002-06-13 2004-01-22 Toshiba Corp 車載器データのバックアップシステムおよびその方法
US20120310984A1 (en) 2011-06-01 2012-12-06 International Business Machines Corporation Data security for a database in a multi-nodal environment
JP2014519122A (ja) * 2011-06-03 2014-08-07 アップル インコーポレイテッド 多ソース復元の方法と装置
JP2013033433A (ja) * 2011-06-30 2013-02-14 Ntt Docomo Inc バックアップデータ生成装置、オンライン記憶装置、メタデータ管理装置、バックアップシステム及びバックアップ方法
US20130304706A1 (en) 2012-05-10 2013-11-14 Aetherstore Llc Systems and methods for distributed storage

Also Published As

Publication number Publication date
US11178224B2 (en) 2021-11-16
US20200053152A1 (en) 2020-02-13
JP6571202B2 (ja) 2019-09-04
GB201715233D0 (en) 2017-11-08
JP2018511884A (ja) 2018-04-26
DE202016107158U1 (de) 2017-01-24
US20200053151A1 (en) 2020-02-13
WO2016191152A1 (en) 2016-12-01
EP3304310B1 (en) 2022-02-23
EP3304310A1 (en) 2018-04-11
CN107667351A (zh) 2018-02-06
DE112016002365T5 (de) 2018-02-15
CN107667351B (zh) 2021-12-21
EP4040297A1 (en) 2022-08-10
US10455015B2 (en) 2019-10-22
KR20170130448A (ko) 2017-11-28
US20160352827A1 (en) 2016-12-01
CN114356651A (zh) 2022-04-15
GB2554555A (en) 2018-04-04
US11245758B2 (en) 2022-02-08

Similar Documents

Publication Publication Date Title
KR102057527B1 (ko) 자동적인 클라우드-기반 전체 데이터 백업 및 모바일 디바이스들 상에서의 복원을 위한 시스템 및 방법
US10169163B2 (en) Managing backup operations from a client system to a primary server and secondary server
US9436556B2 (en) Customizable storage system for virtual databases
AU2013364255B2 (en) Application programming interfaces for data synchronization with online storage systems
US8090917B2 (en) Managing storage and migration of backup data
US9613048B2 (en) Sending interim notifications to a client of a distributed filesystem
US9990372B2 (en) Managing the level of consistency for a file in a distributed filesystem
US20150347552A1 (en) Synchronization system for multiple client devices
US20190095455A1 (en) File system point-in-time restore using recycle bin and version history
US20150213100A1 (en) Data synchronization method and system
US10656876B1 (en) Cloud edition and retrieve
US20120259813A1 (en) Information processing system and data processing method
JP5868986B2 (ja) アイテム単位でのリカバリー
US20140122661A1 (en) Computer system and file server migration method
US20100293143A1 (en) Initialization of database for synchronization
US11093290B1 (en) Backup server resource-aware discovery of client application resources
CN110673985B (zh) 一种自动备份版本库的方法、存储介质及服务器
TWI824222B (zh) 企業資源規劃系統及其自動更新方法
US10853188B2 (en) System and method for data retention in a decentralized system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right