KR101598725B1 - 장치를 복원하는 방법 - Google Patents

장치를 복원하는 방법 Download PDF

Info

Publication number
KR101598725B1
KR101598725B1 KR1020147000223A KR20147000223A KR101598725B1 KR 101598725 B1 KR101598725 B1 KR 101598725B1 KR 1020147000223 A KR1020147000223 A KR 1020147000223A KR 20147000223 A KR20147000223 A KR 20147000223A KR 101598725 B1 KR101598725 B1 KR 101598725B1
Authority
KR
South Korea
Prior art keywords
source
resource
backup
resources
restore
Prior art date
Application number
KR1020147000223A
Other languages
English (en)
Other versions
KR20140031365A (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 KR20140031365A publication Critical patent/KR20140031365A/ko
Application granted granted Critical
Publication of KR101598725B1 publication Critical patent/KR101598725B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • 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
    • 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/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability

Abstract

장치를 복원하는 방법으로서, 제1 소스로부터 상기 장치로 자원을 복원하는 단계; 상기 자원의 일부가 상기 제1 소스로부터 상기 장치로 복원된 후에 제2 소스로부터의 상기 자원의 이용가능성을 상기 자원과 연관된 메타데이터에 기초하여 동적으로 검출하는 단계; 상기 제2 소스가 상기 제1 소스보다 상기 장치와 더욱 효율적으로 접속되어 있는지를 판정하는 단계; 및 상기 제2 소스가 상기 장치에 더 효율적으로 접속되어 있다면 상기 자원의 일부가 상기 장치로 복원된 후에 상기 자원의 남아 있는 부분을 상기 제2 소스로부터 상기 장치로 복원하는 단계를 포함하는, 장치를 복원하는 방법이 설명된다.

Description

장치를 복원하는 방법{METHODS FOR RESTORING A DEVICE}
관련 출원에 대한 상호참조
본 출원은, 참조에 의해 그 전체가 본 명세서에 포함되는, Gordon J. Freedman 등에 의한 발명의 명칭이 "Methods and Apparatus for Multi-Phase Multi-Source Backup and Restore"인 2011년 6월 3일 출원된 미국 가출원 제61/493,360호의 우선권을 주장한다.
발명의 분야
본 발명은 대체로 장치의 백업(backup)에 관한 것이다. 더 구체적으로는, 본 발명은 장치들에 대한 파일을 백업하기 위해 장치들의 전력 상태를 검출하는 것에 관한 것이다.
모바일 장치들, 특히, 셀룰러 전화, 개인 휴대 정보 단말기(PDA), 태블릿 장치 등과 같은 모바일 통신 장치들의 확산에 의해, 백업 및 복원 동작은 점점 이러한 모바일 장치들의 일상적 사용의 필수적인 부분이 되고 있다. 그러나, 작동 환경, 모바일 애플리케이션 및/또는 네트워크 스토리지 인프라스트럭쳐가 계속 발전함에 따라, 모바일 장치에 관한 지속적으로 변하는 요건들을 수반하는 새로운 해결과제도 역시 이러한 기능을 지원하기 위해 등장한다.
예를 들어, 종래의 백업/복원 동작은 고 대역폭 네트워크 접속을 이용하여 백업/복원 소프트웨어 및 하드웨어와의 복잡한 상호 작용에 기초할 수 있다. 그러나, 모바일 장치는 종종 이동 중에, 장소가 바뀌면서, 신뢰할 수 없고, 대역폭 제한되고 및/또는 예측불가능할 수 있는 무선 네트워크 접속과 함께 사용된다. 따라서, 모바일 장치에 대한 백업/복원 동작을 완료하는 데에는 긴 시간 및/또는 복수의 시도가 요구될 수 있다. 또한, 이들 동작에 대한 대부분의 무선 네트워크들의 개방성에서 추가적인 보안 위험이 발견될 수 있다.
이와 같이, 기존의 메커니즘은 신뢰할 수 있고, 안전하며 사용자 친화적인 방식으로 모바일 장치들을 백업 및/또는 복원하지 못할 수 있다.
한 실시예에서, 장치 내의 자원들은, 증분적이고 재개가능한 백업 동작을 허용하기 위해 복수의 추상화 레벨을 통해, 클라우드 스토리지(cloud storage)라고도 하는 네트워크 기반의 스토리지에 백업될 수 있다. 백업 소스들은 백업/복원 성능을 개선하고 및/또는 장치의 정상 동작에 미치는 충격을 최소화하기 위해 동적으로 구성될 수 있다. 한 실시예에서, 장치는 모바일 백업 서비스(MBS; mobile backup service)와 통신하여 MBS에 유지된 계층적 데이터에 기초하여 자원(또는 파일)들의 어느 부분들을 백업할지를 결정할 수 있다. 계층적 데이터는, 장치에 대한 소유자 계정, 소유자 계정과 연관된 각 장치 특유의 백업 단계(또는 표현), 및/또는 백업되는 각 파일을 기술하는 메타데이터(metadata)를 포함할 수 있다.
한 실시예에서, MBS는 (Mobile Me Chunk Service 또는 MMCS와 같은) 콘텐츠 서비스와 통신하여 파일들의 어느 실제 데이터 청크(data chunk)(또는 청크 데이터)가 백업을 위해 업로드되어야 하는지를 식별함으로써, 예를 들어, 클라우드 스토리지에서 데이터 청크의 중복된 사본을 피할 수 있다. MMCS는 파일들과 파일들의 데이터 청크들을 식별하는 한 세트의 청크 식별자들 간의 매핑을 추적할 수 있다. 한 실시예에서, MMCS는 백업을 위해 식별된 파일들의 콘텐츠를 청크 데이터의 컨테이터에 저장하도록 벤더 클라우드 스토리지를 동적으로 구성 또는 배열할 수 있다.
또 다른 실시예에서, 장치 내의 메타데이터는 자원(또는 파일)이 사용자 데이터(예를 들어, 사용자 생성된 데이터)를 나타내는지 구매된 자산이나 콘텐츠를 나타내는지를 추적하기 위해 유지될 수 있다. 구매된 자산의 실제 데이터는 백업될 필요 없이 가용 자산 스토어(store)(또는 사이트)로부터 다운로드되거나 복원될 수 있다. 팟캐스트(Podcasts)와 같은 소정의 자유로이 이용가능한 자산들은, 직접 그들의 실제 콘텐츠를 백업하고 복원하는 것 대신에 그들의 식별자를 백업함으로써 재-다운로드될 수 있다. 백업될 자원을 기술하는 메타데이터는 사용자에게 기회주의적으로 투명하게 백업을 위한 상이한 소스들의 자동 식별을 허용할 수 있다. 예를 들어, 구매된 자산으로서 자원을 백업하는 것은 구매된 자산의 콘텐츠를 푸시 업(push up)하는 대신에 기록해 두는 것(making a note)을 포함할 수 있다. 기록해 둔 구매된 자산을 복원하기 위해, 구매된 자산의 콘텐츠는 자산 스토어로부터 풀 다운(pull down)될 수 있다. 예를 들어, 자산 스토어는, 구매가능한 자산을 호스팅하고, 구매된 자산을 저장하며 및/또는 자유로이 이용가능한 자산(또는 콘텐츠)를 호스팅하는 네트워크 액세스 가능한 사이트일 수 있다.
선택사항으로서, 자원은 클라우드 스토리지, 로컬 컴퓨터, 자산 스토어 및/또는 기타의 적용가능한 자원과 같은 복수의 소스로부터 장치로 기회주의적으로 분할-복원될 수 있다. 예를 들어, 성능, 대역폭, 전력 소비 및/또는 기타의 적용가능한 고려사항에 기초하여, 어느 소스가 이용가능한지 및/또는 자원의 복원(또는 백업)에 가장 비용 효과적인지를 동적으로 식별하기 위해 장치 내의 자원들에 대해 미디어 자산의 유형을 나타내는 메타 데이터가 추적될 수 있다.
예를 들어, 장치는 복원될 자원에 대한 콘텐츠 데이터의 일부를 저장하는 (예를 들어, 유선 또는 무선 결합된) 로컬 컴퓨터로의 접속을 인지할 수 있다. 콘텐츠 데이터의 일부는 이미 접속된 컴퓨터로부터 풀(pull)될 수 있다. 후속해서, 로컬 컴퓨터로부터 이용가능하지 않은 자원들의 나머지가 식별되어 클라우드 스토리지 및/또는 스토어로부터 분할 복원될 수 있다. 그 결과, 음악, 애플리케이션 또는 기타의 미디어 파일과 같은 콘텐츠 데이터는 클라우드(또는 클라우드 스토리지)에 백업될 수 있지만, 여전히 장치에 대한 로컬 컴퓨터로부터 복원될 수 있다.
한 실시예에서, 파일 또는 자원이 백업을 위해, 예를 들어, 연관된 애플리케이션, 미디어 타입, 또는 기타의 확장 정보에 기초하여 선택될 수 있다. 자원은, 자원의 실제 콘텐츠를 백업할 필요 없이 스토어로부터 이용가능할 수 있는 스토어 자산(예를 들어, 자산 스토어로부터 이용가능한 구매된 자산)으로서 추적될 수 있다. 선택사항으로서, 또 다른 자원이, 스토어로부터 이용가능하지 않은 사용자 데이터로서 추적될 수 있고, 예를 들어, 클라우드 스토리지를 통해 백업 및 복원을 요구한다. 애플리케이션은, 스토어 자산으로서 애플리케이션 그 자체와 사용자 데이터로서 애플리케이션 데이터를 포함하는 자원과 연관될 수 있다. 따라서, 애플리케이션 및 연관된 애플리케이션 데이터가 상이한 소스들로부터 복원될 수 있다.
예를 들어, 클라우드 백업을 위한 장치 내의 선택된 자원들은 대응하는 애플리케이션 그 자체를 포함하지 않고 애플리케이션 데이터를 포함할 수 있다. 애플리케이션은 자산 스토어로부터 장치로 재-다운로드될 수 있고 애플리케이션 데이터는 클라우드 스토리지 및/또는 로컬 컴퓨터로부터 복원될 수 있다. 대안으로서, 애플리케이션은 클라우드 스토리지로부터 애플리케이션 데이터를 복원하기 위해 로컬 컴퓨터로부터 동기화될 수 있다. 애플리케이션과 애플리케이션 데이터를 별개로 복원하기 위한 백업 소스들의 다른 조합들도 가능할 수 있다. 일부 실시예에서, 애플리케이션 데이터는 그의 대응하는 애플리케이션이 (예를 들어, 사용자에 의해) 이용될 수 있기 이전에 복원될 수 있다. 애플리케이션은 적절한 순서를 생성하기 위해 (예를 들어, 클라우드 스토리지나 기타의 소스로부터) 애플리케이션 데이터의 복원을 개시하기에 앞서 다운로드되거나 동기화될 수 있다.
한 실시예에서, 백업으로부터 장치로 자원을 복원하는 것은, 자원들이 복원되고 있는 동안에 장치를 사용자에게 이용가능하고 응답하는 동작 상태로 유지하기 위해 복수의 단계에서 수행될 수 있다. 예를 들어, 장치는 장치의 이중 단계(dual-phase) 또는 2단계 복원을 위해 초기 모드 복원 세션(initial modal restore session)(예를 들어, 제1 모드)에 들어가고 이어서 백그라운드 복원 세션(예를 들어, 제2 모드)에 들어갈 수 있다. 장치는, 한 실시예에서, 장치가 초기 모드 복원 세션에서 사용자 입력에 응답하지 않는 방식으로 사용자에 의해 이용가능할 수 있다. 한 실시예에서, 초기 모드 세션은 코어 사용자 파일들을 복원하여 장치를 리부팅하기 위해 짧고 빠를 수 있다. 후속해서, 백그라운드 세션은, 개개의 애플리케이션이 백그라운드에서 장치로 복원되고 있는 동안 사용자가 장치를 이용하는 것을 허용할 수 있다. 장치는 백그라운드 복원 세션에서 적어도 사용자 입력 세트에 응답하도록 동작될 수 있다.
한 실시예에서, 2단계 복원의 모드 세션 동안에, 장치를 사용자 특유의 작동 상태로 만들기 위해 장치가 시스템 자원을 다운로드하는 동안에 장치는 잠시 이용가능하지 않을 수 있다. 예를 들어, 시스템 자원은, 모든 메타데이터 및 시스템 데이터, 계정 목록, 배경 무늬(wallpaper), SMS(short message service) 이력, 및/또는 기타의 적용가능한 사용자-특유의 비-애플리케이션 데이터를 포함할 수 있다. 시스템 데이터 + 메타데이터는, 예를 들어, 사용자의 전화기로서 거동하도록 장치를 구성할 수 있다. 장치는 모드 세션 이후에 리부팅되어 작동할 수 있다.
한 실시예에서, 2단계 복원의 백그라운드 세션 동안에, 장치는 (예를 들어, Apple Inc.의 iTunes® 애플리케이션을 실행하고 있는) 로컬 컴퓨터 및/또는 클라우드 스토리지로부터 데이터 또는 미디어 자산을 복원할 수 있다. 장치는 백그라운드 세션 동안에 메일을 동기화하고 및/또는 텍스트 메시지들을 수신할 수 있다. 한 실시예에서, 자원들은 사용 패턴에 의해 결정된 복원 순서에 따라 복원될 수 있다. 예를 들어, 애플리케이션 사용이 추적되어 시청된 쇼/영화, 구독된 서적, 또는 기타의 적용가능한 사용 통계를 포함하는 사용 패턴을 수집할 수 있다. 다른 실시예에서, 복원 순서는 자원(또는 콘텐츠)의 크기, 자원에 대응하는 아이콘이 장치의 디스플레이 상에 위치하는 곳(예를 들어, 사용자는 빈번하게 사용되는 아이콘들을 첫 페이지에 둘 수 있다), 또는 기타의 적용가능한 요인에 의존할 수 있다. 복원 순서는, 사용자 요청에 적응하여, 예를 들어 애플리케이션에 대한 우선순위를 표시하기 위한 디스플레이 상에서의 사용자 탭핑(tapping)을 통해 동적으로 업데이트된다.
또 다른 실시예에서, 장치가 이용가능하지만 모든 데이터가 복원되지는 않은 이중 단계(또는 분기된) 복원의 기간 동안에, UI(user interface) 요소들이 디스플레이되어 사용자 경험을 개선하고 애플리케이션들이 부정확하게 또는 예측불가능한 방식으로 동작하는 것을 방지한다. 예를 들어, 그 객체 파일(들)이나 사용자 데이터가 아직 복원되지 않은 애플리케이션 및/또는 (예를 들어, 음악, 비디오 또는 기타의 미디어 콘텐츠/자산을 재생하기 위한) 미디어 라이브러리를 나타내는 아이콘들은 회색으로 디스플레이되거나, 애플리케이션들이 아직 이용가능하지 않지만 이용가능하게 될 것이라는 것을 나타내기 위해 진행 막대(progress bar)를 포함할 수 있다. 사용자가 복원을 위해 우선순위화하고자 하는 애플리케이션, 또는 사진, 또는 음악, 또는 비디오의 아이콘을 탭핑하는 것을 허용함으로써 상호작용이 추가될 수 있다.
또 다른 실시예에서, 무선 장치에서, 전선 또는 유도성 패드를 통해 전력을 수신하는 방법 및 장치가 본원에 설명된다. 수신된 전력은 장치로부터 OTA(over the air) 무선 인터페이스를 통해 네트워크 내의 서버로 데이터를 백업하기 위해 모니터링된다. 데이터는 장치 상의 데이터를 백업하기 위해 서버로 전송된다. 데이터의 백업 동안에, 전력이 장치로부터 제거되었는지가 판정된다. 전력이 제거되었다는 판정에 응답하여, 자동으로, 그리고 사용자 요청 없이, 장치에서 데이터의 백업이 종료될 수 있다.
또 다른 실시예에서, 장치에 대한 외부 전원의 상태가 모니터링 된다. 그 상태는 외부 전원이 이용가능한지를 나타낼 수 있다. 일 실시예에서, 복수의 백업 동작을 통해 장치로부터 무선 인터페이스를 통해 네트워크 내의 서버로 데이터를 백업하여 데이터가 서버로 전송된다. 백업 동작들 중 적어도 하나의 남아 있는 백업 동작이 수행되지 않았을 때 모니터링된 상태에 따라 외부 전원이 이용가능한지가 검출될 수 있다. 외부 전원이 이용가능하지 않다는 검출에 응답하여, 자동으로 그리고 사용자 요청 없이, 장치에서의 데이터의 백업이 종료될 수 있다. 남아 있는 동작들은 수행되지 않을 것이다.
본 발명의 다른 특징들은 첨부된 도면들 및 이하의 상세한 설명으로부터 명백할 것이다.
본 발명이, 유사한 참조부호는 유사한 요소들을 가리키는 첨부된 도면들에서 제한이 아닌 예로서 설명되며, 도면들에서:
도 1은 복수-단계 복수-소스 백업 및 복원을 위한 네트워크 시스템의 한 실시예를 나타내는 블록도이다;
도 2는 복수-단계 복수-소스 백업 및 복원을 위한 예시적 시스템을 나타내는 블록도이다;
도 3은 복수 소스를 이용하여 복수 단계로 백업 및 복원을 관리하기 위한 예시적 시스템을 나타내는 블록도이다;
도 4는 장치에 대한 증분적 백업 동작을 수행하는 프로세스의 한 실시예를 나타내는 흐름도이다;
도 5는 장치에서 증분적 복원 동작을 수행하는 프로세스의 한 실시예를 나타내는 흐름도이다;
도 6은 장치를 복원하기 위해 자원들을 동적으로 우선순위화하는 프로세스의 한 실시예를 나타내는 흐름도이다;
도 7은 백업 및/또는 복원 동작을 위해 장치의 전원을 모니터링하는 예시적 시스템을 나타내는 블록도이다;
도 8은 전력을 절약하기 위해 장치에 대한 백업 및/또는 복원 동작을 중단하는 프로세스의 한 실시예를 나타내는 흐름도이다;
도 9는 여기서 설명된 실시예들과 함께 이용될 수 있는 데이터 처리 시스템의 한 예를 도시한다;
도 10은 여기서 설명된 실시예들과 연계하여 이용될 수 있는 전형적인 컴퓨터 시스템의 예를 나타낸다.
하나 이상의 소스를 이용하여 복수 단계에서 장치들에 대한 파일을 백업 및 복원하기 위한 방법 및 장치가 여기서 설명된다. 이하의 설명에서, 본 발명의 실시예들의 철저한 이해를 제공하기 위하여 많은 구체적인 세부사항이 개시된다. 그러나, 본 발명의 실시예들은 이들 구체적인 세부사항 없이도 실시될 수 있다는 것은 당업자에게 명백할 것이다. 다른 예에서, 공지된 컴포넌트, 구조, 및 기술은 본 설명의 이해를 흐리게 하지 않기 위하여 상세히 도시되지 않았다.
본 명세서에서 "하나의 실시예" 또는 "실시예'라는 언급은, 그 실시예와 관련하여 기술되는 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있다는 것을 의미한다. 명세서의 다양한 곳에서의 문구 "한 실시예에서"의 등장은 반드시 모두가 동일한 실시예를 지칭하는 것은 아니다.
후속하는 도면들에 도시된 프로세스들은, 하드웨어(예를 들어, 회로, 전용 로직 등), (범용 컴퓨터 시스템이나 전용 머신에서 실행되는) 소프트웨어, 또는 이들의 조합을 포함하는 처리 로직에 의해 수행된다. 프로세스들이 이하에서 몇몇 순차적 동작들의 관점에서 설명되지만, 동작들 중 일부는 상이한 순서로 수행될 수 있다는 점을 이해하여야 한다. 게다가, 일부 동작들은 순차적이 아니라 병렬로 수행될 수도 있다.
한 실시예에서, 장치로부터의 데이터나 자원을 백업하기 위해 복수의 소스들이 이용가능할 수 있다. 예를 들어, Amazon, S3, Microsoft 등과 같은 제3자 벤더를 통해 클라우드(또는 클라우드 스토리지, 클라우드 서비스)에서 일반 데이터 백업 서비스가 제공될 수 있다. 노래, 영화, 및/또는 애플리케이션 등과 같은 구매된 자산은 클라우드 내의 iTunes® 스토어로부터 다운로드될 수 있다. iTunes®와 같은 백업 서비스 소프트웨어를 실행하는 사용자 컴퓨터(들)은, Apple Inc.의 iOS® 장치, iPhone® 또는 iPad® 장치와 같은 장치를 백업하는 데 이용될 수 있다.
장치로부터 백업될 자원들은, 예를 들어, 설정, 계정 데이터, 애플리케이션 데이터, 사진, 미디어 파일, 구매된 자산 및/또는 기타의 데이터 파일들을 포함한 백업 데이터일 수 있다. 한 실시예에서, 백업 데이터는 장치 내의 기존의 자원들로부터 동적으로 식별될 수 있다. 사용자 컴퓨터(예를 들어, 데스크탑 컴퓨터 또는 노트북 컴퓨터)는 장치에 대한 백업 데이터를 저장할 수 있다. 선택사항으로서 또는 대안으로서, 장치에 대한 백업 데이터의 서브세트가 클라우드 백업을 통해 및/또는 백업 데이터 내의 구매된 자산에 대한 iTunes® 스토어와 같은 스토어를 통해 클라우드에 저장될 수 있다.
한 실시예에서, 예를 들어, 클라우드 내의 MBS 서버에 의해 유지되는 계정은, 그 계정에 대한 상이한 장치들에 대응하여 별개로 복수의 백업을 포함하는 계층구조적 데이터(또는 백업 구조)로 표현될 수 있다. 계층구조적 데이터는 다수의 상이한 장치들에 대한 백업 세트를 포함하는 계정을 포함할 수 있다. 백업은 장치 상의 파일들의 스냅샷 세트를 포함할 수 있다. 장치당 하나의 백업이 지원될 수 있다.
스냅샷은 한 시점에서의 장치의 상태를 나타낼 수 있다. 그 시점에서의 장치의 상태를 재건하기 위해 백업 내의 임의의 스냅샷으로부터 복원이 이루어질 수 있다. 스냅샷은 소정 숫자(예를 들어, 1)로부터 순차적으로 넘버링될 수 있고, 이들 숫자들은 서버에 의해 할당될 수 있다. 첫 번째 스냅샷은 장치의 완전한 백업이고 후속하는 스냅샷들은 이전 스냅샷에 기초한 델타(delta)들일 수 있다. 증분적 스냅샷들은, 이전 스냅샷 이후의 장치 상의 모든 추가된, 수정된, 및 삭제된 파일들을 포함할 수 있다.
스냅샷은 일단 그 콘텐츠가 업로드되고 나면 명시적으로 커밋될 수 있다. 한 번에 하나의 언커밋 스냅샷(uncommitted snapshot)이 존재할 수 있고, 언커밋 스냅샷은 가장 큰 수를 갖는 마지막 스냅샷일 수 있다. 일단 스냅샷이 커밋되고 나면, 그 콘텐츠는 완전히 삭제하는 것을 제외하고는 수정되지 않을 수 있다.
스냅샷이 삭제될 때, 그 콘텐츠는 언커밋되지 않는 한 이전의 스냅샷 내에 병합될 수 있다. 그 결과, 복원이 여전히 임의의 후속 스냅샷으로부터 이루어질 수 있다. 타겟 스냅샷 내의 추가된/수정된/삭제된 파일들은 유지될 수 있다(예를 들어, 소실되지 않을 것이다). 언커밋 스냅샷을 삭제하는 것은 병합을 야기하지 않을 수 있으며, 대신에 그 콘텐츠는 단순히 폐기될 수 있다. 저장된 스냅샷들의 시퀀스로부터 두 번째 스냅샷을 삭제하고 파일들을 스냅샷들의 시퀀스의 첫 번째 스냅샷 내에 병합할 때, 삭제된 파일들은 첫 번째 스냅샷이 완료될 때 유지되지 않을 수 있다. 첫 번째 스냅샷은 스냅샷들의 시퀀스에서 유일한 스냅샷이 아닌 한 삭제되지 않을 수 있다.
각 백업은, 예를 들어, 구성된 스케줄(예를 들어, 매시간, 매일, 매주 등)에 따라 대응하는 장치로부터 취해진 스냅샷을 포함할 수 있다. 각 스냅샷은 파일들 또는 자원들의 목록의 설명을 포함할 수 있다. 각 파일은 클라우드 서비스(들)가 저장할 (예를 들어, 소정 비트 크기의) 실제 데이터의 청크들로 쪼개질 수 있다(즉 파일 청킹(file chunking)). 대안으로서, 파일 청킹은, 예를 들어, 참조에 의해 그 전체가 본 명세서에 포함되는 2011년 1월 14일 출원된 Dominic Giampaolo에 의한 발명의 명칭이 "Content Based File Chunking"인 가출원 제61/433,152호에 설명된, 데이터 아이템들을 청크들로 분할하는 기술에 기초할 수 있다.
통상적으로, 복수의 청크들이, 예를 들어, 제3자 벤더에 의해 제공되는 클라우드 서비스를 위한 스토리지 단위로서 하나의 컨테이너로서 집성될 수 있다. 요청에 따라 백업이 생성되거나, 업데이트되거나, 삭제되거나, 디스에이블되거나 운용될 수 있다. 예를 들어, 주어진 영역의 파일들이 백업으로부터 제거될 수 있다. 클라우드 스토리지는 클라우드 스토리지에 저장된 데이터의 청크들에 대응하는 원래의 파일들을 재생성하기에 충분한 정보를 저장하지 않는다. 따라서, 파일들은 데이터 청킹을 통해 본질적으로 보호된다. 데이터의 청크들의 암호화는 클라우드 스토리지에 저장된 데이터에 대한 추가의 보호 레벨을 제공할 수 있다.
한 실시예에서, IOS 장치와 같은 장치는, 이 장치의 자원들로부터 백업 데이터를 식별하기 위해 클라우드 내의 (예를 들어, MBS 서버에서 호스팅되는) 백업 서비스로 백업 동작을 개시할 수 있다. 장치의 백업 상태를 기술하는 메타데이터는, 예를 들어, 장치에 대응하는 백업 구조를 통해, 백업 서비스에 유지될 수 있다. 백업 상태는, 장치에 대해 이미 백업된 자원들의 가장 최근의 스냅샷 또는 가장 최근의 일련의 스냅샷을 포함할 수 있다. 한 실시예에서, 메타데이터는 장치의 백업 데이터에 대해 제3자 벤더(들)을 통해 클라우드 서비스에 저장된 데이터 청크를 참조할 수 있다.
백업 동작을 위해 장치에서 식별된 백업 데이터 또는 파일들은 클라우드 스토리지를 위해 준비된 실제의 데이터 비트들의 청크들로 분할될 수 있다. 한 실시예에서, 장치의 서비스 프레임워크 내의 MMCS 코드는 클라우드의 MMCS 서버와 통신하여 식별된 파일들에 대해 백업할 데이터의 청크들을 준비할 수 있다. 예를 들어, 백업 데이터는 소정의 청크 구성(예를 들어, 각 청크에 대해 특정한 크기의 데이터 비트)에 따라 복수의 데이터 청크들로 분할될 수 있다.
서비스 프레임워크는, 백업을 위해 식별된 파일들로부터 준비된 복수의 데이터 청크들 중 어느 것이 클라우드에서 현재 이용가능하지 않고 업로드될 필요가 있는지를 결정할 수 있다. 일부 실시예에서, (예를 들어, MMCS 코드를 통해) 서비스 프레임워크는, 식별된 청크가 클라우드에서 이미 백업되었는지를 판정하기 위해 MMCS 서버(또는 서비스)에 대한 식별자로서, 예를 들어, SHA 해싱 알고리즘이나 기타의 적용가능한 알고리즘을 이용하여, 서명 내로 각 청크를 해싱할 수도 있다.
한 실시예에서, 파일들은 MMCS 내로 참조될 수 있다. 장치는 임의의 식별자를 파일들에 할당할 수 있다. 장치는 파일들을 다시 참조하기 위해 식별자들을 이용할 수 있다. 참조는 MMCS 내에 (예를 들어, 서버에 의해) 주기적으로 크롤링(crawl)되어 파일들의 비참조된 데이터 청크들(또는 파일 청크들)을 가비지 수집할 수 있다.
장치에 대한 백업 동작은, 클라우드 내의 복수의 서비스들과 조율하기 위해, 셋업 단계, 스캔 단계, 백업 단계, 및/또는 기타의 적용가능한 단계와 같은, 복수의 단계들로 수행될 수 있다. 각 단계는 동작들의 별개의 추상층에 대응함으로써 기회주의적으로 클라우드 스토리지의 동적 구성을 허용하여 백업 동작의 효율성을 증가시키고 및/또는 성능을 개선할 수 있다.
예를 들어, 셋업 단계 동안에, MBS 서비스에서 장치에 대해 백업(또는 백업 구조)가 존재하는지가 결정될 수 있다. MBS 서비스는, MBS 서비스에서 장치에 대해 어떠한 백업도 존재하지 않는다면 장치에 대해 초기 메타데이터로 백업을 생성할 것을 요청받을 수 있다. 한 실시예에서, 장치는 MBS 서비스에서 장치에 대응하는 백업의 사본을 반영하는 백업 캐시를 포함할 수 있다. 백업 캐시는 장치에 대해 이전에 취해진 하나 이상의 스냅샷을 포함할 수 있다.
한 실시예에서, 백업 캐시는 필요하다면(예를 들어, 백업 캐시 내에 캐싱된 스냅샷들이 MBS 서비스와의 통신에서 전달된 메시지들에 따라 구식이 되었을 때) MBS 서비스와 동기화하기 위해 (예를 들어, MBS 서비스를 참고함으로써) 재구축될 수 있다. 선택사항으로서 또는 추가적으로, 언커밋 스냅샷이 장치에 존재하는지 여부가 셋업 단계 동안에 결정될 수 있다. 언커밋 스냅샷은 MBS 서비스에 저장된 기존의 스냅샷들에 대응하지 않을 수도 있고 아직 백업되지 않은 자원들의 설명을 포함할 수도 있다. 언커밋 스냅샷은 셋업 단계 동안에 생성될 수도 있다.
한 실시예에서, 장치는, 예를 들어, 백업 캐시가 반드시 최신이 되도록 하는 일의 일부로서, MBS 서비스에 질의하여 언커밋 스냅샷이 존재하는지를 판정할 수 있다. 장치는 백업 동작 동안에 그의 파일 시스템을 스캔한 후에 언커밋 스냅샷을 생성할 수 있다. 백업 캐시는, 성공적으로 백업된 내용을 예를 들어 MBS 및 MMCS 서비스에 반영하기 위해 증분적으로 업데이트될 수 있다.
스캔 단계 동안에, 새로운 파일, 삭제된 파일, 수정된 파일 등과 같은, 파일들이나 자원들에서의 변경을 발견하기 위해 장치의 파일 시스템이 스캔될 수 있다. 한 실시예에서, 변경은, 스캔된 파일들과 백업 캐시 내에 저장된 스냅샷들 간의 비교를 통해 식별될 수 있다. 어느 파일들이 이미 백업되었고 어느 파일들이 백업될 필요가 있는지가 스캔 단계 동안에 추적될 수 있다.
백업 단계에서, 실제의 파일 백업 동작들이 수행될 수 있다. 예를 들어, 필요하다면(예를 들어, 어떠한 언커밋 스냅샷도 이용가능하지 않을 때) 스냅샷이 생성될 수 있다. MBS 서비스에서 새로운 파일들, 수정된 파일들 및/또는 삭제된 파일들의 엔트리들을 생성하기 위해 MBS 서비스에 요청이 전송될 수 있다. 할당량 인증 또는 클라우드 스토리지에 액세스할 수 있는 권리가 MBS 서비스로부터 수신되어 MMCS 서비스에 백업 요청을 보내는 것을 허용할 수 있다. 백업 요청은 백업할 파일들의 변경이나 파일들을 기술하는 메타데이터를 포함할 수 있다.
요청된 백업이 장치에 대해 MMCS에 의해 부과된 백업 스토리지 크기의 한도 내임을 나타내기 위해 MBS 서비스로부터 인증 토큰이 수신될 수 있다. 장치로부터 스토리지 벤더로의 인증된 HTTP(Hypertext Transfer Protocol) 요청 세트에 대해 인증 토큰이 MMCS 서비스에 전송될 수 있다. MMCS 서비스는 장치에 대한 인증 키를 회수하기 위해 스토리지 벤더(또는 클라우드 서비스)와 상호 작용할 수 있다. 파일들의 변경(예를 들어, 추가/삭제/제거)이 인증 키와 함께 클라우드 서비스에 업로드될 수 있다. 성공적인 업로드의 확인이 클라우드 서비스로부터 수신되면, 장치와 MBS 서비스 사이에서 업로드에 대응하는 스냅샷이 커밋될 수 있다. 스냅샷은, 일단 생성되고 그 콘텐츠가 정의된 다음 MMCS 업로드되고 나면, 커밋될 수 있다.
한 실시예에서, MBS 서비스는 파일 레벨에서 파일들을 기술하는 메타데이터에 기초할 수 있다. MMCS 서비스는 파일들의 실제의 콘텐츠나 데이터(예를 들어, 데이터의 청크)에 의존할 수 있다. 파일들의 실제 콘텐츠로부터 생성된 해시 서명은 MMCS 서비스에서 콘텐츠에 대한 식별자로서 이용될 수 있다. MMCS 서비스는, 식별자에 의해 식별된 콘텐츠의 일부가 예를 들어 클라우드 스토리지에서 신규한(또는 아직 백업되지 않은) 것인지를 판정할 수 있다. MBS 서비스는, 파일이나 파일들이 신규한 것인지 또는 그 파일이나 파일들과 연관된 메타데이터에 따라 업데이트되었는지를 결정할 수 있다.
소정 실시예에서, MBS 서비스와 같은 백업 서비스는 장치에 대한 하나 이상의 백업을 유지할 수 있다. 백업은, 백업된 데이터나 파일이 무엇인지, 백업된 데이터를 어떻게 추적할지, 대응하는 장치의 신원, (예를 들어, 백업 날짜, 증분적 백업 관계 등에 기초하여) 상이한 백업이 어떻게 관련되어 있는지, 및/또는 기타의 정보를 기술하는 시멘틱스(semantics)를 포함할 수 있다. 한 실시예에서, 백업은 하나의 계정 하에서 하나의 장치와 연관될 수 있다. 각 계정은 복수의 장치를 포함할 수 있다. 백업은 장치의 복수의 스냅샷을 포함할 수 있다. 예를 들어, 장치의 자원들에 대해 매일 스냅샷들이 취해질 수 있다. 각 스냅샷은 백업 내의 이전 스냅샷으로부터 장치 내의 변경된 파일들을 기술할 수 있다.
한 실시예에서, 장치의 자원들은, MBS 서비스, MMCS 서비스, 클라우드 벤더(또는 스토리지) 및/또는 기타의 적용가능한 서비스들과 장치 사이에서 파일들 및/또는 파일들의 메타데이터를 전송하기 위해 복수 방향 핸드웨이크에 기초하여 백업될 수 있다. MBS 서비스는 MMCS 서비스의 참조를 추적할 수 있다. MMCS 서비스는, 예를 들어, 장치가 파일들을 벤더들에 의해 명시된 구조화된 데이터에 동적으로 매핑하는 것을 허용하기 위해, 클라우드 벤더들의 참조를 추적할 수 있다.
실시예의 한 사례에서, MMCS 서비스는, 특정 클라우드 벤더에 따라, 장치 내의 파일을 아이템으로서 식별하고, 장치에게 그 아이템을 데이터의 청크들로 분할할 것을 지시하고, 데이터의 각 청크에 대해 고유 식별자를 생성하고, 장치가 데이터의 식별된 청크를 백업을 위해 클라우드 벤더들에게 포워딩할 필요가 있는지를 장치에게 통보할 수 있다. 장치는 장치에 대해 취해진 스냅샷에 정보를 두거나 및/또는 스냅샷을 장치와 일치되게 하기 위하여 MBS에게 지시하거나 MBS와 통신할 수 있다.
따라서, 복수의 서비스들은, 층들 중 하나 내의 동작들이 다른 층들에 영향을 미치지 못하도록 장치의 자원들을 백업하기 위한 간접의 층들을 제공할 수 있다. MBS 서비스는 백업할 자원들의 메타데이터를 추적하고, 어느 파일들(또는 아이템들)이 백업할 필요 없이 이미 존재하는지를 결정할 수 있다. MMCS 서비스는 클라우드 스토리지의 어느 벤더가 실제의 백업 데이터를 저장할지를 추적하고, 장치가 백업 데이터를 클라우드 스토리지에 업로드할 수 있도록 티겟(또는 인증서)을 생성하기 위해 클라우드 스토리지의 사용 권한을 관리하며, 및/또는 백업에 대해 더 이상 참조되지 않는 데이터의 청크들을 나타내는 구조를 삭제하기 위해 가비지 수집을 수행하는 것을 책임질 수 있다. MBS 서비스는 MMCS 서비스에 의해 관리되는 클라우드 스토리지로부터 격리될 수 있다(클라우드 스토리지를 알지 못할 수 있다).
한 실시예에서, 백업 동작을 위해 생성된 스냅샷은, 스냅샷이 그 백업 동작이 성공적으로 완료된 이후에 커밋되기 이전에 일관된 것으로 마킹되지 않을 수 있다. (예를 들어, 3일 동안의 매일의 스냅샷에 대응하는) 고정된(또는 구성된) 개수의 가장 최근의 스냅샷들이 장치에 캐싱되거나 MBS 서비스에 저장될 수 있다. 스냅샷의 개수는 스토리지 공간을 절약하도록 제한될 수 있다. 통상적으로, 저장된 스냅샷들 중 첫 번째(또는 가장 이른) 것은 대응하는 백업 동작에 대해 장치의 각 자원을 기술하는 전체 스냅샷(full snapshot)일 수 있다. 스냅샷들 중 나머지는 스냅샷들 중 이전의 스냅샷에 관한 자원들의 후속 변경을 기술하는 증분적 스냅샷일 수 있다.
백업 동작의 마지막 단계 동안에, 한 실시예에서, 스냅샷들은 병합되어 와해될 수 있는데, 예를 들어, 가장 이른 2개 이상의 기존의 스냅샷들이 하나의 전체 스냅샷으로 병합될 수 있다. 그 결과, 저장된 스냅샷들의 총 개수는 새로운 스냅샷이 커밋될 때 고정된 개수로서 유지될 수 있다. 일부 실시예에서, MBS 서비스는 하나의 원자적 데이터베이스 동작(atomic database operation)으로서 기존의 스냅샷들을 삭제 및/또는 병합할 것으로 통보(또는 지시)받을 수 있다. 응답하여, MBS 서비스로부터 수신확인(acknowledgement)이 수신되어 그 원자적 동작이 성공적인지의 여부를 나타낼 수 있다.
소정 실시예에서, 재-다운로드에 이용가능하지 않을 수 있는 자원(예를 들어, 애플리케이션, 구매된 자산이나 기타의 자산) 목록을 식별하기 위해 iTunes® 스토어와 같은 백업 소스가 질의될 수 있다. 예를 들어, 백업 소스는, 장치가 콘텐츠 백업 동작을 수행하기 전에 (예를 들어, 장치로부터의 요청에 기초하여) 장치와 연관된 구매된 자산들 중 어느 것이 재-다운로드에 이용가능하지 않은지를 판정할 수 있다. 백업 소스로부터의 재-다운로드에 이용가능하지 않은 자원들의 목록의 실제 콘텐츠는, MBS, MMCS 등과 같은 백업 서비스들을 통해 아카이브 또는 백업될 수 있다.
한 실시예에서, 장치와 MBS 서비스 사이의 통신은 백업(예를 들어, 생성/삭제)과 스냅샷(예를 들어, 생성/삭제/병합/업데이트)을 관리하기 위한 클라이언트 서버 프로토콜을 제공한다. 스냅샷을 업데이트하는 것은, 스냅샷에 대한 모든 변경이 병합(또는 커밋)되거나 스냅샷이 전혀 업데이트되지 않는 원자적 방식으로 수행될 수 있다.
일부 실시예에서, MBS 서비스를 통해 스냅샷을 관리하기 위한 프로토콜은 효율적이고 가벼운 네트워크 통신을 위해 파일이나 자원의 메타데이터에 기초할 수 있다. 메타데이터는, 파일명, 파일에 대한 참조, 크기, 타임 스탬프, 소유권, 보호 설정, 또는 파일의 실제 콘텐츠를 기술하지 않고 파일과 연관된 다른 적용가능한 데이터와 같은, 장치 내의 파일들에 대한 정보를 기술할 수 있다. 어느 파일들 또는 자산들이 백업 동작에 포함될 필요가 있는지는 메타데이터 디스크립션(description)에 기초하여 결정될 수 있다. 별개의 스냅샷들 사이의 델타 또는 차이점이 메타데이터 디스크립션의 관점에서 추적될 수 있다.
예를 들어, 장치는 마지막으로 수정된 시간 값을 이용하여 캐시를 유지할 수 있다. 요청과 응답은, 액세스, 삭제, 업데이트, 수정, 또는 자원에 관한 기타의 동작을 수행하기 위한 마지막으로 수정된 시간 값을 포함할 수 있다. 한 실시예에서, 자원에 관한 요청 결과, 그 자원의 부모 자원들의 마지막으로 수정된 시간 값이 업데이트된다. 예를 들어, 계정의 백업을 삭제하는 것은 그 계정의 마지막으로 수정된 시간 값을 업데이트할 수 있다. 스냅샷에 파일을 추가하는 것은 그 스냅샷의 부모 백업 및 계정뿐만 아니라 그 스냅샷의 마지막 수정된 시간 값을 업데이트할 수 있다.
스냅샷 관리 요청은, 새로운 비어 있는 언커밋 스냅샷의 생성, 이전에 생성된 스냅샷의 업데이트, 스냅샷의 삭제 및/또는 스냅샷의 커밋을 허용할 수 있다. 응답은, 요청된 스냅샷을 위한 예약 공간이 연관된 계정의 할당량을 초과한다면 불충분한 스토리지를 나타낼 수 있다. 요청은 장치명 및 버전 번호와 같은 스냅샷의 속성을 포함할 수 있다.
또 다른 실시예에서, 파일들의 속성과 함께 파일의 목록이 요청을 통해 스냅샷으로부터 회수될 수 있다. MMCS로부터 파일들의 스트림을 다운로드하기 위해 MMCS 인증 토큰이 요청될 수 있다. 스냅샷에 대한 파일들의 관리에 대한 요청은, 예를 들어, 생성, 삭제, 업데이트, 마킹, 또는 기타의 적용가능한 동작을 포함할 수 있다. 응답은, 스냅샷 내의 파일들의 크기가 예약된 공간을 초과한다면 충돌을 표시할 수 있다. 일부 실시예에서, 스냅샷으로부터 파일을 삭제하는 것은, 서버에 의해 저장된 기저 데이터베이스 레코드를 삭제할 수 있고, 삭제된 파일은 스냅샷에 대한 파일들의 목록에서 더 이상 나타나지 않을 수 있다. 대안으로서, 파일을 삭제된 것으로 마킹하는 것은, 그 파일이 이전의 스냅샷에는 존재한지만 장치에는 더 이상 존재하지 않는다는 것을 나타낼 수 있다.
장치 내의 파일들의 메타데이터는, 예를 들어, MBS 서비스를 통해, 파일들 중 어느 것을 백업할지 및/또는 백업 동작에 대해 스냅샷을 생성할지를 결정하기 위해, 하나의 추상화 레벨에 대응할 수 있다. 실제 파일 콘텐츠의 해시(예를 들어, 비트별 해시 청크)는, 예를 들어, MMCS 서비스를 통해, 백업 파일들의 어느 콘텐츠가 업로드될 필요가 있는지를 식별하기 위해 또 다른 추상화 레벨을 제공할 수 있다. 한 실시예에서, 동일한 콘텐츠의 별개의 파일들이 상이한 메타데이터 디스크립션들과 연관될 수 있다. 따라서, 콘텐츠 해시 또는 청크 서명에 기초한 비교는, 동일한 콘텐츠를 갖지만 상이한 메타데이터를 갖는 파일들에 대해 (예를 들어, 클라우드로부터의) 백업 스토리지의 공유를 허용할 수 있다.
백업 동작들은 재개되거나 및/또는 스위칭될 수 있다. 예를 들어, 백업 동작은 네트워크 접속을 잃게 되면 중단될 수 있다. 백업 동작은 네트워크 접속이 재확립되면 재개될 수 있다. 한 실시예에서, 재개된 백업 동작에 대해 어느 파일들을 백업할 것인지는, (예를 들어, MMCS 서비스를 통해) 파일 콘텐츠로부터 생성된 서명에 기초할 수 있다. 파일 시스템 내의 파일들이 백업 동작이 중단되기 이전에 변경되면, 파일 시스템은 백업 동작의 재개(또는 스위칭) 이전에 다시 스캔될 수 있다. 일부 실시예에서, 최적화를 위해, 파일이 변경되었는지를 결정하기 위해 MMCS 서비스를 조회하기 이전에 파일 시스템을 스캐닝하는 동안에 파일의 수정 시간 스탬프(또는 값)이 백업 캐시 내의 대응하는 타임 스탬프와 비교될 수 있다.
장치와 소스 또는 호스트 사이의 백업/복원 동작은, 장치 상의 장치 앵커(device anchor) 및 호스트 상의 호스트 앵커(host anchor)와 같은, 동기 앵커(sync anchor) 기술들에 기초하여 중단(또는 종료) 및 재개될 수 있다. 동기 앵커 기술들의 예가, 참조에 의해 그 전체가 본 명세서에 포함되는, Gordon J. Freedman에 의한 발명의 명칭이 "Synchronization Methods and Systems"인 미국 특허 제7,807,403호에 설명되어 있다.
한 실시예에서, 자원은 동적으로 구성된 복수의 소스들로부터 장치로 분할 복원될 수 있다. 예를 들어, 애플리케이션, 음악, 영상, 동영상, TV-쇼 또는 기타의 미디어 데이터와 같은 구매된 자산은 요청시에 클라우드 내의 하나 이상의 스토어로부터 장치로 다운로드될 수 있다. 구매된 자산은 (예를 들어, 장치의 사용자에 의해 소유된) 로컬 컴퓨터에 저장되어 장치로의 복원에 준비될 수 있다.
한 실시예에서, 장치가 로컬 컴퓨터의 가까운 범위 내에서 이동할 때 클라우드(예를 들어, 스토어)로부터 구매된 자산을 복원하고 있는 동안, 장치와 로컬 컴퓨터 사이에서 접속(예를 들어, 유선 또는 무선 접속)이 확립될 수 있다. 로컬 컴퓨터에서 구매된 자산의 이용가능성과 접속의 검출시에, 장치는 (예를 들어, 로컬 컴퓨터에서 호스팅된 iTunes® 소프트웨어를 통해) 구매된 자산에 대한 복원 소스를 클라우드로부터 로컬 컴퓨터로 동적으로 스위칭하여 구매된 자산의 나머지 부분의 복원을 완료할 수 있다. 그 결과, 네트워크 접속 비용이 줄어들 수 있고 복원 성능이 높아질 수 있다.
일부 실시예에서, 스토어, 로컬 컴퓨터 또는 클라우드 스토리지와 같은 복수 소스들로부터의 장치의 자원들의 이용가능성은 자원들의 메타데이터에 기초하여 추적될 수 있다. 특정한 자원이 이미 스토어나 로컬 컴퓨터에 존재한다면, 그 특정한 자원은 그 특정한 소스의 실제 콘텐츠를 백업할 필요 없이 기존 소스로부터 장치로 복원될 수 있다. 예를 들어, 자원의 메타데이터는 장치와 연관된 계정에 대한 구매한 자원의 소유권을 표시할 수 있다. 구매한 자원은 클라우드로부터의 스토어 및/또는 로컬 컴퓨터와 같은 가용 소스들로부터 용이하게 이용가능할 수 있다. 그 결과, 구매한 자원은 백업할 필요 없이 가용 소스들로부터 리로드(reload)될 수 있다.
한 실시예에서, 설정, 계정 데이터, 애플리케이션 데이터, 및/또는 구매된 자산과 같은 장치 내의 자원들은 로컬 컴퓨터에 백업될 수 있다. 설정 및/또는 애플리케이션 데이터와 같은, 자원들의 일부도 역시 클라우드 스토리지에 백업될 수 있다. 구매된 자산과 같은, 자원들의 소정 부분은 클라우드의 스토어들에서 유지되고 이용가능할 수 있다. 자원은 이용가능할 시 로컬 컴퓨터로부터 복원되고, 로컬 컴퓨터가 장치에 접속되어 있지 않거나 자원이 로컬 컴퓨터에 위치할 수 없을 경우에는 클라우드 스토리지 및/또는 스토어로부터 복원될 수 있다. 전자메일, 캘린더 또는 기타의 적용가능한 자원과 같은 중앙 서비스와의 동기 동작을 통해 동기화될 수 있는 소정 자산들은 백업 동작에 의해 백업되지 못할 수도 있다.
소정 실시예에서, MBS 서비스와 같은 메타데이터 서비스들은 백업 동작을 위해 장치에게 인증 토큰을 제공할 때 장치 내의 어느 자원이 백업에 허용될지를 선택할 수 있다. 예를 들어, 소정의 제3자 애플리케이션 및/또는 데이터는 필터링되어 백업이 허용되지 않을 수도 있다. 한 실시예에서, 백업으로부터 필터링된 데이터는, 캐싱된 데이터나 재생성될 수 있는 인덱스와 같이 제3자 애플리케이션에 의해 백업될 필요가 없는 것으로 선언된 디렉토리나 문서를 포함할 수 있다. 대안으로서, 백업할 자원들은, 장치의 연관된 계정에 대해 부과된 백업 데이터의 총 크기에 대한 할당량 제한에 따라 식별될 수 있다.
한 실시예에서, 모든 자원이 장치에 대해 복원되었는지(또는 복원 동작이 완료되었는지)는 복수의 소스들(예를 들어, 클라우드 스토어, 로컬 컴퓨터, 스토어 등)에 대비하여 추적될 수 있고, 여기서 상이한 자원들이나 소정 자원의 상이한 부분들이 이들 복수의 소스들로부터 복원될 수 있다. 예를 들어, 장치와 통신 중인 로컬 컴퓨터에서 실행 중인 iTunes®은 로컬 컴퓨터가 아니라 클라우드에 저장된 특정 자원이 장치에 다시 복원되지 않았다고 결정할 수 있다. 그 특정 자원은 복원 동작을 완료하기 위해 장치에 대해 로컬 컴퓨터를 통해 회수될 수 있다.
예로서, 사용자와 연관된 계정에 대해 활성화된, 새로운 전화기와 같은 새로운 장치는 그 계정의 클라우드 백업으로부터 복원될 수 있다. 장치는, 계정과 장치를 식별하는 식별자를 이용하여 MBS 서비스와 같은 백업 서비스와의 복원 동작을 개시할 수 있다. 따라서, 복원할 자원들의 디스크립션은 예를 들어 MBS 서비스를 이용하여 결정될 수 있다. 결정된 자원들을 복원하기 위해 클라우드 스토리지가 위치파악(예를 들어, 구성을 통해, 동적으로 발견되거나, 접속된 서비스로부터 얻어짐)될 수 있다. 대안으로서, iTunes®과 같은 대응하는 백업 서비스 애플리케이션을 실행하는 로컬 컴퓨터가 (예를 들어, 장치의 접속 범위 내에서) 이용가능한 것으로 발견되면, 자원들은 원격 클라우드 컴퓨터에 액세스할 필요 없이 로컬 컴퓨터로부터 회수될 수 있다.
장치의 복원 동작은, 예를 들어, 모드 복원 단계에 이은 백그라운드 복원 단계를 포함한, 복수의 단계들로 수행될 수 있다. 설정 또는 메타데이터와 같은, 필수 파일이나 정보는 먼저 모드 복원 단계 동안에 원자적으로(atomically) 복원되어 (예를 들어, 모든 필수 파일들이 복원되거나 아무것도 복원되지 않음) 장치가 동작 상태로 부팅하고 복원 동작의 나머지를 완료하기 위해 기다릴 필요 없이 사용자에게 신속하게 이용가능하게 되는 것을 허용한다. 모드 복원 단계 동안에, 장치는 시스템 파일들을 내려놓을 수 있고 사용자 입력을 수신하도록 동작하지 않을 수도 있다. 원자적 복원은, 자원들이 완전히 복원되기 전에도 장치가 일관성있는 데이터 집합과 더불어 동작하는 것을 보장할 수 있다.
후속해서, 백그라운드 복원 단계 동안에, 장치를 복원하는데 요구되는 자원들의 나머지는, 클라우드 스토리지 및/또는 로컬 컴퓨터와 같은 가용 백업 소스들로부터 백그라운드에서 풀될 수 있다. 예를 들어, 미디어 자산의 실제 콘텐츠(예를 들어, 사진, 동영상, 음성 파일 등), 제3자 애플리케이션 데이터 또는 기타의 적용가능한 자원들과 같은 상당한 자원들이, 백그라운드 복원 단계 동안에 장치의 동작이나 장치의 적어도 일부 기능 또는 능력들을 이용하는 사용자의 능력에 영향을 주지 않고 풀될 수 있다; 예를 들어, 사용자는 백그라운드 복원 단계 동안에 텍스트 메시지를 전송하거나 인터넷을 브라우징하거나 음성 전화를 행할 수 있다.
한 실시예에서, 장치는 (예를 들어, 동기 동작을 통해) 로컬 컴퓨터(예를 들어, iTunes® 애플리케이션을 실행하는 iTunes® 컴퓨터)와 동기화되어 장치 상의 소정의 콘텐츠 또는 자원들(예를 들어, 음악, 애플리케이션, 팟캐스트, 동영상, 벨소리, 사진, 메모, 이메일 계정 설정, 연락처, 캘린더 및 북마크)이 로컬 컴퓨터 내의 대응하는 자원들의 사용자 선택된 서브셋과 정합하는 것을 보장한다. 애플리케이션 데이터는, 동기화되면 (예를 들어, iTunes® 백업으로) 장치로부터 로컬 컴퓨터로 백업될 수 있다. 애플리케이션 또는 미디어 콘텐츠와 같은 구매된 자산은 (예를 들어, iTunes® 라이브러리를 통해) 동기화를 위해 로컬 컴퓨터로부터 장치로 다운로드될 수 있다.
한 실시예에서, 장치와 로컬 컴퓨터 사이의 동기 동작은 장치의 백그라운드 복원(단계) 동안에(또는 그 후에) 수행될 수 있다. 장치와 iTunes® 컴퓨터 사이의 통신 또는 접속은 백그라운드 복원 이전에는 장치가 동작 상태로 아직 부팅되지 않았기 때문에 이용가능하지 않을 수 있다. 동기 동작은 로컬 컴퓨터로부터(예를 들어, iTunes® 라이브러리로서) 장치로 자산들(예를 들어, 구매한 미디어 및/또는 애플리케이션)을 복원할 수 있다.
선택사항으로서 또는 추가적으로, 동기 동작은 애플리케이션 데이터 또는 사용자 데이터를 로컬 컴퓨터로부터 (예를 들어, iTunes® 백업으로서) 장치로 복원할 수 있다. 한 실시예에서, 동기 동작은 장치가 동기화할 자원 목록을 식별하기 위해 장치와 iTunes® 컴퓨터 사이의 비교를 포함할 수 있다. 복원 동작과 동기 동작은, 적용가능한 소스로부터 실제의 콘텐츠 또는 비트 데이터를 풀하기 위해 장치에서 실행 중인 ATC(Air Traffic Controller) 코드와 같은 공통 모듈에 의존할 수 있다. ATC는, 동기 동작 및/또는 복원 동작을 위해 iTunes® 장치로부터 자원을 전송하기 위해 장치가 iTunes® 장치에 결합 또는 접속될 때 iTunes® 동기(또는 페어링) 이벤트와 같은 시스템 이벤트를 자동으로 인지할 수 있다.
한 실시예에서, 장치에서의 복원 동작은 자원을 복원하기 위한 최상의 소스를 결정하기 위해 접속된 백업 서비스(예를 들어, iTunes® 서비스 또는 MBS 서비스)와 대조할 수도 있다. 별개의 자원들 또는 자산들에 대해, 클라우드 내의 백업 스토리지(또는 클라우드 백업), 로컬 컴퓨터 내의 백업(예를 들어, iTunes® 백업), 클라우드 내의 스토어(예를 들어, iTunes® 스토어), 로컬 컴퓨터 내의 로컬 라이브러리(예를 들어, iTunes® 라이브러리)와 같은, 상이한 소스들이 식별될 수 있다. 데이터의 한 카테고리가 하나의 소스로부터 복원되면서 데이터의 또 다른 카테고리가 별개의 소스로부터 복원될 수도 있다. 예를 들어, 클라우드 스토리지로부터 사진이 복원되고, 스토어로부터 음악 콘텐츠가 복원되고, 로컬 라이브러리로부터 애플리케이션이 복원되고, 클라우드 스토리지로부터 애플리케이션 데이터가 복원될 수 있는 등등이다. 통상적으로, 로컬 컴퓨터 내의 소스들이 클라우드로부터의 소스들보다 선호되는데, 이것은 예를 들어, 덜 비싼 접속 비용 및/또는 더 높은 사용 네트워크 대역폭 때문이다.
일부 실시예에서, 트랜잭션 단계에 이어서 최상 노력(best effort) 단계와 같은, 복수의 단계들로 동기 동작이 수행될 수 있다. 트랜잭션 단계 동안에, 장치와 로컬 컴퓨터 사이에서 동기화시킬 자원 목록을 기술하는 메타데이터가 식별될 수 있다. 메타데이터는 트랜잭션 방식으로(예를 들어, 모두 또는 전혀) 로컬 컴퓨터로부터 수신될 수 있다. 최상 노력 단계 동안에, 메타데이터에 의해 기술된 자산들은, 예를 들어, 가용성, 성능, 비용 및/또는 기타의 적용가능한 인자를 고려하여 동적으로 결정된 상이한 소스들로부터 장치에 동기화될 수 있다.
소정 실시예들에서, 자원을 복원하기 위한 상이한 소스들은, 예를 들어, 자원과 연관된 메타데이터에 기초하여 동적으로 식별될 수 있다. 동기 동작들은 국지적으로 결합되거나 접속된 컴퓨터(예를 들어, iTunes® 컴퓨터)로부터 장치와 동기화하는데 요구되는 자원 목록의 디스크립션을 푸시할 수 있다. 노래, 동영상, 영화, 애플리케이션 등과 같은 구매된 자산은 클라우드 내의 스토어로부터 또는 로컬 컴퓨터로부터 (예를 들어, iTunes® 라이브러리를 통해) 전송될 수 있다. 사용자가 찍은 사진이나 기타의 장치로부터 다운로드된 동영상과 같은 스토어로부터 구매하거나 취득하지 않은 미디어는 클라우드 스토리지로부터 또는 로컬 컴퓨터로부터(예를 들어, iTunes® 백업을 통해) 복원될 수 있다.
복원 순서의 동적 구성이 유익하게도, 장치의 효율 및/또는 이용성을 개선시키기 위해 복수-단계 복원의 나중의 단계에서(예를 들어, 첫 번째 단계 또는 모드 단계 이후에) 적용될 수 있다. 예를 들어, 자원 또는 자산 목록은 복원의 시작(또는 첫번째) 단계에서 복원을 위해 식별될 수 있다. 실제의 데이터 전송을 위한 백그라운드 단계와 같은 복원의 나중 단계 동안에, 식별된 자원들 중 다음으로 복원할 것을 선택하는 것은 즉석에서 동적으로 결정된 순서 또는 우선순위를 따를 수 있다. 복수의 자원들이, 예를 들어, 복수의 쓰레드 또는 프로세스들을 통해, 복원을 위해 동시에 전송될 수 있다.
장치의 작동 상태 및/또는 아직 복원되지 않았거나 복원 중인 자원들에 대해 구성된 다양한 휴리스틱 기준에 따라, 전송할 다음 자원(들)을 선택하는 순서는 런타임 동안에 변경될 수 있다. 예를 들어, 더 작은 크기의 및/또는 전송에 더 적은 시간을 요구하는(예를 들어, 연관된 소스에 대해 더 높은 대역폭이 이용가능한) 자원들은 더 높게(예를 들어, 다음으로 복원할 자원으로서 선택될 확률이 더 높게) 순위매김될 수 있다.
한 실시예에서, 장치의 이용성을 증가시키기 위해 복원에 대해 자원이 어떻게 순서화 또는 우선순위화되어야 하는지를 결정하기 위해 장치의 이용이 추적될 수 있다. 예를 들어 자원들은 연관된 애플리케이션에 따라 순서화될 수 있다. 소정 실시예에서, 가장 최근에 이용된 애플리케이션의 자원은 초기에 이용된 애플리케이션의 자원보다 높은 우선순위를 할당받을 수 있다. 현재 이용되는 애플리케이션(예를 들어, 재생중인 영화 또는 동영상)은, 그 애플리케이션과 연관된 애플리케이션 데이터가 사용자에 의해 곧 액세스될 수 있다는 기대하에 가장 최근에 이용된 애플리케이션으로서 식별될 수 있다.
일부 실시예에서, 복원할 자원들은 그 자원들과 연관된 아이콘들의 디스플레이 순서에 따라 우선순위화될 수 있다. 예를 들어, 자원과 연관된 애플리케이션 아이콘 및/또는 미디어 아이콘은 디스플레이 순서에 따라 장치의 디스플레이 상에 프리젠팅될 수 있다. 디스플레이 순서는 장치의 사용자에 의해 묵시적으로 지정된 우선순위를 반영할 수 있다. 선택사항으로서 또는 추가적으로, 자원이 전송되어야 하는 방법을 동적으로 제어하기 위해 사용자 입력(예를 들어, 디스플레이 스크린 상에서 탭핑)이 수신될 수 있다.
한 실시예에서, 복원할 자원 목록은 휴리스틱으로 구성된 특성 및/또는 동적으로 식별된 요인들에 기초하여 할당된 순서로 구축될 수도 있다. 특성은, 크기, 타입, 위치 및/또는 자원과 연관된 기타의 적용가능한 메타데이터와 같은, 자원에 대한 표준 정보를 포함할 수 있다. 예를 들어, 구매된 자산 타입의 자원은 사용자 생성된 콘텐츠 타입의 또 다른 자원보다 복원에 대해 더 높은 우선순위를 할당받을 수 있다. 자원의 위치는 장치에 대해 자원이 생성되었거나 구매되었던 장소를 나타낼 수 있다. 장치의 현재 위치에 더 가까운 위치와 연관된 자원은 장치로부터 더 멀리 떨어진 또 다른 위치를 갖는 또 다른 자원보다 높은 우선순위일 수 있다.
동적 요인들이, 지속적으로 변하는 동작 환경이나 장치의 이용 패턴에 기초하여 즉석에서 결정될 수도 있다. 예를 들어, 동적 요인들은, 가용 (복원) 소스(예를 들어, 클라우드 스토리지, 스토어, 로컬 컴퓨터 등), 애플리케이션의 이용 내력, 애플리케이션 아이콘과 연관된 디스플레이 순서, 사용자 입력 또는 기타의 적용가능한 요인들을 포함할 수 있다. 통상적으로, 가용 소스로부터 전송될 수 있는 자원은 현재 이용가능한 소스들로부터 발견되지 않는 또 다른 자원보다 높은 우선순위일 수 있다. 자원에 대한 사용 이력은, 예를 들어, 빈도, (예를 들어, 애플리케이션을 통해) 자원이 액세스된 마지막 시간, 사용 카운트, 및/또는 기타의 사용 통계를 포함할 수 있다. 더 높은 사용 빈도를 갖는 자원은 더 높게 순위매김될 수 있다.
한 실시예에서, 복원할 자원의 초기 목록은 복수-단계 복원의 첫 번째 단계(예를 들어, 모드 단계) 동안에 구축될 수 있다. 휴리스틱으로 결정된 특성 및/또는 동적 요인들은, 예를 들어, 각 자원에 대한 별개의 결합된 휴리스틱 가중치에 따라 자원들의 목록 중에서 복원 순서를 결정하도록 할당되고 결합된 휴리스틱 가중치로서 표현될 수 있다. 복원의 나중 단계 동안에, 가장 높은 가중치(들)을 갖는 자원(들)이 다음으로 다운로드하기 위해 선택될 수 있다.
예를 들어, 복원할 자원들의 순서화된 목록은 적어도 하나의 복원 소스(예를 들어, 클라우드 스토리지, 스토어, 및/또는 iTunes® 컴퓨터)로부터 자원들을 복원할 수 있는 복원 프로세스에 포워딩될 수 있다. 복원 프로세스는, 복원을 위한 자원들의 순서를 변경하기 위해, 복원의 상태를 추적하고, 환경(예를 들어, 네트워크 접속, 전력 상태)의 변화를 검출하며, 사용자 입력을 검출하는 등등을 할 수 있다. 복원은 (예를 들어, 사용자 입력을 통해 및/또는 환경의 변화로) 중단되어, 새로운 순서를 갖는 자원들의 새로운 목록을 구축하여 새로이 구축된 목록으로 재개할 수 있다.
한 실시예에서, 특정 소스(예를 들어, iTunes® 컴퓨터, 또는 클라우드 스토리지 등)로부터 복원할 자원들의 큐(queue)는 복원을 위해 식별된 자원들의 현재의 순서화된 목록에 따라 유지될 수 있다. 상이한 소스들에 대해 별개의 큐들이 유지될 수 있다. 일부 실시예에서, (예를 들어, 사용자 중단, 선택, 및/또는 기타의 시스템 이벤트 등으로 인해) 자원들의 목록이 런타임 동안에 동적으로 구축되므로, 각각의 큐는 자원들의 새로이 구축된 목록에 따라 (예를 들어, 특정 자원을 큐의 상부로 이동시킴으로써) 업데이트되어 복원을 계속할 수 있다.
일부 실시예에서, 자원들의 실제 콘텐츠는, 자원들이 장치를 통해 어떻게 이용되는지에 따라 협력적 방식으로 복원될 수 있다. 예를 들어, 자원들은, 장치를 복원할 때 애플리케이션이 신속하게 액세스 가능하게 되도록 허용하기 위해 애플리케이션 주변에서 샌드박스(sandbox)될 수 있다. 애플리케이션 프로그램 및 연관된 애플리케이션 데이터(또는 설정)는 함께 복원되도록 샌드박스될 수 있다.
실행가능한 프로그램, 라이브러리, 애플리케이션 설정, 애플리케이션 데이터(또는 애플리케이션 사용자를 통해 사용자에 의해 생성된 문서와 같은, 사용자 데이터) 등과 같은, 애플리케이션에 대한 자원들의 의존성은 샌드박스 내에 유지되어 이들 자원들의 장치로의 복원 순서를 식별할 수 있다. 애플리케이션은 모든 샌드박스된 자원들이 복원되기 전에도 장치의 사용자에게 이용가능하게 될 수 있다. 예를 들어, 음악 재생기 애플리케이션을 실행하는 것은, 음악 콘텐츠 파일들이 장치에 전송되기 전에 재생기 설정이 복원될 것을 요구할 수 있다.
한 실시예에서, 복수-단계 복원이 사용자 인터페이스와 조율하여 사용자가 복원 동안에(예를 들어, 장치가 완전히 복원되기 전에) 장치와 상호작용하는 것을 허용할 수 있다. 복원의 각 단계에 대한 진행이나 상태의 라이브 업데이트를 위해 플레이스홀더(placeholder)가 프리젠팅될 수 있다. 자원들의 실제 전송은 사용자 인터페이스를 통해 수신된 입력에 따라 동적으로 재정렬될 수 있다.
예를 들어, 애플리케이션(예를 들어, 사진 뷰어, 동영상 재생기, 음악 재생기 등) 및 연관된 애플리케이션 설정이 복원되어 대응하는 애플리케이션 아이콘을 사용자 인터페이스 상에 프리젠팅하여 그 애플리케이션이 이용가능함을 나타낼 수 있다. 애플리케이션과의 사용자 상호작용(예를 들어, 사진을 보는 것)의 검출시에, 복원 순서를 동적으로 변경하기 위해 연관된 애플리케이션 데이터(예를 들어, 사진)에 관련된 자원들에 더 높은 우선순위가 할당될 수 있다.
한 실시예에서, 애플리케이션에 대한 복원의 상태는 장치가 복원 중일 때 그 애플리케이션에 의해 추적될 수 있다. 애플리케이션에 대한 복원의 상태는, 예를 들어, "스피너(spinner)" 타입 사용자 인터페이스 요소, 온도계-스타일 진행 표시자와 같은 표현, 또는 기타의 적용가능한 사용자 인터페이스 요소들을 통해 프리젠팅될 수 있다. 애플리케이션에 대한 자산들이 이용가능한지의 여부는 사용자 인터페이스를 통해 표시될 수 있다.
소정 실시예에서, 복원의 상태를 프리젠팅하는 사용자 인터페이스 요소는 복원의 전체 속도에 영향을 미치는 요인들의 조합에 기초한 복합 진행 표시자를 포함할 수 있다. 요인들은, 예를 들어, 애플리케이션의 크기, 애플리케이션의 소스들로부터의 애플리케이션에 대한 다운로드 속도, 사용자 데이터 크기, 사용자 데이터의 소스들로부터의 사용자 데이터에 대한 다운로드 속도, 설치 시간, 미디어 콘텐츠(예를 들어, 음악, 암호화된 데이터 등)의 암호해독 시간, 및/또는 기타의 적용가능한 요인들에 따라, 계산될 수 있다. 복합 진행 표시자는, 예를 들어, 미디어 타입 및/또는 컨텍스트(예를 들어, 도약대 컨텍스트, iPod® 애플리케이션 등의 경우)에 따라, 직관적이고 고유한 온도계 스타일 표시자, 파이 차트 표시자 또는 기타의 적용가능한 사용자 인터페이스 스타일 표시자로서 프리젠팅 또는 디스플레이될 수 있다.
일부 실시예에서, 상이한 사용자 인터페이스 컴포넌트들/기능들이 복원의 상태에 따라 프리젠팅(또는 인에이블)될 수 있다. 예를 들어, (예를 들어, 복원의 첫 번째 단계에서) 복원될 것으로 식별되었지만 아직 복원되지 않은 자산들은, 예를 들어, 그 자산들에 대한 애플리케이션의 사용자 활성화를 디스에이블하기 위해 회색화(grayed out)될 수 있다. 그러나, 아직 복원되지 않은 자산들에 대해, 재정렬, 명칭변경 및/또는 삭제와 같은, 소정 사용자 인터페이스 동작이 허용될 수 있다. 일부 실시예에서, 복원의 상태는 자산의 가용성 또는 불가용성을 포함할 수 있다. 소스 인터페이스 모듈은, 소스(예를 들어, iTunes® 스토어, 자산 스토어 또는 기타의 적용가능한 스토리지)로부터 복원할 자산이 현재 이용가능하지 않은지, 예를 들어, 소스에 존재하지 않는지 및/또는 올바르지 않은 액세스 인증서(예를 들어, 자산의 메타데이터에 포함된 패스워드)와 연관되어 있는지를 판정할 수 있다.
한 실시예에서, 복원을 위해 식별된 자원 또는 자산의 목록은, 복원 순서를 동적으로 변경하고 및/또는 복원 진행상황을 보고하기 위해, 예를 들어, ATC 모듈이나 동기 및 복원 동작 모두에 대한 공통 모듈에서 유지될 수 있다. 애플리케이션은, 플러그-인 모듈(예를 들어, 라이브러리) 및/또는 API(application programming interface)를 통해 복원 진행상황에 액세스할 수 있다. 따라서, 애플리케이션은 사용자 인터페이스 동작, 예를 들어, 아이콘의 회색화, 아이콘의 스피닝, 진행 막대 또는 기타의 적용가능한 사용자 인터페이스 변화 등을 통해 복원 진행상황의 라이브 업데이트를 제공할 수 있다. 예를 들어, 사용자 인터페이스는 애플리케이션에 대한 복원 진행상황을 프리젠팅하여 자산의 20% 또는 기타의 퍼센트가 이 애플리케이션에 대해 이미 복원되었음을 나타낼 수 있다.
애플리케이션은 백그라운드 단계에서 동작하는 복원 동작을 중단 또는 변경할 수 있다. 예를 들어, 사용자는 스토어로부터 구매한 미디어 자산(예를 들어, 노래 또는 동영상)에 대해 애플리케이션을 탭핑할 수 있다. 응답하여, 애플리케이션은, 예를 들어, ATC 모듈을 통한 자산 전송의 재우선순위화를, 예를 들어, 플러그-인 모듈이나 API를 통해 요청할 수 있다. 클라우드 내의 자산 스토어에 대한 소스 인터페이스 모듈(예를 들어, itunestored)은 사용자에 의해 탭핑된 미디어 자산을 연관된 큐의 최상부에 두고 복원이나 전송을 재개하도록 지시받을 수 있다.
한 실시예에서, 장치는 백업 동작 동안에 전원의 상태를 모니터링하여 확고한 사용자 경험을 유지할 수 있다. 전원에서의 변화와 관련된 시스템 이벤트의 검출시에, 장치는 자원을 백업(또는 복원)하는 (예를 들어, 백그라운드의) 프로세스를 사용자에 의해 인지됨이 없이 투명한 방식으로 종료 또는 취소할 수 있다. 시스템 이벤트는, 예를 들어, 장치로의 전원 코드, 유도성 패드, 또는 기타의 전력 전달 메커니즘을 언플러그하거나 접속해제함으로써 야기될 수 있다.
일부 실시예에서, (예를 들어, 전원이 충분한 전력을 갖고 있지 않다면 백업을 중단하기 위해) 장치가 충분한 전력을 갖춘 전원에 플러그되어 있는지의 모니터링에 기초하여 이벤트가 생성될 수 있다. 대안으로서 또는 선택사항으로서, 이벤트는 장치의 스크린이 온인지 오프인지 및/또는 장치의 네트워크 접속의 상태에 기초할 수도 있다. 예를 들어, 스크린이 (예를 들어, 어떠한 이유로든) 온으로 되면, 장치의 자동 백업이 취소되어 사용자 인터페이스 성능에 충격을 주는 것을 피할 수 있다. 장치가 더 이상 WiFi 네트워크에 접속되어 있지 않음을 이벤트가 표시하면, 예를 들어, 자동 백업이 중단되어 셀룰러 전화 네트워크를 통한 셀룰러 데이터의 이용을 피할 수 있다.
일부 실시예에서, 사용자가 백업/복원을 계속할지의 여부를 선택하기 위한 옵션을 제공하기 위해 경고가 발생될 수 있다. 장치는 작동 상태에서, 사용자에게 알려지지 않은 백그라운드에서의 백업/복원 동작에 의해 야기되는 전력 누수 없이, 예를 들어, 배터리 전력을 절약하기 위해, 전력공급된 채로 있을 수 있다.
한 실시예에서, 백업/복원 상태는, 예를 들어, 외부 전력선이 다시 플러그될 때, 백업/복원 동작이 재개되는 것을 허용하기 위해 장치 내에 유지될 수 있다. 예를 들어, 외부 전력선이 언플러그되면, 백업 동작이 재개되어 장치를 재스캔하여 이전에 이미 백업된 자원에 관한 불필요한 백업 동작을 수행하지 않고 어느 자원이 백업되어야 하는지를 식별할 수 있다.
도 1은 여기서 설명된 한 실시예에 따른 복수-단계 복수-소스 백업 및 복원을 위한 네트워크 시스템의 한 실시예를 나타내는 블록도이다. 네트워킹된 시스템(100)은 서비스들(101, 103, 105, 107 117)과 장치들(111, 113)을 접속하는 동적으로 구성된 네트워크(109)를 포함할 수 있다. 예를 들어, 전화기 장치와 같은 클라이언트 장치(113)는 장치(113)가 위치한 장소에 따라 자산 저장 서비스(107)와 산발적으로 접속될 수 있다. 장치(113)는, 하드디스크, 솔리드 스테이트 장치, 플래시 메모리 또는 기타의 저장 서비스와 같은 대용량 스토리지 장치에 액세스할 수 있는 데스크탑 컴퓨터일 수 있는 로컬 백업 장치(111)에 국지적으로 또는 (예를 들어, 배선을 통해) 직접적으로 접속될 수 있다. 한 실시예에서, 클라이언트 장치(113)는 즉석에서 식별된 복수의 소스(예를 들어, 서버들, 서비스들 또는 로컬 장치들)(101, 103, 105, 107, 111, 117)를 통해 백업 및/또는 복구될 수 있다. 서비스들(101, 103, 105, 107, 111, 117) 또는 기타의 적용가능한 콘텐츠 서비스들과 같은 백업 서비스 또는 소스들은, 요청시에 장치가 자산을 백업할 필요 없이 장치(113)와 같은 장치에 자산이나 콘텐츠를 복원할 수 있다.
도 2는 여기서 설명된 한 실시예에 따른 복수-단계 복수-소스 백업 및 복원을 위한 예시적인 시스템을 나타내는 블록도이다. 한 실시예에서, 시스템(200)은, Apple Inc.의 iOS® 운영 체제 또는 기타의 적용가능한 운영 체제에 기초할 수 있는 운영 환경(201)을 실행하는, 도 1의 클라이언트 장치(113)에 기초할 수 있다.
시스템(201)은 네트워크 인터페이스 모듈(203)을 통해 선택된 소스들과 더불어 장치의 자원을 백업 및 복원하는 백업/복원 관리 모듈(207)을 포함할 수 있다. 자원들은, 예를 들어, 파일 시스템(217) 내의 파일들을 포함할 수 있다. 모듈(207)은 사용자 구성가능한 스케줄로, 예를 들어, 매일, 매주, 및/또는 원격 장치 및/또는 사용자 입력을 통해 수신된 요청으로부터의 요구시에 백업/복원 동작을 개시할 수 있다. 일부 실시예에서, 모듈(207)은, 시스템 이벤트 핸들러 모듈(205)을 통해 모니터링된, 외부 전력 소실(예를 들어, 외부 전원 코드가 언플러그될 때)과 같은 시스템 이벤트에 응답하여 백업/복원 동작을 중단 또는 재개할 수 있다.
로컬 데이터베이스(209)는 장치에 대해 백업된 하나 이상의 스냅샷을 캐싱 또는 저장할 수 있다. 스냅샷은 소정 시점에서 백업된 장치의 자원들의 상태를 나타낼 수 있다. 백업/복원 동작은 시스템(201)이 스냅샷에 대응하는 이전 상태로 되돌아가는 것을 허용한다.
한 실시예에서, 애플리케이션(213)과 같은 하나 이상의 애플리케이션은, 예를 들어, 상태 인터페이스 모듈(221)을 통해 백업/복원 관리 모듈(207)과 통신할 수 있다. 애플리케이션(213)은, 플러그-인으로서 또는 API 인터페이스를 통해 상태 인터페이스 모듈(221)과 링크할 수 있다. 한 실시예에서, 애플리케이션(213)은 연관된 자원의 백업/복원 상태에 액세스하여 사용자 인터페이스 모듈(219)을 통해 진행상황을 프리젠팅할 수 있다.
대안으로서, 애플리케이션(213)은, 백업/복원 동작을 즉석에서 재정렬 또는 변경하기 위해, 사용자 인터페이스 모듈(219)을 통해 수신된 사용자 요청, 예를 들어, 사용자 탭 동작을 모듈(207)에 중계할 수 있다. 사용자 요청은, 터치 스크린 기반, 마우스 기반, 포인터 기반, 음성 기반, 또는 기타의 적용가능한 사용자 인터페이스 기술들을 통해 수신될 수 있다. 한 실시예에서, 사용 카운트, 사용 빈도, 사용 횟수, 또는 기타의 적용가능한 사용 통계 등과 같은, 애플리케이션(213)의 사용 이력이 사용 이력(211)에 기록될 수 있다. 모듈(207)은 사용 이력(211)을 통해 수집된 정보에 기초하여 백업/복원 동작을 동적으로 구성할 수 있다.
도 3은 여기서 설명된 한 실시예에 따라 복수 소스를 이용하여 복수 단계에서 백업 및 복원을 관리하기 위한 예시적 시스템을 나타내는 블록도이다. 시스템(300)은 백업/복원 관리 모듈(207)을 포함한 도 2의 시스템(200)에 기초할 수 있다. 한 실시예에서, 시스템(300)은 백업/복원 동작을 수행하기 위한 복수의 백업/복원 소스들을 발견하고 및/또는 인터페이싱할 수 있는 서비스 프레임워크(309)를 포함할 수 있다.
예를 들어, (예를 들어, itunestored 프로세스로서 운용되는) 스토어 인터페이스 모듈(301)은, 구매된 자원을 전송하기 위해, 도 1의 스토어(107)와 같은 가용 스토어들과 통신할 수 있다. 클라우드 인터페이스 모듈(307)은, 장치 내의 백업/복원 자원들에 대한 실제의 콘텐트를 전송하기 위해, 도 1의 클라우드 백업 서비스(101)와 같은 클라우드 스토리지와 통신할 수 있다. (예를 들어, ituned 프로세스로서 운용되는) 로컬 장치 인터페이스 모듈(305)은, 도 1의 로컬 백업 장치(111)에 호스팅된 iTunes®와 같은, 로컬 컴퓨터에서 실행되는 대응하는 서비스와 메시지를 교환함으로써 자원들을 백업, 복원, 및/또는 동기화할 수 있다. 한 실시예에서, 인터페이스 모듈들(301, 305, 307)은, 인터페이스 모듈들(301, 305, 307)보다 더 낮은 추상화 레벨에서 데이터 전송을 수행할 수 있는 ATC 엔진 또는 모듈과 같은, 공통 인터페이스 엔진(303)을 공유할 수 있다.
(예를 들어, backupd 프로세스로서 운용되는) 복수-단계 핸들러 모듈(311)은 백업/복원 동작의 상이한 단계들을 관리할 수 있다. 예를 들어, 복수-단계 핸들러 모듈(311)은 (예를 들어, 구성된 스케줄에 따라) 백업 서비스(105)와의 백업 동작을 개시하여 백업할 자원들의 스냅샷의 디스크립션을 식별한다. 한 실시예에서, 복수-단계 핸들러 모듈(311)은 모드 단계(또는 첫 번째 단계) 및/또는 무-모드(modal-less)일 수도 있는(예를 들어, 사용자와의 상호작용을 허용하는) 후속 단계들(예를 들어, 백그라운드 단계)에서 어느 자원을 복원할 것인지를 식별할 수 있다.
일부 실시예에서, 자원 큐 핸들러 모듈(313)은, 예를 들어, 구성된 휴리스틱 및/또는 사용자 요청에 따라, 복원 및/또는 백업을 위한 자원들을 동적으로 재정렬할 수 있다. 자원 또는 자산은 서비스 프레임워크(309)의 별개의 큐들에 따라 정렬된 상이한 소스들로/로부터 전송될 수 있다. 한 실시예에서, 장치의 (예를 들어, 백그라운드에서의) 복원 동안에 애플리케이션으로부터 수신된 사용자 탭 동작이나 기타의 UI 동작(예를 들어, 마우스 클릭, 음성 명령, 키보드 선택, 손 제스쳐 등)에 응답하여 자원 큐 핸들러 모듈(313)은 애플리케이션을 위하여 아직 복원되지 않은 자원들을 재우선순위화할 수 있다. 자원 큐 핸들러 모듈(313)은 서비스 프레임워크(309)에게 큐를 업데이트하여 예를 들어 애플리케이션과 연관된 자원을 다운로드하기 위해 더 높은 우선순위를 허용하도록 지시할 수 있다.
도 4는 여기서 설명된 한 실시예에 따른 장치에 대한 증분적 백업 동작을 수행하는 프로세스의 한 실시예를 나타내는 흐름도이다. 예시적 프로세스(400)는, 하드웨어(회로, 전용 로직 등), (전용 머신에서 실행되는 것과 같은) 소프트웨어, 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(400)는 도 2의 시스템(200)의 일부 컴포넌트에 의해 수행될 수 있다.
한 실시예에서, 프로세스(400)의 처리 로직은 적어도 2개 단계를 포함하는 백업 동작을 수행할 수 있다. 프로세스(400)의 처리 로직은 백업 서비스(예를 들어, MBS)에 메타데이터를 전송하여 콘텐츠 서비스(예를 들어, MMCS)에 인증하기 위해 백업 서비스로부터 토큰을 수신할 수 있다. 후속해서, 프로세스(400)의 처리 로직은 토큰을 이용하여 콘텐츠 서비스에 실제의 콘텐츠를 업로드할 수 있다. 백업 서비스에서 파일들에 대한 메타데이터는 인증 토큰들을 이용하여 업데이트될 수 있다.
블록(401)에서, 프로세스(500)의 처리 로직은 백업 관리 서버(예를 들어, MBS) 내의 장치에 대응하는 백업을 위치 파악할 수 있다. 백업은 장치에 대응하는 기존 백업이 발견되지 않는다면 새로이 생성될 수 있다. 블록(403)에서, 프로세스(400)의 처리 로직은 백업 관리 서버와 동기화하기 위해 스냅샷 캐시(또는 매니페스트 캐시(manifest cache))를 재구축할 수 있다. 블록(405)에서, 프로세스(400)의 처리 로직은 이전의 백업 동작의 스냅샷을 식별할 수 있다. 식별된 스냅샷은 언커밋 스냅샷 또는 새로이 생성된 스냅샷일 수 있다. 식별된 스냅샷은 파일 시스템 내의 파일들을 기술하는 메타데이터를 포함할 수 있다.
블록(407)에서, 프로세스(400)의 처리 로직은, 예를 들어, 식별된 스냅샷과의 비교를 통해, 파일 시스템의 변경(예를 들어, 새로운 파일, 삭제된 파일, 수정된 파일 등)을 찾기 위해 파일 시스템을 스캔할 수 있다. 블록(409)에서, 프로세스(400)의 처리 로직은, 백업 관리 서버, 백업 서비스 관리 서버(예를 들어, MMCS) 및 스토리지 벤더 서버(예를 들어, Amazon, S3 또는 클라우드 스토리지 등)와의 조율된 트랜잭션을 통해 백업 동작을 수행할 수 있다. 블록(411)에서, 프로세스(400)의 처리 로직은 이전에 생성된 스냅샷들을 병합할 수 있다(예를 들어, 오래된 스냅샷들을 삭제하고 및/또는 복수의 증분적 스냅샷들(각각은 이전 스냅샷으로부터의 파일 세트에 관한 증분적 변경에 대응함)을 갖는 전체 파일 세트에 대응하는 하나의 전체 스냅샷을 유지하는 것).
도 5는 여기서 설명된 한 실시예에 따른 장치에 대한 증분적 복원 동작을 수행하는 프로세스의 한 실시예를 나타내는 흐름도이다. 예시적 프로세스(500)는, 하드웨어(회로, 전용 로직 등), (전용 머신에서 실행되는 것과 같은) 소프트웨어, 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(500)는 도 2의 시스템(200)의 일부 컴포넌트에 의해 수행될 수 있다.
블록(501)에서, 프로세스(500)의 처리 로직은 사용자로부터의 입력에 응답하지 않고 클라우드 백업으로부터 장치(예를 들어, iOS® 장치)로 시스템 파일을 모드 복원(modal restore)할 수 있다. 장치의 운영 체제는 모드 복원 동안에 이용가능하고 실행 중일 수 있다. 블록(503)에서, 프로세스(500)의 처리 로직은 사용자를 위한 작동 상태로 복원된 시스템 파일들을 이용하여 장치를 리부팅할 수 있다.
블록(505)에서, 프로세스(500)의 처리 로직은 백그라운드에서 파일들을 장치에 복원할 수 있다. (예를 들어, 구매되거나 전송된) 자산은 클라우드 스토어(예를 들어, iTunes® 스토어)로부터 다운로드될 수 있고 데이터는 클라우드 백업으로부터 복원될 수 있다. 블록(507)에서, 프로세스(500)의 처리 로직은 (예를 들어, iTunes® 백업 소프트웨어를 실행하는) 사용자 컴퓨터로부터 파일들을 동기/분할 복원할 수 있다. 파일들은 구매된 자산 및/또는 클라우드 백업으로부터 복원되지 않은 데이터를 포함할 수 있다.
도 6은 여기서 설명된 한 실시예에 따른 장치를 복원하기 위해 자원들을 동적으로 우선순위화하는 프로세스의 한 실시예를 나타내는 흐름도이다. 예시적 프로세스(600)는, 하드웨어(회로, 전용 로직 등), (전용 머신에서 실행되는 것과 같은) 소프트웨어, 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(600)는 도 2의 시스템(200)의 일부 컴포넌트에 의해 수행될 수 있다.
블록(601)에서, 프로세스(600)의 처리 로직은 장치(예를 들어, iOS® 기반의 모바일 장치)에 호스팅된 애플리케이션 및/또는 콘텐츠의 사용 패턴(예를 들어, 횟수, 사용 시간, 사용 위치, 사용 지속기간 등)을 추적할 수 있다. 블록(603)에서, 프로세스(600)의 처리 로직은 장치에 복원할 애플리케이션 및/또는 콘텐츠의 목록을 생성할 수 있다. 블록(605)에서, 프로세스(600)의 처리 로직은 장치의 현재 위치를 결정할 수 있다. 블록(607)에서, 프로세스(600)의 처리 로직은, 사용 패턴, 애플리케이션 및/또는 콘텐츠와 연관된 적용가능한 메타데이터(예를 들어, 크기, 유형 등), 및/또는 현재 위치에서의 이용가능성에 기초한 순서로 복원할 애플리케이션 및/또는 콘텐츠의 목록을 우선순위화할 수 있다.
블록(609)에서, 프로세스(600)의 처리 로직은 우선순위화된 목록을 이용하여 현재 위치의 장치에 애플리케이션 및/또는 콘텐츠를 복원할 수 있다. 블록(611)에서, 프로세스(600)의 처리 로직은, 예를 들어, 하나 이상의 애플리케이션/콘텐츠에 관한 원하는 복원 우선순위를 나타내는, 예를 들어, 탭 입력을 통한 사용자 요청을 검출할 수 있다. 블록(613)에서, 프로세스(600)의 처리 로직은 요청된 원하는 복원 우선순위에 따라 복원하기 위하여 애플리케이션 및/또는 콘텐츠의 우선순위화된 목록의 순서를 동적으로 변경할 수 있다.
도 7은 여기서 설명된 한 실시예에 따른 백업 및/또는 복원 동작에 대해 장치의 전력 소스를 모니터링하는 예시적 시스템을 나타내는 블록도이다. 시스템(700)은 도 1의 장치(113)와 같은 클라이언트 장치에 기초할 수 있다.
시스템(700)은, 외부 전원(예를 들어, AC/DC 어댑터, 태양 전지판, 유도성 충전 패드 등)(719)으로부터의 충전이 중단된 것을 검출하는 것에 응답하여, 개시되어 진행 중인 공중(over the air)(무선) 백업 동작을 종료하도록 구성될 수 있다. 시스템(700)은, AC/DC 어댑터 또는 기타의 외부 전원의 출력에 결합되는 플러그를 위한 잭이나 소켓과 같은 외부 전력 포트(713), 및 충전 제어기의 제어하에 충전되는 배터리(717)를 포함한다.
전력 검출기(709)는 외부 전력 포트에 결합되고 마이크로프로세서 기반의 시스템 온 칩 또는 기타의 처리 시스템일 수 있는 처리 시스템(711)에 결합된다; 전력 검출기는 외부 전원의 이용가능성 및/또는 충전 프로세스의 상태를 모니터링하고, 모니터링에 기초하여, 외부 전원으로부터의 접속해제의 결과로서 충전 프로세스가 종료되었는지를 결정한다. 전력 검출기는, 접속해제의 결과로서 충전 프로세스가 종료되었다는 것을 검출하는 것에 응답하여, 처리 시스템이 무선 백업 동작을 종료하게 하는 종료 신호(예를 들어, 처리 시스템에 결합된 버스 상의 인터럽트 신호)를 생성할 수 있다.
한 실시예에서, 백업 동작이 개시되었고 종료 전에 진행 중이며, 시스템(700)의 메모리(715)에 저장될 수 있는 소프트웨어 또는 사용자 데이터(예를 들어, 연락처, 캘린더 엔트리, 사용자 텍스트 파일, 노래나 사진 등과 같은 사용자 미디어 파일)를 백업하고 있는 중이다. 시스템(700) 내의 처리 시스템은 여기서 설명된 백업 방법들 중 임의의 방법을 수행하여, 네트워크(703)에 결합된 서버(701)와 같은 원격 장치 상에서의 백업 동작을 통해 소프트웨어 및/또는 사용자 데이터가 저장되게 할 수 있다. 백업 프로세스는 시스템(700) 내의 하나 이상의 무선장치(예를 들어, WiFi 무선장치 또는 셀룰러 전화기 무선장치)(707)를 통해 무선으로 수행되며, 이들 무선장치들은 시스템(700) 내의 처리 시스템에 결합되고 하나 이상의 네트워크에 결합된다. 네트워크는, 인터넷에 결합된 단일 네트워크(예를 들어, 무선 LAN) 또는 복수의 네트워크 또는 셀룰러 전화 네트워크 등일 수 있다.
종료 신호에 응답하여, 처리 시스템은 진행중인 백업 프로세스(이 시점에서 미완료된 백업 프로세스)를 즉시 또는 백업 동작에서 현재 처리된 파일들에 대한 백업 동작의 완료 후에 종료할 수 있다. 처리 시스템 및/또는 여기서 설명된 하나 이상의 서버들은, 조기 종료된 백업 동작에서 완료된 것과 조기 종료된 백업 동작에서 완료되지 않은 것을 추적하기 위하여 서명이나 동기 앵커 또는 원자적 백업 동작을 추적하는 기타의 메커니즘을 이용할 수 있다. 백업 동작의 종료는 시스템(700)에 의해 자동으로 및 사용자 요청이나 상호작용없이 수행될 수 있다.
백업 프로세스는 시스템(700)이 다시 외부 전원으로부터 충전될 때 종료된 상태로부터 재개될 수 있다. 한 실시예에서, 시스템(700)은, 외부 전원을 통해 충전중일 때 여기서 설명된 하나 이상의 방법에 따라 백업되고, 외부전원으로부터 접속해제될 때 백업을 종료하며 충전이 재개되면 종료된 백업 상태로부터 재개된다. 따라서, 백업 프로세스는, 한 실시예에서, 외부 전원이 접속되었고 이제는 도 8에 도시된 바와 같이 시스템(700)의 배터리를 충전하고 있다는 검출에 응답하여 개시되거나 재개된다.
도 8은 여기서 설명된 한 실시예에 따른 전력을 절약하기 위해 장치에 대한 백업 및/또는 복원 동작을 중단하는 프로세스의 한 실시예를 나타내는 흐름도이다. 예시적 프로세스(800)는, 하드웨어(회로, 전용 로직 등), (전용 머신에서 실행되는 것과 같은) 소프트웨어, 또는 이들의 조합을 포함할 수 있는 처리 로직에 의해 수행될 수 있다. 예를 들어, 프로세스(800)는 도 2의 시스템(200) 또는 도 7의 시스템(700)의 일부 컴포넌트에 의해 수행될 수 있다.
블록(801)에서, 프로세스(800)의 처리 로직은 내부 배터리가 충전 중이라고 판정할 수 있다. 블록(803)에서, 프로세스(800)의 처리 로직은 백그라운드 프로세스로서 원격 백업 서버(들)과의 백업 동작과 내부 배터리의 충전 상태의 모니터링을 시작할 수 있다. 블록(805)에서, 프로세스(800)의 처리 로직은 충전 상태에 따라 내부 배터리의 충전이 종료되었다고(예를 들어, AC/DC 어댑터로부터 접속해제 등) 판정할 수 있다. 블록(807)에서, 프로세스(800)의 처리 로직은 배터리의 충전이 종료했다는 검출에 응답하여 백업 동작을 종료할 수 있다. 블록(809)에서, 프로세스(800)의 처리 로직은 배터리가 충전을 개시한다는 검출에 응답하여 백업 동작을 재개할 수 있다.
도 9는 여기서 설명된 실시예들과 함께 이용될 수 있는 데이터 처리 시스템의 한 예를 도시한다. 도 9에 도시된 데이터 처리 시스템(900)은, 하나 이상의 마이크로프로세서이거나, 시스템 온 칩 집적 회로일 수 있는 처리 시스템(911)을 포함하고, 이 시스템은 또한 처리 시스템에 의한 실행을 위한 프로그램 및 데이터를 저장하기 위한 메모리(901)를 포함한다. 시스템(900)은 또한, 예를 들어, 음악을 재생하거나 또는 스피커 및 마이크로폰을 통해 전화 기능을 제공하기 위하여 마이크로폰과 스피커를 포함할 수 있는 오디오 입력/출력 서브시스템(905)을 포함한다. 시스템(900)은, 적어도 소정 실시예에서, 설명된 복수-단계 복수-소스 복원 및 백업을 네트워크 또는 로컬 접속을 통해 자동으로 및/또는 수동으로 수행할 수 있다. 한 실시예에서, 시스템(900)은 도 2에 도시된 시스템을 포함할 수 있다.
디스플레이 제어기 및 디스플레이 장치(907)는 사용자에게 시각적 사용자 인터페이스를 제공한다; 이 디지털 인터페이스는, OS X® 운영 체제 소프트웨어의 실행시에 Macintosh 컴퓨터에서 보여지는 것과 유사한 그래픽 사용자 인터페이스를 포함할 수 있다. 시스템(900)은 또한 또 다른 데이터 처리 시스템과 통신하기 위해 하나 이상의 무선 트랜시버(903)를 포함한다. 무선 트랜시버는 WiFi 트랜시버, 적외선 트랜시버, Bluetooth 트랜시버, 및/또는 무선 셀룰러 전화 트랜시버일 수 있다. 소정 실시예에서는 도시되지 않은 추가의 컴포넌트들도 역시 시스템(900)의 일부일 수 있고, 소정 실시예들에서는 도 9에 도시된 것보다 적은 수의 컴포넌트들이 데이터 처리 시스템에서 이용될 수 있다는 점을 이해할 것이다.
데이터 처리 시스템(900)은 또한, 사용자가 시스템에 입력을 제공하는 것을 허용하기 위해 제공되는 하나 이상의 입력 장치(913)를 포함한다. 이들 입력 장치는 키패드 또는 키보드 또는 터치 패널 또는 멀티 터치 패널일 수 있다. 데이터 처리 시스템(900)은 또한, 도크에 대한 커넥터일 수 있는 선택사항적인 입력/출력 장치(915)를 포함한다. 본 분야에 공지된 바와 같이 다양한 컴포넌트를 상호접속하기 위해 도시되지 않은 하나 이상의 버스가 이용될 수도 있다는 것을 이해할 것이다. 도 9에 도시된 데이터 처리 시스템은, 핸드헬드 컴퓨터나 PDA, 또는 PDA와 유사한 기능을 갖춘 셀룰러 전화, 또는 셀룰러 전화를 포함하는 핸드헬드 컴퓨터, 또는 iPod와 같은 미디어 재생기, 또는 PDA 및 셀룰러 전화와 결합된 미디어 재생기와 같은 이들 장치들의 양태 또는 기능을 하나의 장치로 결합한 장치들일 수 있다. 다른 실시예들에서, 데이터 처리 시스템(900)은 네트워크 컴퓨터 또는 또 다른 장치 내부의 임베딩된 처리 장치, 또는 도 9에 도시된 것보다 더 적거나 아마도 더 많은 컴포넌트들을 갖는 기타 유형의 데이터 처리 시스템일 수 있다.
도 10은, 본 발명의 한 실시예에서 사용될 수 있는 컴퓨터 시스템과 같은 데이터 처리 시스템의 한 예를 도시한다. 예를 들어, 시스템(1000)은 도 1에 도시된 시스템의 일부로서 구현될 수 있다. 도 10은, 컴퓨터 시스템의 다양한 컴포넌트들을 도시하고 있지만, 이 도면은 컴포넌트들을 상호접속하는 특정한 아키텍처나 방식을 나타내고자 하는 것이 아니라는 점에 유의한다(그러한 세부사항은 본 발명에 관련되어 있지 않기 때문이다). 네트워크 컴퓨터 또는 더 적거나 아마도 더 많은 컴포넌트를 갖는 다른 데이터 처리 시스템들도 역시 본 발명에 이용될 수도 있다는 점을 이해할 것이다.
도 10에 도시된 바와 같이, 데이터 처리 시스템의 한 형태인 컴퓨터 시스템(1000)은, 마이크로프로세서(들)(1005) 및 ROM(Read Only Memory)(1007) 및 휘발성 RAM(1009) 및 비휘발성 메모리(1011)에 결합된 버스(1003)를 포함한다. 마이크로프로세서(1005)는 메모리들(1007, 1009, 1011)로부터 명령어를 회수하고 이 명령어들을 실행하여 전술된 동작들을 수행할 수 있다. 버스(1003)는, 이들 다양한 컴포넌트들을 서로 상호접속시키며, 또한 이들 컴포넌트들(1005, 1007, 1009, 및 1011)을 디스플레이 제어기 및 디스플레이 장치(1013)에, 그리고, 마우스, 키보드, 모뎀, 네트워크 인터페이스, 프린터, 및 기타 본 분야에 공지된 장치일 수 있는 입력/출력(I/O) 장치와 같은 주변 장치들에 상호접속시킨다. 전형적으로, 입력/출력 장치(1015)는 입력/출력 제어기(1017)를 통해 시스템에 결합된다. 휘발성 RAM(Random Access Memory)(1009)은, 메모리 내에서 데이터를 리프레시 또는 유지하기 위해 지속적으로 전력을 요구하는 다이내믹 RAM(DRAM)으로서 구현된다.
대용량 스토리지(1011)는, 통상, 자기 하드 드라이브 또는 자기 광 드라이브 또는 광 드라이브 또는 DVD RAM 또는 플래시 메모리 또는 시스템으로부터 전원이 차단된 후에도 데이터(예를 들어, 많은 양의 데이터)를 유지하는 기타 유형의 메모리 시스템이다. 통상적으로, 대용량 스토리지(1011)는 랜덤 액세스 메모리일 수 있지만, 반드시 그럴 필요는 없다. 도 10에는 대용량 스토리지(1011)가 데이터 처리 시스템 내의 나머지 컴포넌트들에 직접 결합된 로컬 장치인 것으로 도시되어 있지만, 본 발명은, 모뎀이나 이더넷 인터페이스 또는 무선 네트워킹 인터페이스와 같은 네트워크 인터페이스를 통해 데이터 처리 시스템에 결합된 네트워크 스토리지 장치와 같은, 시스템으로부터 원격지의 비휘발성 메모리를 이용할 수도 있다는 것을 이해할 것이다. 버스(1003)는, 본 분야에 공지된 다양한 브릿지, 제어기 및/또는 어댑터들을 통해 서로 접속된 하나 이상의 버스를 포함할 수도 있다.
전술된 것들의 일부는 전용 로직 회로와 같은 로직 회로에 의해 또는 마이크로컨트롤러나 프로그램 코드 명령어를 실행하는 기타 형태의 프로세싱 코어에 의해 구현될 수도 있다. 따라서, 전술된 논의에 의해 교시되는 프로세스들은, 명령어들을 실행하는 머신으로 하여금 소정의 기능을 수행하게 하는 머신-실행가능한 명령어와 같은 프로그램 코드로 수행될 수 있다. 이 정황에서, "머신"은 중간 형태(또는 "추상") 명령어를 프로세서 특유의 명령어(예를 들어, "가상 머신"(예를 들어, Java Virtual Machine)과 같은 추상 실행 환경, 인터프리터, Common Language Runtime, 고급 언어 가상 머신 등)로 변환하는 머신, 및/또는 범용 프로세서 및/또는 특별 목적 프로세서와 같은 명령어를 실행하도록 설계된 반도체 칩 상에 배치된 전자 회로(예를 들어, 트랜지스터로 구현된 "로직 회로")일 수 있다. 상기 논의에 의해 교시된 프로세스들은 또한, 프로그램 코드의 실행 없이 프로세스들(또는 그 일부)을 수행하도록 설계된 전자 회로에 의해(머신에 대한 대안으로서 또는 머신과 조합하여) 수행될 수도 있다.
제조품이 프로그램 코드를 저장하는 데 이용될 수 있다. 프로그램 코드를 저장하는 제조품은, 하나 이상의 메모리(예를 들어, 하나 이상의 플래시 메모리, 랜덤 액세스 메모리(스태틱, 다이내믹 또는 기타)), 광 디스크, CD-ROM, DVD ROM, EPROM, EEPROM, 자기 또는 광학 카드 또는 전자적 명령어를 저장하기에 적합한 기타 유형의 머신-판독가능한 매체로 구현될 수 있지만, 이것으로 제한되는 것은 아니다. 프로그램 코드는 또한, 전파 매체에(예를 들어, 통신 링크(예를 들어, 네트워크 접속)를 통해) 구현된 데이터 신호를 통해 원격 컴퓨터(예를 들어, 서버)로부터 요청측 컴퓨터(예를 들어, 클라이언트)에 다운로드될 수도 있다.
여기서 사용될 때 용어 "메모리"는, 다이내믹 랜덤 액세스 메모리(DRAM) 및 스태틱 RAM(SRAM)과 같은 모든 휘발성 스토리지 매체를 포괄하는 것으로 의도된다. 컴퓨터-실행가능한 명령어는, 자기적 하드 디스크, 광 디스크와 같은 비휘발성 스토리지 장치에 저장될 수 있고, 통상적으로 프로세서에 의한 소프트웨어의 실행 동안에 직접 메모리 액세스 프로세스에 의해 메모리 내에 기입된다. 당업자라면, 용어 "머신-판독가능한 스토리지 매체"는 프로세서에 의해 액세스 가능한 임의 타입의 휘발성 또는 비휘발성 스토리지 장치를 포함한다는 것을 즉각 인식할 것이다.
앞서의 상세한 설명은 컴퓨터 메모리 내에서의 데이터 비트들에 관한 동작의 알고리즘 및 심벌 표현의 관점에서 제공되었다. 이들 알고리즘적 설명 및 표현은 데이터 처리 분야의 당업자가 다른 당업자에게 그들의 연구의 내용을 가장 효과적으로 전달하기 위해 이용되는 도구이다. 알고리즘은 여기서는 일반적으로 원하는 결과를 내놓는 일관성 있는 동작 시퀀스인 것으로 간주된다. 동작들은 통상, 물리량(physical quantity)의 물리적 조작(physical manipulation)을 요구하는 동작이다. 반드시는 아니지만, 대개는, 이들 양들은, 저장, 전달, 결합, 비교, 및 기타의 방식으로 처리될 수 있는 전기 또는 자기 신호의 형태를 취한다. 이들 신호들을, 비트, 값, 엘리먼트, 심벌, 문자, 항, 숫자 등으로 지칭하는 것이, 주로 일반적인 이용 때문에, 때때로 편리하다는 것이 드러났다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리량과 연관되며 이들 물리량에 적용된 편리한 라벨일 뿐이라는 점을 기억해야 한다. 상기 논의로부터 명백한 바와 같이 구체적으로 달리 언급하지 않는 한, 설명을 통틀어, "처리"나 "컴퓨팅"이나 "계산"이나 "판정"이나 "디스플레이" 등과 같은 용어를 이용한 논의는, 컴퓨터 시스템의 레지스터나 메모리 내의 물리적 (전자적) 양으로서 표현된 데이터를 처리하여, 컴퓨터 시스템의 메모리 또는 레지스터나 기타의 이러한 정보 스토리지, 전송 또는 디스플레이 장치 내의 물리량으로서 유사하게 표현된 다른 데이터로 변환하는, 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작이나 처리를 지칭한다는 것을 이해할 것이다.
본 발명은 여기서 설명된 동작들을 수행하기 위한 장치에도 관련되어 있다. 이 장치는 필요한 목적을 위해 특정적으로 구성(construct)될 수도 있고, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 작동(activate)되거나 재구성(reconfigure)될 수 있는 범용 컴퓨터를 포함할 수도 있다. 이러한 컴퓨터 프로그램은, 각각이 컴퓨터 시스템 버스에 결합된, 플로피 디스크, 광학 디스크, CD-ROM, 및 광자기 디스크를 포함한 임의 타입의 디스크, 판독 전용 메모리(ROM), RAM, EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자적 명령어를 저장하기에 적합한 임의 유형의 매체를 포함하지만 이들로 한정되지 않는, 컴퓨터 판독가능한 저장 매체에 저장될 수 있다.
여기서 제시된 프로세스들 및 디스플레이들은 임의의 특정한 컴퓨터 또는 기타의 장치에 고유하게 관련된 것은 아니다. 본 교시에 따라 다양한 범용 시스템이 프로그램들과 함께 이용될 수 있거나, 설명된 동작들을 수행하기 위해 더 전문화된 장치를 구성하는 것이 편리한 것으로 입증될 수도 있다. 다양한 이들 시스템들에 대한 요구되는 구조는 이하의 설명으로부터 명백할 것이다. 또한, 본 발명은 임의의 특정한 프로그래밍 언어를 참조하여 기술되는 것은 아니다. 여기서 설명된 본 발명의 교시를 구현하기 위해 다양한 프로그래밍 언어들이 이용될 수 있다는 것을 이해할 것이다.
전술된 명세서에서, 본 발명이 특정한 실시예들을 참조하여 설명되었다. 그러나, 첨부된 특허청구범위에 개시된 본 발명의 더 넓은 사상 및 범위로부터 벗어나지 않고 다양한 수정이 이루어질 수 있다는 것은 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적 의미라기보다는 예시적인 의미로 간주되어야 한다.

Claims (22)

  1. 장치를 복원하는 방법으로서,
    제1 소스로부터 상기 장치로 자원을 복원하는 단계;
    상기 자원의 일부가 상기 제1 소스로부터 상기 장치로 복원된 후에 제2 소스로부터의 상기 자원의 이용가능성을 상기 자원과 연관된 메타데이터에 기초하여 동적으로 검출하는 단계;
    상기 제2 소스가 상기 제1 소스보다 상기 장치와 더욱 효율적으로 접속되어 있는지를 판정하는 단계; 및
    상기 제2 소스가 상기 장치에 더 효율적으로 접속되어 있다면 상기 자원의 일부가 상기 장치로 복원된 후에 상기 자원의 남아 있는 부분을 상기 제2 소스로부터 상기 장치로 복원하는 단계
    를 포함하는, 장치를 복원하는 방법.
  2. 제1항에 있어서, 상기 검출은 상기 장치와 상기 제2 소스 사이의 네트워크 접속에 기초하고, 상기 장치는 상기 네트워크 접속을 인에이블하기 위해 상기 제2 소스의 접속 범위 내로 이동하는, 장치를 복원하는 방법.
  3. 제1항에 있어서, 상기 제1 소스는 별개의 네트워크 접속을 통해 상기 장치에 결합되어 있고, 상기 제2 소스와의 네트워크 접속이 상기 제1 소스와의 상기 별개의 네트워크 접속에 비해 높은 대역폭을 가진다면 상기 제2 소스가 상기 장치에 더욱 효율적으로 접속되어 있는 것으로 판정되는, 장치를 복원하는 방법.
  4. 제1항에 있어서,
    상기 제1 소스로부터 상기 장치로 자원을 복원하는 단계는,
    백업 서비스를 이용하여 상기 복원을 개시하는 단계; 및
    상기 백업 서비스를 이용하여 상기 장치에 대해 복원하기 위한 하나 이상의 자원을 결정하는 단계
    를 더 포함하는, 장치를 복원하는 방법.
  5. 제4항에 있어서, 상기 장치는 상기 장치의 소유자를 식별하는 계정 식별자와 연관되어 있고, 상기 개시하는 단계는 상기 계정 식별자를 상기 백업 서비스에 전송하는 단계를 포함하는, 장치를 복원하는 방법.
  6. 제4항에 있어서, 상기 메타데이터는 상기 자원들의 실제 콘텐츠를 기술하고, 상기 메타데이터는 상기 백업 서비스에 의해 추적되며, 상기 결정은 상기 자원들의 메타데이터에 기초하는, 장치를 복원하는 방법.
  7. 제4항에 있어서, 상기 자원들은 상기 제1 소스로부터의 자원을 포함하고,
    상기 제1 소스를 상기 자원의 복원을 위한 상기 백업 서비스를 이용하여 식별하는 단계를 더 포함하는, 장치를 복원하는 방법.
  8. 제7항에 있어서, 상기 제1 소스는 상기 백업 서비스를 통해 참조되는 네트워크 액세스 가능한 스토리지인, 장치를 복원하는 방법.
  9. 제8항에 있어서, 상기 제2 소스는 상기 장치에 무선으로 결합된 로컬 컴퓨터인, 장치를 복원하는 방법.
  10. 제7항에 있어서, 상기 제1 소스를 포함하는 복수의 소스들에 대한 참조들이 상기 백업 서비스를 통해 추적되고, 상기 제1 소스의 식별은 상기 장치의 사용자에 의해 인지됨 없이 투명한(transparent), 장치를 복원하는 방법.
  11. 제1항에 있어서, 상기 제2 소스로부터의 상기 자원의 남아 있는 부분의 복원을 위해 상기 제1 소스로부터 복원된 상기 자원의 일부를 추적하는 단계를 더 포함하는, 장치를 복원하는 방법.
  12. 제1항에 있어서,
    상기 제1 소스로부터 상기 장치로 자원을 복원하는 단계는,
    상기 제1 소스로부터의 복원을 중단하는 단계; 및
    상기 제1 소스로부터의 복원을 재개하는 단계
    를 더 포함하는, 장치를 복원하는 방법.
  13. 장치를 복원하는 방법으로서,
    백업 서비스를 이용하여 상기 장치로 복원할 제1 자원을 식별하는 단계;
    상기 제1 자원을 상기 장치로 복원하기 위해 제1 소스로부터 제2 소스로 스위칭하는 단계 - 상기 자원의 일부가 상기 제1 소스로부터 복원되고 상기 자원의 남아 있는 부분은 상기 장치로 복원되지 않음 -;
    제2 자원으로 상기 장치로 복원할 상기 제2 자원을 식별하는 단계; 및
    상기 제2 소스로부터 상기 장치로 상기 제2 자원을 복원하는 단계
    를 포함하는, 장치를 복원하는 방법.
  14. 제13항에 있어서,
    상기 백업 서비스를 이용하여 상기 장치로 복원할 제1 자원을 식별하는 단계는,
    상기 장치에 대해 상기 백업 서비스를 이용하여 복원 동작을 개시하는 단계; 및
    상기 장치로 상기 제1 자원을 복원할 상기 제1 소스를 결정하는 단계
    를 더 포함하는, 장치를 복원하는 방법.
  15. 제14항에 있어서, 상기 제1 자원은 상기 제1 자원의 실제 콘텐츠를 기술하는 메타데이터와 연관되어 있고, 상기 결정은 상기 메타데이터에 관하여 상기 백업 서비스와의 통신에 기초하는, 장치를 복원하는 방법.
  16. 제15항에 있어서, 상기 제1 소스로부터 상기 장치로 실제 콘텐츠의 일부를 로딩하는 단계를 더 포함하는, 장치를 복원하는 방법.
  17. 제15항에 있어서, 상기 메타데이터는 상기 백업 서비스에 유지되고, 상기 제1 소스의 결정은 상기 메타데이터에 기초하는, 장치를 복원하는 방법.
  18. 제17항에 있어서, 상기 메타데이터는 상기 제1 자원이 상기 제1 소스로부터 공개적으로 구매가 가능한 구매된 자산임을 나타내는, 장치를 복원하는 방법.
  19. 제16항에 있어서, 상기 제2 소스는 상기 장치에 로컬로 결합된 컴퓨터 장치이고, 상기 컴퓨터 장치는 상기 메타데이터를 유지하고, 상기 제1 소스로부터 제2 소스로 스위칭하는 단계는,
    상기 장치로 아직 복원되지 않은 상기 제1 자원의 남아 있는 부분을 추적하는 단계; 및
    상기 제1 자원의 남아 있는 부분을 상기 제2 소스로부터 로딩하는 단계
    를 더 포함하는, 장치를 복원하는 방법.
  20. 제14항에 있어서, 상기 제2 소스는 상기 제2 소스의 실제 콘텐츠를 기술하는 메타데이터와 연관되어 있고, 상기 메타데이터는 상기 제2 자원의 식별을 위해 상기 제2 소스에 유지되는, 장치를 복원하는 방법.
  21. 삭제
  22. 삭제
KR1020147000223A 2011-06-03 2012-05-22 장치를 복원하는 방법 KR101598725B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161493360P 2011-06-03 2011-06-03
US61/493,360 2011-06-03
US13/227,342 2011-09-07
US13/227,342 US8819471B2 (en) 2011-06-03 2011-09-07 Methods and apparatus for power state based backup
PCT/US2012/039009 WO2012166442A1 (en) 2011-06-03 2012-05-22 Methods and apparatus for power state based backup

Publications (2)

Publication Number Publication Date
KR20140031365A KR20140031365A (ko) 2014-03-12
KR101598725B1 true KR101598725B1 (ko) 2016-02-29

Family

ID=46201830

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147000223A KR101598725B1 (ko) 2011-06-03 2012-05-22 장치를 복원하는 방법

Country Status (7)

Country Link
US (3) US8819471B2 (ko)
EP (1) EP2716008B1 (ko)
JP (1) JP5851023B2 (ko)
KR (1) KR101598725B1 (ko)
CN (1) CN103703742B (ko)
AU (1) AU2012262732B2 (ko)
WO (1) WO2012166442A1 (ko)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003028183A1 (en) * 2001-09-28 2003-04-03 Commvault Systems, Inc. System and method for generating and managing quick recovery volumes
JP5440273B2 (ja) * 2010-03-09 2014-03-12 富士通株式会社 スナップショット管理方法、スナップショット管理装置、及びプログラム
US9411687B2 (en) 2011-06-03 2016-08-09 Apple Inc. Methods and apparatus for interface in multi-phase restore
US9465696B2 (en) 2011-06-03 2016-10-11 Apple Inc. Methods and apparatus for multi-phase multi-source backup
US8819471B2 (en) * 2011-06-03 2014-08-26 Apple Inc. Methods and apparatus for power state based backup
US8868859B2 (en) 2011-06-03 2014-10-21 Apple Inc. Methods and apparatus for multi-source restore
US8849819B2 (en) 2011-08-05 2014-09-30 Deacon Johnson System and method for controlling and organizing metadata associated with on-line content
US9838287B2 (en) 2012-01-27 2017-12-05 Microsoft Technology Licensing, Llc Predicting network data consumption relative to data usage patterns
US9489271B1 (en) * 2012-03-29 2016-11-08 Veritas Technologies Llc User interface for restoring databases
US9324034B2 (en) 2012-05-14 2016-04-26 Qualcomm Incorporated On-device real-time behavior analyzer
US9690635B2 (en) 2012-05-14 2017-06-27 Qualcomm Incorporated Communicating behavior information in a mobile computing device
US9298494B2 (en) 2012-05-14 2016-03-29 Qualcomm Incorporated Collaborative learning for efficient behavioral analysis in networked mobile device
US9609456B2 (en) 2012-05-14 2017-03-28 Qualcomm Incorporated Methods, devices, and systems for communicating behavioral analysis information
US9202047B2 (en) 2012-05-14 2015-12-01 Qualcomm Incorporated System, apparatus, and method for adaptive observation of mobile device behavior
KR20130136184A (ko) * 2012-06-04 2013-12-12 삼성전자주식회사 컨텐츠 백업을 위한 방법 및 그 전자 장치
US9003299B2 (en) 2012-06-08 2015-04-07 Apple Inc. Extensible application state preservation architecture
US9319897B2 (en) 2012-08-15 2016-04-19 Qualcomm Incorporated Secure behavior analysis over trusted execution environment
US9495537B2 (en) 2012-08-15 2016-11-15 Qualcomm Incorporated Adaptive observation of behavioral features on a mobile device
US9747440B2 (en) 2012-08-15 2017-08-29 Qualcomm Incorporated On-line behavioral analysis engine in mobile device with multiple analyzer model providers
US9330257B2 (en) 2012-08-15 2016-05-03 Qualcomm Incorporated Adaptive observation of behavioral features on a mobile device
US20140068212A1 (en) * 2012-09-04 2014-03-06 Microsoft Corporation Device backups and updates in view of data usage statistics
US9058126B2 (en) * 2012-09-10 2015-06-16 Texas Instruments Incorporated Nonvolatile logic array with retention flip flops to reduce switching power during wakeup
US20140075583A1 (en) * 2012-09-10 2014-03-13 Apple Inc. Management of media items
US9542423B2 (en) 2012-12-31 2017-01-10 Apple Inc. Backup user interface
US10089582B2 (en) 2013-01-02 2018-10-02 Qualcomm Incorporated Using normalized confidence values for classifying mobile device behaviors
US9684870B2 (en) 2013-01-02 2017-06-20 Qualcomm Incorporated Methods and systems of using boosted decision stumps and joint feature selection and culling algorithms for the efficient classification of mobile device behaviors
US9686023B2 (en) 2013-01-02 2017-06-20 Qualcomm Incorporated Methods and systems of dynamically generating and using device-specific and device-state-specific classifier models for the efficient classification of mobile device behaviors
TWI475402B (zh) * 2013-01-09 2015-03-01 Giga Byte Tech Co Ltd 遠端備份系統及其遠端備份方法
US9742559B2 (en) 2013-01-22 2017-08-22 Qualcomm Incorporated Inter-module authentication for securing application execution integrity within a computing device
US9491187B2 (en) 2013-02-15 2016-11-08 Qualcomm Incorporated APIs for obtaining device-specific behavior classifier models from the cloud
US9189533B2 (en) 2013-05-29 2015-11-17 Microsoft Technology Licensing, Llc Sync framework extensibility
CN104216793B (zh) * 2013-05-31 2017-10-17 国际商业机器公司 应用程序备份、恢复的方法及设备
CN103488550A (zh) * 2013-09-30 2014-01-01 华为技术有限公司 数据保护的处理方法和装置
CN103607600A (zh) * 2013-11-19 2014-02-26 乐视致新电子科技(天津)有限公司 云备份方法和装置
JP6435616B2 (ja) * 2014-03-17 2018-12-12 日本電気株式会社 ストレージ装置、ストレージシステム、ストレージシステムの制御方法および制御プログラム
US20160019224A1 (en) * 2014-07-18 2016-01-21 Commvault Systems, Inc. File system content archiving based on third-party application archiving rules and metadata
US9348689B2 (en) * 2014-10-07 2016-05-24 Belkin International Inc. Backup-instructing broadcast to network devices responsive to detection of failure risk
US11190400B2 (en) 2014-08-06 2021-11-30 Belkin International, Inc. Identifying and automating a device type using image data
JP6247612B2 (ja) * 2014-08-12 2017-12-13 株式会社Nttドコモ データ復元装置及びデータ復元方法
US9830782B2 (en) * 2014-09-02 2017-11-28 Apple Inc. Haptic notifications
JP5904514B1 (ja) 2014-10-28 2016-04-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想マシンのスナップショットに対して更新を自動的に適用する方法、並びに、そのコンピュータ・システム及びコンピュータ・システム用プログラム
KR20160061815A (ko) * 2014-11-24 2016-06-01 엘지전자 주식회사 무선 전력 전송장치 및 그것의 제어방법
US9891997B2 (en) 2014-12-17 2018-02-13 International Business Machines Corporation Energy conscious mobile device redundancy and recovery
JP6333188B2 (ja) * 2015-01-30 2018-05-30 東芝テック株式会社 情報処理装置及び情報処理プログラム
CN104615465B (zh) * 2015-01-30 2019-04-23 深圳市金立通信设备有限公司 一种终端
KR102297477B1 (ko) * 2015-02-17 2021-09-02 삼성전자주식회사 파일 다운로드 방법 및 장치
CN105450749A (zh) * 2015-12-01 2016-03-30 深圳市福云明网络科技有限公司 充电时拍摄装置自动上传视频或相片的方法
US9971645B2 (en) * 2016-08-23 2018-05-15 Seagate Technology Llc Auto-recovery of media cache master table data
US10691555B2 (en) * 2017-07-14 2020-06-23 Panasonic Intellectual Property Management Co., Ltd. Electronic Device
CN109151553B (zh) * 2018-09-29 2021-10-08 阿里巴巴(中国)有限公司 显示控制方法及装置、电子设备和存储介质
US11177859B2 (en) 2019-05-08 2021-11-16 Western Digital Technologies, Inc. Systems and methods for wireless charging and wireless data transfer
US11532950B2 (en) * 2019-05-08 2022-12-20 Western Digital Technologies, Inc. Systems and methods for wireless charging and wireless data transfer for multiple devices
US11681586B2 (en) 2019-06-28 2023-06-20 Rubrik, Inc. Data management system with limited control of external compute and storage resources
US11392460B2 (en) 2019-06-28 2022-07-19 Rubrik, Inc. Adaptable multi-layer storage with controlled restoration of protected data
US11080142B2 (en) * 2019-06-28 2021-08-03 Rubrik, Inc. Preservation of electronic messages between snapshots
US11157451B2 (en) 2019-06-28 2021-10-26 Rubrik, Inc. Adaptable multi-layered storage for deduplicating electronic messages
CN110837439A (zh) * 2019-09-30 2020-02-25 华为终端有限公司 一种文件备份方法、终端与通信系统
US11588847B2 (en) * 2020-12-15 2023-02-21 International Business Machines Corporation Automated seamless recovery
CN114328029B (zh) * 2022-03-02 2022-06-03 苏州浪潮智能科技有限公司 一种应用资源的备份方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008181287A (ja) 2007-01-24 2008-08-07 Hitachi Ltd データのリカバリを制御する装置及び方法
JP2009238227A (ja) 2008-03-26 2009-10-15 Symantec Corp 失敗した復元動作においてファイルの破損を防ぐためのボリュームスナップショットの使用
JP2010282468A (ja) 2009-06-05 2010-12-16 Hitachi Ltd 計算機システム及び障害復旧方法

Family Cites Families (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69231873T2 (de) 1992-01-08 2002-04-04 Emc Corp Verfahren zur Synchronisierung von reservierten Bereichen in einer redundanten Speicheranordnung
US5241668A (en) * 1992-04-20 1993-08-31 International Business Machines Corporation Method and system for automated termination and resumption in a time zero backup copy process
US5737557A (en) 1995-05-26 1998-04-07 Ast Research, Inc. Intelligent window user interface for computers
US6061409A (en) 1996-06-27 2000-05-09 Matsushita Electric Industrial Co., Ltd. Synchronization recovery for a mobile telephone
JPH11134234A (ja) * 1997-08-26 1999-05-21 Reliatec Ltd バックアップ・リストア方法およびその制御装置,並びにバックアップ・リストアプログラムを記録したコンピュータ読み取り可能な記録媒体
US6141771A (en) 1998-02-06 2000-10-31 International Business Machines Corporation Method and system for providing a trusted machine state
US7395282B1 (en) 1999-07-15 2008-07-01 Commvault Systems, Inc. Hierarchical backup and retrieval system
US6851073B1 (en) 1999-07-26 2005-02-01 Microsoft Corporation Extensible system recovery architecture
US20070033252A1 (en) 2000-03-30 2007-02-08 Combest Ricky F Dynamic virtual network and method
WO2002059731A2 (en) 2000-11-17 2002-08-01 Links Point, Inc. Methods and systems for reducing power consumption in computer data communications
US7216136B2 (en) 2000-12-11 2007-05-08 International Business Machines Corporation Concurrent collection of cyclic garbage in reference counting systems
US7146524B2 (en) 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US7237075B2 (en) 2002-01-22 2007-06-26 Columbia Data Products, Inc. Persistent snapshot methods
US7291480B2 (en) 2002-03-13 2007-11-06 Black Jennifer A Device and method for detecting antibiotic-inactivating enzymes
US8150937B2 (en) 2004-10-25 2012-04-03 Apple Inc. Wireless synchronization between media player and host device
US20030220913A1 (en) 2002-05-24 2003-11-27 International Business Machines Corporation Techniques for personalized and adaptive search services
EP1674998A3 (en) * 2002-06-21 2013-05-22 Sharp Kabushiki Kaisha Information processing apparatus, information equipment, information processing system, automatic backup method, data transmission and reception method, automatic backup program, data transmission and reception program, and record medium having the programs recorded thereon
JP3974538B2 (ja) 2003-02-20 2007-09-12 株式会社日立製作所 情報処理システム
US7240219B2 (en) 2003-05-25 2007-07-03 Sandisk Il Ltd. Method and system for maintaining backup of portable storage devices
US7328366B2 (en) 2003-06-06 2008-02-05 Cascade Basic Research Corp. Method and system for reciprocal data backup
US7143117B2 (en) * 2003-09-25 2006-11-28 International Business Machines Corporation Method, system, and program for data synchronization by determining whether a first identifier for a portion of data at a first source and a second identifier for a portion of corresponding data at a second source match
US7225208B2 (en) 2003-09-30 2007-05-29 Iron Mountain Incorporated Systems and methods for backing up data files
ATE511677T1 (de) 2003-12-18 2011-06-15 Research In Motion Ltd System und verfahren zur verwaltung digitaler berechtigungen
JP2005222171A (ja) 2004-02-03 2005-08-18 Nec Access Technica Ltd 携帯電話機
US7526768B2 (en) * 2004-02-04 2009-04-28 Microsoft Corporation Cross-pollination of multiple sync sources
US7206911B2 (en) 2004-02-25 2007-04-17 International Business Machines Corporation Method, system, and program for a system architecture for an arbitrary number of backup components
TWI278199B (en) * 2004-03-26 2007-04-01 Quanta Comp Inc Deployment method and system for multiple remote computers
US7330997B1 (en) 2004-06-03 2008-02-12 Gary Odom Selective reciprocal backup
US7343518B2 (en) 2004-06-23 2008-03-11 Intel Corporation Method for data backup of computing platforms that are occasionally connected
US7437388B1 (en) 2004-12-21 2008-10-14 Symantec Corporation Protecting data for distributed applications using cooperative backup agents
US7506010B2 (en) 2005-02-08 2009-03-17 Pro Softnet Corporation Storing and retrieving computer data files using an encrypted network drive file system
US20080065637A1 (en) * 2005-04-14 2008-03-13 Emc Corporation Locating last processed data
US7590668B2 (en) * 2005-04-15 2009-09-15 Microsoft Corporation Pausable backups of file system items
US8103632B2 (en) 2005-04-22 2012-01-24 Microsoft Corporation Self-contained partial database backups
US7779069B2 (en) 2005-09-09 2010-08-17 Soonr Corporation Network adapted for mobile devices
KR100678921B1 (ko) 2005-10-18 2007-02-05 삼성전자주식회사 다중 서버 환경에 적합한 디바이스를 클라이언트로 하여동기화를 수행하는 방법 및 장치
US8341127B1 (en) 2006-02-02 2012-12-25 Emc Corporation Client initiated restore
US7899418B2 (en) 2006-02-22 2011-03-01 Fujifilm Corporation Mobile device and wireless communication apparatus
US20070204003A1 (en) * 2006-02-28 2007-08-30 Maven Networks, Inc. Downloading a file over HTTP from multiple servers
JP2007280323A (ja) 2006-04-12 2007-10-25 Hitachi Ltd 記憶システム及びデータ管理方法
US20070260759A1 (en) 2006-04-14 2007-11-08 Scott Willie L Ii Apparatus, system, and method for complete data migration from a wireless communication device
US20070294546A1 (en) 2006-06-19 2007-12-20 Apple Computer, Inc. Host device shutdown system
US20080104145A1 (en) 2006-06-23 2008-05-01 Derrell Lipman Method and appartus for backup of networked computers
AU2007295949B2 (en) 2006-09-12 2009-08-06 Adams Consulting Group Pty. Ltd. Method system and apparatus for handling information
US8117163B2 (en) 2006-10-31 2012-02-14 Carbonite, Inc. Backup and restore system for a computer
WO2008082441A1 (en) 2006-12-29 2008-07-10 Prodea Systems, Inc. Display inserts, overlays, and graphical user interfaces for multimedia systems
US8468244B2 (en) 2007-01-05 2013-06-18 Digital Doors, Inc. Digital information infrastructure and method for security designated data and with granular data stores
WO2008086250A1 (en) * 2007-01-07 2008-07-17 Apple Inc. Prioritized data synchronization with host device
US8487583B2 (en) * 2007-03-29 2013-07-16 Nokia Corporation Connection to a USB device dependent on detected battery criterion
US8307004B2 (en) * 2007-06-08 2012-11-06 Apple Inc. Manipulating electronic backups
US8554784B2 (en) 2007-08-31 2013-10-08 Nokia Corporation Discovering peer-to-peer content using metadata streams
US20090089537A1 (en) 2007-09-28 2009-04-02 Sun Microsystems, Inc. Apparatus and method for memory address translation across multiple nodes
US8339105B2 (en) * 2007-10-17 2012-12-25 Freescale Semiconductor, Inc. Power management arrangement for a mobile device
US20090144341A1 (en) 2007-12-03 2009-06-04 Apple Inc. Ad Hoc Data Storage Network
FR2924839B1 (fr) * 2007-12-06 2010-03-19 Agematis Procede de sauvegarde automatique de donnees numeriques conservees en memoire dans une installation informatique, support de donnees lisible par un ordinateur, installation informatique et systeme pour la mise en oeuvre de ce procede
EP2073461A1 (en) 2007-12-18 2009-06-24 Alcatel Lucent Process for delivering at least one data stream from a data source system to a data receiver system through a network
US20080189298A1 (en) 2008-04-02 2008-08-07 Steve Cha Method and apparatus for wireless access to personalized multimedia at any location
US8583602B2 (en) 2008-06-05 2013-11-12 Palm, Inc. Restoring of data to mobile computing device
US8250031B2 (en) 2008-08-26 2012-08-21 Hitachi, Ltd. Low traffic failback remote copy
US20100052620A1 (en) * 2008-09-03 2010-03-04 Intersil Americas Inc. Battery charger ic including built-in usb detection
CN101741601B (zh) * 2008-11-06 2012-02-15 上海市医疗保险信息中心 结构化灾难备份系统和备份方法
US8161233B2 (en) 2009-05-13 2012-04-17 Computer Associates Think, Inc. Multi-stream restore system and method
US8612439B2 (en) 2009-06-30 2013-12-17 Commvault Systems, Inc. Performing data storage operations in a cloud storage environment, including searching, encryption and indexing
US8228753B2 (en) * 2009-07-29 2012-07-24 Stec, Inc. System and method of maintaining data integrity in a flash storage device
US8856080B2 (en) 2009-10-30 2014-10-07 Microsoft Corporation Backup using metadata virtual hard drive and differential virtual hard drive
US8380678B2 (en) 2009-11-24 2013-02-19 Symantec Corporation Tracking files which have been processed by a backup or a restore operation
US8694469B2 (en) 2009-12-28 2014-04-08 Riverbed Technology, Inc. Cloud synthetic backups
US9386098B2 (en) 2010-06-11 2016-07-05 Fidelithon Systems, Llc Smartphone management system and method
US8819471B2 (en) * 2011-06-03 2014-08-26 Apple Inc. Methods and apparatus for power state based backup

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008181287A (ja) 2007-01-24 2008-08-07 Hitachi Ltd データのリカバリを制御する装置及び方法
JP2009238227A (ja) 2008-03-26 2009-10-15 Symantec Corp 失敗した復元動作においてファイルの破損を防ぐためのボリュームスナップショットの使用
JP2010282468A (ja) 2009-06-05 2010-12-16 Hitachi Ltd 計算機システム及び障害復旧方法

Also Published As

Publication number Publication date
US8819471B2 (en) 2014-08-26
KR20140031365A (ko) 2014-03-12
US20130086408A1 (en) 2013-04-04
JP2014519121A (ja) 2014-08-07
EP2716008A1 (en) 2014-04-09
AU2012262732A1 (en) 2014-01-16
JP5851023B2 (ja) 2016-02-03
US20120311366A1 (en) 2012-12-06
AU2012262732B2 (en) 2015-05-28
WO2012166442A1 (en) 2012-12-06
US8689034B2 (en) 2014-04-01
EP2716008B1 (en) 2015-04-15
CN103703742A (zh) 2014-04-02
US8255731B1 (en) 2012-08-28
CN103703742B (zh) 2017-04-05

Similar Documents

Publication Publication Date Title
KR101598725B1 (ko) 장치를 복원하는 방법
KR101602584B1 (ko) 복수-소스 복원을 위한 방법 및 장치
KR101598724B1 (ko) 복수-단계 복수-소스 백업을 위한 방법 및 장치
US9904597B2 (en) Methods and apparatus for multi-phase restore

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 4