`Dickenson
`
`111111111111111111111111111111111111111111111111111111111111111111111111111
`US006738799B2
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 6, 738,799 B2
`*May 18, 2004
`
`(54) METHODS AND APPARATUSES FOR FILE
`SYNCHRONIZATION AND UPDATING
`USING A SIGNATURE LIST
`
`(75)
`
`Inventor: Peter Dickenson, Williamsburg, VA
`(US)
`
`(73) Assignee: Symantec Corporation, Cupertino, CA
`(US)
`
`( *) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`5,794,258 A
`5,819,274 A
`
`8/1998 Ishikawa et a!. ............ 345/751
`10/1998 Jackson, Jr.
`................. 707/10
`
`(List continued on next page.)
`
`FOREIGN PATENT DOCUMENTS
`
`wo
`wo
`
`94/23377 A1
`94/25923 A1
`
`10/1994
`11/1994
`
`OTHER PUBLICATIONS
`
`Schneier, B., "One-Way Hash Functions," Dr. Dobb's Jour(cid:173)
`nal, vol. 16, No. 9, pp. 148-151 (Sept. 1991).
`
`(List continued on next page.)
`
`This patent is subject to a terminal dis(cid:173)
`claimer.
`
`Primary Examiner---Bharat Barot
`(74) Attorney, Agent, or Firm---Fliesler Meyer LLP
`
`(21) Appl. No.: 10/452,156
`
`(22)
`
`Filed:
`
`Jun. 2, 2003
`
`(65)
`
`Prior Publication Data
`
`US 2003/0200207 A1 Oct. 23, 2003
`
`(63)
`
`(51)
`(52)
`
`(58)
`
`(56)
`
`Related U.S. Application Data
`
`Continuation of application No. 09/303,958, filed on May 3,
`1999, now Pat. No. 6,574,657.
`
`Int. Cl? . ... ... .. ... ... ... ... .. ... ... ... ... ... .. ... ... .. G06F 15/16
`U.S. Cl. ....................... 709/203; 709/217; 709/219;
`709/229; 707 /1; 707/203
`Field of Search ................................. 709/200-203,
`709/216-219, 229, 231-232, 235-237;
`717/10-12; 714/6-7; 707/1, 8-10, 200--204
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,008,853 A
`5,694,596 A
`5,729,735 A
`5,752,039 A
`5,787,247 A
`
`4/1991 Bly et a!.
`................... 345/751
`12/1997 Campbell ................... 709/215
`3/1998 Meyering .................... 707/10
`5/1998 Tanimura ..................... 717/11
`7/1998 Norin et a!.
`................ 709/220
`
`(57)
`
`ABSTRACT
`
`A server generates an update file for transmission to a client
`that permits the client to generate a copy of a current version
`of a subscription file from a copy of an earlier version of the
`subscription file. For each segment of the current version of
`the subscription file, the server searches an earlier version of
`a signature list for an old segment signature which matches
`a new segment signature corresponding to the segment.
`When a match is detected, the server writes a command in
`the update file for the client to copy an old segment of the
`client's copy of the earlier version of the subscription file
`into the client's copy of the current version of the subscrip(cid:173)
`tion file, where the old segment corresponds to the segment
`for which a match was detected. When no match is detected,
`the server writes a command into the update file for the
`client to insert a new segment of the current version of the
`subscription file into the client's copy of the current version
`of the subscription file, where the new segment of the
`current version of the subscription file is written into the
`update file. The update file is only generated when the server
`determines the subscription file has changed. The server
`periodically monitors the subscription file to determine if it
`has been altered before generating an update file.
`
`46 Claims, 12 Drawing Sheets
`
`SAP Exhibit 1001, Page 1 of 25
`
`
`
`US 6, 738,799 B2
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`OTHER PUBLICATIONS
`
`11/1998 Nakagawa eta!. ......... 707/203
`5,835,911 A
`1!1999 Maimone ....................... 707/1
`5,864,837 A
`3/1999 Nielsen ...................... 707/201
`5,890,164 A
`5,913,032 A
`6/1999 Schwartz et a!.
`........... 709/213
`1!2000 Freivald et a!. ............. 709/218
`6,012,087 A
`1!2000 Fernandes ................... 709/203
`6,014,135 A
`6,058,428 A
`5!2000 Wang et a!.
`................ 709/232
`6/2000 Doyle ........................ 709/203
`6,073,007 A
`8/2000 Cane eta!. ................. 707/204
`6,101,507 A
`11/2000 Pedrizetti eta!. ............. 717/11
`6,151,708 A
`........... 709/203
`12/2000 Traversal et a!.
`6,161,125 A
`6,327,617 B1 * 12/2001 Fawcett ...................... 709/219
`6,574,657 B1 * 6/2003 Dickinson ................... 709/203
`
`Diem, D., "Wireless Data and Minimum Airtime Software,"
`Dr. Dobb's Journal, pp. 1-14 (Dec. 1993).
`Coppieters, K., "A Cross-Platform Binary Diff," Dr. Dobb's
`Journal, pp. 1-7 (May 1995).
`"Keeping Road Warriors on Track," Mind Your Own Busi(cid:173)
`ness, Market Place Publishing, UK, vol. 21, No. 6, p. 49
`(Jun. 1998).
`Freed, Les "Symantec Mobile Update," First Looks section
`of PC Magazine Online, http://www.zdnet.com/pcmag/first(cid:173)
`looks/9806/f980610a.htm (Jun. 10, 1998).
`* cited by examiner
`
`SAP Exhibit 1001, Page 2 of 25
`
`
`
`U.S. Patent
`
`May 18,2004
`
`Sheet 1 of 12
`
`US 6, 738,799 B2
`
`DATA
`ADDRESS
`CONTROL
`
`(106
`
`DISPLAY
`MONITOR
`
`~
`
`-
`
`.--
`
`I
`I
`'--
`
`(107
`
`KEYBOARD J
`
`_C_ 108_
`
`MODEM
`
`NETWORK
`INTERFACE
`
`"'- 109
`
`100
`-
`
`102 ~
`
`RAM
`
`101~
`
`103 -..___./"""
`
`ROM
`
`104 ---------
`
`MICRO
`PROCESSOR
`
`/
`
`105
`
`__.....,.
`
`r--.-.
`~ HARD
`DISK _.,..
`
`FIG. 1
`
`SAP Exhibit 1001, Page 3 of 25
`
`
`
`U.S. Patent
`
`May 18,2004
`
`Sheet 2 of 12
`
`US 6, 738,799 B2
`
`0:1
`WI
`f-
`::::JI
`a...
`C')
`~I ...-0
`or-"~
`ol
`c::r::
`~I
`ffil
`I
`
`Cf)
`
`I
`I
`I
`I_
`
`w
`>
`c::r::
`0
`:::£ a:
`0
`~ w z
`
`<0
`0
`N
`
`N
`0
`N
`
`L()
`0
`N
`
`co
`0
`N
`
`I
`L ___ _
`
`SAP Exhibit 1001, Page 4 of 25
`
`
`
`A1
`
`A2
`
`A3
`
`A4
`
`AS
`
`A6
`
`301
`
`302
`
`303
`
`304
`
`305
`
`306
`
`I SIG,(A 1) I S1GfA2) I SIG/A3) I SIG~A4) I SIG,(A5) I SIG\(A6)
`
`I
`
`311
`
`312
`
`313
`
`314
`
`315
`
`316
`
`FIG. 3
`
`d .
`\Jl .
`~
`~ ......
`~ =
`......
`
`~
`~
`'-<
`'"""'
`~CIO
`N c c
`
`~
`
`'JJ. =(cid:173)~
`~ .....
`
`~
`0 ......,
`'"""' N
`
`e
`rJ'l
`0'1
`':...l
`~
`00
`':...l
`\0
`\0
`~
`N
`
`SAP Exhibit 1001, Page 5 of 25
`
`
`
`411
`412
`413
`414
`415
`416
`
`SEGMENT LOCATION
`
`SEGMENT SIZE
`
`LOC(A1)~
`LOC(A2) ~
`LOC(A3) ~
`LOC(A4) \ \ \
`LOC(A5) \\\ 1
`\
`LOC(A6) \\
`
`SIZE(A1) /)
`SIZE(A2) /
`SIZE(A3) ___/
`SIZE(A4) __/
`SIZE(A5) __/ )
`SIZE(A6) ___/'
`
`A1
`A2
`A3
`A4
`AS
`A6
`
`SEGMENT SIGNATURE
`-
`-
`-
`- -
`- -
`
`SIG(A 1)
`SIG(A2)
`SIG(A3)
`SIG(A4)
`SIG(A5)
`SIG(A6)
`
`-
`-
`
`401
`402
`403
`404
`405
`406
`
`FIG. 4
`
`Ann
`
`311
`312
`313
`
`314
`315
`
`316
`
`d .
`\Jl .
`~
`~ ......
`~ =
`......
`
`~
`~
`'-<
`'"""'
`~CIO
`N c c
`
`~
`
`'JJ. =-~
`~ .....
`
`~
`0 ......,
`'"""' N
`
`e
`rJ'l
`0'1
`
`~
`00
`~
`\0
`\0
`~
`N
`
`SAP Exhibit 1001, Page 6 of 25
`
`
`
`U.S. Patent
`
`May 18,2004
`
`Sheet 5 of 12
`
`US 6, 738,799 B2
`
`START
`
`501
`
`READ SUBSCRIPTION FILE
`FROM NETWORK DRIVE
`
`NEW SUBSCRIPTION FILE?
`
`f----- 502
`
`503
`
`NO
`
`504
`DETERMINE MOST EFFICIENT SEGMENT ~
`DELIMITER
`
`YES
`
`1..., ,-
`
`RETRIEVE DELIMITER
`
`SCAN FILE FOR DELIMITER OR END OF FILE
`TO DETERMINE NEXT SEGMENT
`
`v5o5
`
`v--506
`.._
`"'
`
`507
`COMPUTE SIGNATURE FOR SEGMENT ~
`
`508
`ADD SIGNATURE TO SIGNATURE LIST ~
`
`SEGMENT ENDS WITH DELIMITER?
`
`NO
`
`1J
`( DONE
`
`510
`
`FIG. 5
`
`509
`]YES
`)
`
`500
`-
`
`SAP Exhibit 1001, Page 7 of 25
`
`
`
`d .
`\Jl .
`~
`~ ......
`~ =
`......
`
`~
`~
`'-<
`'"""'
`~CIO
`N c c
`
`~
`
`'JJ. =(cid:173)~
`~ .....
`0'1
`0 ......,
`'"""' N
`
`e
`
`rJ'l
`0'1
`':...l
`~
`00
`':...l
`\0
`\0
`~
`N
`
`81
`
`82
`
`83
`
`84
`
`85
`
`86
`
`87
`
`601
`
`602
`
`603
`
`604
`
`605
`
`606
`
`607
`
`B6) I SIG~B7)
`
`1(
`
`5) I SIG
`
`I slq(B1) I SIG(~2) I SI~(B3) I SI~(B4) I SIG(
`
`1B
`
`611
`
`612
`
`613
`
`614
`
`615
`
`616
`
`617
`
`FIG. 6
`
`SAP Exhibit 1001, Page 8 of 25
`
`
`
`711
`712
`713
`714
`715
`716
`717
`
`SEGMENT LOCATION
`
`LOC(B1) ~
`LOC(82) ~
`LOC(83) ~
`LOC(B4) ~ \ 1 \
`LOC(B5)\ \I
`LOC(B6) \\\\
`LOC(B7) \
`
`81
`82
`83
`84
`85
`B6
`87
`
`SEGMENT SIZE
`I
`SIZE(81) / /
`SIZE(82) / )
`SIZE(83) _/ J I
`SIZE(84) __/)
`SIZE(B5) _/)
`SIZE(B6) _/)
`SIZE(87) _____/
`
`SEGMENT SIGNATURE
`-
`-
`-
`
`SIG(81)
`SIG(82)
`SIG(83)
`SIG(B4)
`SIG(B5)
`SIG(B6)
`SIG(B7)
`
`-
`
`-
`-
`-
`
`721
`722
`723
`724
`725
`7?h
`727
`
`FIG. 7
`
`I
`
`700
`
`701
`702
`703
`704
`705
`706
`707
`
`d .
`\Jl .
`~
`~ ......
`~ = ......
`
`~
`~
`'-<
`'"""'
`~CIO
`N c c
`
`~
`
`'JJ. =-~
`~ .....
`-..J
`0 ......,
`'"""' N
`
`e
`rJ'l
`-..a-..
`tj
`00
`':...l
`\0
`\0
`~
`N
`
`SAP Exhibit 1001, Page 9 of 25
`
`
`
`U.S. Patent
`US. Patent
`
`May 18,2004
`May 18, 2004
`
`Sheet 8 of 12
`Sheet 8 of 12
`
`US 6, 738,799 B2
`US 6,738,799 B2
`
`g!
`
`co
`(!J
`LL
`
`I
`I
`I
`
`l.{')
`co
`
`"""'"
`a::l
`
`I
`I
`I
`I_ - - - - -
`
`N
`co
`
`u.J
`~
`<l:
`(/)
`
`u.J
`~
`<l:
`(/)
`
`III
`
`r-
`co
`
`(0 co
`
`Cl
`u.J
`C!J
`z
`<(
`I
`l.{')
`co
`
`(.)
`
`$
`u.J
`z
`
`~ co
`
`u.J
`~
`<(
`(/)
`
`Cl
`u.J
`C!J z
`<(
`I
`c..:>
`
`(V')
`a::l
`
`N
`m
`
`u.J
`~
`<(
`(/)
`~ co
`
`
`~
`
`0
`00
`
`_l - - - ....,
`
`m_>_<mm__>_<mQmwz<zo
`
`
`.5mmmm IIII
`
`>>m2mSEmemoz<1om2<m
`vmmmmmE
`
`SAP Exhibit 1001, Page 10 0f 25
`
`SAP Exhibit 1001, Page 10 of 25
`
`
`
`f. 950
`, - - - - - - - - - - - - - - - - - - - - - - - - ---~
`I
`I
`I I A1
`I A6
`I A2
`I A3
`I A4
`I AS
`I
`901~
`I
`I
`I
`I
`I
`I I C1
`I
`903~
`SAME
`I
`I
`L------~------
`i
`
`I
`
`I
`
`r9~0
`I C3
`I C2
`I CHANGED I SAME
`
`rgj.j
`
`I C4
`I
`
`NEW
`
`I ~3
`I C6
`I C7
`I C5
`I CHANGED I SAME
`I SAME
`
`- - - - - - - - - -
`
`82
`
`902 ..____.
`
`900
`
`FIG. 9
`
`d .
`\Jl .
`~
`~ ......
`~ =
`......
`
`~
`~
`'-<
`'"""'
`~CIO
`N c c
`
`~
`
`'JJ. =(cid:173)~
`~ ......
`'0
`0 ......,
`'"""' N
`
`e
`
`rJ'l
`0'1
`
`~
`00
`~
`\0
`\0
`~
`N
`
`SAP Exhibit 1001, Page 11 of 25
`
`
`
`U.S. Patent
`
`May 18,2004
`
`Sheet 10 of 12
`
`US 6, 738,799 B2
`
`( START
`
`1001
`
`~
`~
`COMPARE NEW SEGMENT SIGNATURE
`TO OLD SEGMENT SIGNATURE
`
`MATCH
`
`11t
`
`NO MATCH
`
`.£1002
`
`WRITE COMMAND IN UPDATE FILE
`TO COPY OLD SEGMENT
`
`v 1003
`
`YES
`
`1004
`LAST OLD SEGMENT SIGNATURE l~
`)
`IN OLD SIGNATURE LIST?
`
`NO
`
`It
`
`NEXT OLD SEGMENT SIGNATURE
`
`l----' 1005
`
`~ WRITE COMMAND IN UPDATE FILE
`TO INSERT NEW SEGMENT
`
`~ 1006
`
`"'
`
`LAST NEW SEGMENT SIGNATURE
`IN NEW SIGNATURE LIST?
`
`NO
`
`1it
`
`1009
`DONE
`
`) YES
`)
`
`1007
`
`NEXT NEW SEGMENT SIGNATURE
`
`1----- 1 008
`
`FIG. 10
`
`1000
`
`SAP Exhibit 1001, Page 12 of 25
`
`
`
`U.S. Patent
`
`May 18,2004
`
`Sheet 11 of 12
`
`US 6, 738,799 B2
`
`UPDATE FILE FOR <FILENAME>
`
`COPY
`LOC(A1) SIZE(A1)
`INSERT <CONTENTS OF 82>
`COPY
`LOC(A3) SIZE(A3)
`INSERT <CONTENTS OF 84>
`INSERT <CONTENTS OF 85>
`COPY
`LOC(A5) SIZE(A5)
`LOC(A6) SIZE(A6)
`COPY
`
`f.--
`
`r - - -
`
`1101
`~
`1102
`1103
`1104
`i'---:
`1105
`~
`1106
`~
`1107
`
`~-
`
`1100
`
`Fl G. 11
`
`SAP Exhibit 1001, Page 13 of 25
`
`
`
`1206
`
`1207
`
`1208
`
`~ FILE
`FILE
`st~~~R~ SERVER SERVER
`I
`
`F~,;E
`SE~~~Rllst~~ER
`
`( 1204
`
`12~
`FILE
`SERVER
`(NOS)
`
`(_ 1205
`co3
`FILE
`SERVER
`(BINDARY)
`
`~WAN 1217
`
`st~~EER 1/ 1209
`NT
`
`LAN 1216
`
`/~~~
`
`1210
`
`1211
`
`1212
`
`I ( 1201
`SERVER
`COMPUTER
`
`1213
`
`1221
`
`220
`1
`
`...-----'-----.l.-
`
`1200
`
`FIG. 12
`
`REMOTE
`
`REMOTE
`
`REMOTE
`
`I
`
`\
`
`I
`
`\
`
`I
`
`\
`
`d .
`\Jl .
`~
`~ ......
`~ = ......
`
`~
`~
`'-<
`"""
`N c c
`
`~CIO
`
`~
`
`'JJ. =-~
`~ .....
`""" N
`0 ......,
`""" N
`
`e
`
`rJ'l
`0'1
`':...l
`~
`00
`':...l
`\0
`\0
`~
`N
`
`SAP Exhibit 1001, Page 14 of 25
`
`
`
`US 6,738,799 B2
`
`1
`METHODS AND APPARATUSES FOR FILE
`SYNCHRONIZATION AND UPDATING
`USING A SIGNATURE LIST
`
`PRIORITY CLAIMS
`
`This application is a continuation of U.S. patent applica(cid:173)
`tion Ser. No. 09/303,958, filed May 3, 1999 (now U.S. Pat.
`No. 6,574,657).
`
`CROSS-REFERENCE TO RELATED
`APPLICATION
`
`This Application is related to the following application,
`which is incorporated herein by reference: U.S. patent
`application Ser. No. 09/304,295, entitled "Methods and
`Apparatuses for Single Connection File Synchronization
`and Workgroup File Update", filed May 3, 1999 (now U.S.
`Pat. No. 6,654,746).
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`The present invention relates to the field of personal
`computers which access files on network drives and which
`utilize electronic mail systems. Specifically, the present
`invention involves the synchronization of the local copies of
`files on user's client computer hard disk to the current
`versions of the files on a network drive.
`2. Discussion of the Related Art
`As more and more business information moves from
`analog to digital formats, the relatively newfound ability to
`create, amend, and revise information spontaneously and
`frequently has brought with it challenges for corporate users.
`Revenue results can now be easily aggregated and updated
`in near real time, sales presentations can be amended
`regularly, and changes made to business documents.
`However, causing these changes to effectively trickle down
`through the organization without causing a digital flood is a
`challenge.
`Companies have responded to the threat by carefully
`creating structures for organizing, storing, and sharing these
`electronic files. Organizations have moved from file servers
`to intranet sites to combinations of both to meet the need of
`the corporate user. While these structures are clearly effec(cid:173)
`tive means of storing, sharing, and organizing information,
`they do not address the fact that users have very individual
`information needs. They also do not resolve the obstacle
`users face who do not have the time to spend looking for
`changes. An effective paradigm for addressing the problem
`of individual needs and delivering changes to documents can
`be found in the emerging category of "Push Technology."
`As its simplest definition, push is the process of auto(cid:173)
`matically delivering user-requested information electroni(cid:173)
`cally. It is not an application, but merely a function or feature
`in a product. There are clear distinctions between the three
`different categories of push-based application: content,
`software, and document.
`Content push is the first mover. Conventional products
`focus on delivering breaking news and information to user
`desktops automatically. Instead of the user constantly surf(cid:173)
`ing multiple Web sites for stock quotes, news, weather, etc.,
`conventional products aggregate and broadcast information
`automatically according to individual user preferences.
`Many companies incorporate "push" functionality into their
`products.
`Following acceptance by hundreds of thousands of early
`adopters, many push-based applications started the move
`
`30
`
`2
`into the corporate world. For IS Managers, "push-based
`technologies" were seen as an uncontrollable avenue for
`terabytes of graphics and HTML to come through the
`corporate firewall and network, filling local hard drives.
`Microsoft and Netscape entered the fray with their own
`"push" clients — IE 4.0 Active Desktop and Com(cid:173)
`municator's Netcaster, respectively. Rather than spurring the
`growth of content delivery, however, the effect of the push
`entries has been to call into question the value of delivering
`10 Web content to user hard drives. The value is questioned not
`only in terms of relevance, but also its effects and load on
`corporate networks. The automated information flow
`becomes a flood through the Internet gate-ways of corpora(cid:173)
`tions threatening the stability and reliability of the network
`15 infrastructure itself.
`Within the corporate world, the future of content push
`remains in limbo. Uncertainty over standards and overall
`value have caused the market to trip on the initial momen(cid:173)
`tum and slow to a crawl. However, what is questioned here
`20 is not the value of automating delivery or "push," but rather
`the value of what is being pushed.
`Software Push is another important objective. Microsoft
`and Marimba, among others, have recognized the impor-
`25 tance and potential of "Electronic Software Distribution"
`(ESL) or "software push" as a way of addressing the need to
`seamlessly deliver software updates across the network with
`the goal of directly impacting the total cost of ownership.
`The requirements for software distribution are dramatically
`different from content distribution. For one, the "content" in
`software delivery is, by its very nature, deemed critical. To
`reduce the impact of supporting multiple versions of prod(cid:173)
`ucts across the corporate network, near-simultaneous
`deployment is imperative. Companies that do not use some
`form of software push technologies require dedicated indi(cid:173)
`viduals to make the rounds updating software by reinstalling
`or applying patches for each personal computer and laptop.
`Rather than aggregating and displaying information, soft(cid:173)
`ware push transparently delivers one specific piece of infor-
`40 mation and applies it to user systems or applications. Files
`tend to be very large and the delivery of these files must be
`well-managed. Incremental downloading becomes impor(cid:173)
`tant to reduce frustration and bandwidth associated with
`broken and lost connections. Management of software
`45 updating also needs to be centralized and MIS-controlled. In
`addition, the primary value of the application is to IS
`personnel and only indirectly to for the end-users.
`A good example of software push is Marimba's Castanet,
`which allows 1 ava applications to be distributed and updated
`50 seamlessly and automatically without user intervention. This
`same approach to Java programming can be, and is being,
`applied to C-language programs as well. The case of content
`push vs. software push makes it clear that the importance
`lies in the distinction between the data being delivered
`55 — and not the delivery mechanism itself.
`The Next Phase is Electronic Document Delivery. The
`final frontier in digital push is "electronic document deliv(cid:173)
`ery"or EDD. It deals with delivering changes or "updates"
`to the same physical files (like software push), but the files
`60 themselves are highly personalized (like content push).
`Different from content push, these files exist in the form of
`sales presentations (PowerPoint), spreadsheets (Excel and
`Lotus 1,2,3), and reports and plans (Word or WordPerfect).
`These are the types of documents for which companies
`65 currently invest millions of dollars in file servers and intra(cid:173)
`net technologies in order to share among respective work(cid:173)
`groups. The important distinction here between content and
`
`35
`
`SAP Exhibit 1001, Page 15 of 25
`
`
`
`US 6,738,799 B2
`
`3
`document push is the fact that EDD delivers data that
`currently exists in its native format within corporations and
`whose value is clearly understood by the company, MIS, and
`the end-user. With the recognized features, the willingness to
`invest in infrastructure is more likely.
`Within conventional environments, users have access to
`files and can download or copy them on-demand, whenever
`they are aware that the network file document changes. File
`servers and intranet servers act as document repositories
`waiting passively to be accessed. The reality is that these 10
`files change erratically and the user can never really know
`when a file has changed. As a result, those who need to have
`the most current documents are required to perform hit-and(cid:173)
`miss network browsing and checking which is time(cid:173)
`consuming, unproductive, and frustrating. Even if the 15
`changes are scheduled, the user is still required to manually
`access, retrieve and manage those changes.
`For mobile users, the problem of knowing about and
`accessing changes to network-based files is compounded by
`infrequent access to the corporate network. In addition, 20
`when remote from the office, users need to establish con(cid:173)
`nections to the network via dial-up networking technologies,
`then search and browse the network over an often slow,
`unreliable connection. The productivity losses and frustra-
`tions are simply multiplied.
`As is apparent from the above discussion, a need exists for
`an efficient and effective mechanism for allowing a com(cid:173)
`puter user to have copies of the current versions of network
`files on his client computer.
`
`25
`
`4
`was detected. The command need only specify the location
`within the earlier version of the file where the old segment
`is stored, rather than the actual data that is stored at this
`position. This information is found in the signature list in the
`beginning location and size fields. The beginning location
`field is preferably expressed as a number of bytes from the
`beginning of the file. At the client computer, when this
`location information is combined with the offset of the
`beginning of the client computer's copy of the earlier
`version of the subscription file, the correct old segment can
`be copied into the client computer's copy of the current
`version of the subscription file. The size of the copy com(cid:173)
`mand is negligible in comparison to the size of the segment
`to which it pertains. This savings reduces the size of the
`update file, and thus reduces the connection time in com(cid:173)
`municating the update file to the client computer.
`When no match is detected in the earlier version of the
`signature list, the server computer writes a command into the
`update file for the client computer to insert a new segment
`of the current version of the subscription file into the client
`computer's copy of the current version of the subscription
`file, where the new segment of the current version of the
`subscription file is written into the update file. Because the
`new segment of the current version of the subscription file
`contains the actual data of the new segment, the new
`segment of the current version of the subscription file may
`be compressed to reduce the size, encrypted for security, or
`both, by the server computer before being written into the
`update file.
`When the update file is completed, the server computer
`transmits the update file to the client computer as an execut(cid:173)
`able attachment via electronic mail. The update file is only
`generated when the server computer determines that the
`subscription file has changed. The server computer periodi-
`35 cally monitors the subscription file to determine if it has
`been altered before generating an update file. The user
`determines the periodicity of the checks to determine if the
`file has been altered, and if so, to generate the update file and
`send it as an electronic mail.
`These and other features of the present invention are
`apparent from the Drawings which are described in narrative
`form in the Detailed Description of the Invention.
`
`30
`
`SUMMARY OF THE INVENTION
`
`Conventionally, those who need to have the most current
`versions of computer files are required to perform hit-and(cid:173)
`miss network browsing and checking which is time(cid:173)
`consuming, unproductive, and frustrating. An object of the
`present invention is to provide a mechanism by which a user
`can be automatically provided with a current version of a file
`to which he subscribes. Another object of the present inven(cid:173)
`tion is to communicate the current version of the file in an 40
`efficient manner. According to the present invention, a server
`computer monitors network files and folders stored on the
`network for changes and then sends the user email notifi(cid:173)
`cations and updates when monitored items change.
`According to the present invention, a server computer 45
`generates an update file for transmission to a client computer
`that permits the client computer to generate a copy of a
`current version of a subscription file from a copy of an
`earlier version of the subscription file. The server computer
`periodically reads the subscription file from the network 50
`drive and divides the subscription file into variable-length
`segments based upon a segment delimiter. The server com(cid:173)
`puter computes a signature for each segment and stores the
`segment signature along with the beginning position and
`length of each segment in a current version of the signature 55
`list. The server computer also maintains the earlier version
`of the signature list.
`For each segment of the current version of the subscrip(cid:173)
`tion file, the server computer searches an earlier version of
`a signature list for an old segment signature which matches 60
`a new segment signature corresponding to the segment.
`When a match is detected, the server computer writes a
`command in the update file for the client computer to copy
`an old segment of the client computer's copy of the earlier
`version of the subscription file into the client computer's 65
`copy of the current version of the subscription file, where the
`old segment corresponds to the segment for which a match
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 illustrates a general purpose computer architecture
`suitable for implementing the methods according to the
`present invention.
`FIG. 2 illustrates a network of computers suitable for
`implementing the methods according to the present inven(cid:173)
`tion.
`FIG. 3 illustrates an earlier version of a subscription file
`broken into six segments and the signatures corresponding
`to the six segments suitable for use with the methods
`according to the present invention.
`FIG. 4 illustrates an earlier version of a signature list
`according to the present invention corresponding to the
`earlier version of the subscription file shown in FIG. 3.
`FIG. 5 is a flow chart illustrating a method according to
`the present invention of building a signature list correspond(cid:173)
`ing to a subscription file.
`FIG. 6 illustrates a current version of the subscription file
`shown in FIG. 3 broken into seven segments and the
`signatures corresponding to the seven segments suitable for
`use with the methods according to the present invention.
`FIG. 7 illustrates a current version of a signature list
`according to the present invention corresponding to the
`current version of the subscription file shown in FIG. 6.
`
`SAP Exhibit 1001, Page 16 of 25
`
`
`
`US 6,738,799 B2
`
`5
`FIG. 8 illustrates the correspondence of the current ver(cid:173)
`sion of the subscription file to the earlier version of the
`subscription file and the segments which are communicated
`to the client computer from the server computer in an update
`file according to the present invention.
`FIG. 9 illustrates the creation of a current copy on the
`client computer of the current subscription file from a copy
`of the earlier version of the subscription file on the client
`computer using the update file.
`FIG. 10 is a flow chart illustrating a method according to 10
`the present invention of generating an update file from the
`current version of the subscription file and the current and
`earlier versions of the signature list.
`FIG. 11 illustrates an update file generated by the method
`according to the present invention illustrated in FIG. 10 15
`applied to the earlier and current versions of the signature
`list illustrated in FIGS. 4 and 7, respectively.
`FIG. 12 illustrates a large and diverse network of com(cid:173)
`puters suitable for implementing the methods according to
`the present invention.
`The Figures are more thoroughly described in narrative
`form in the Detailed Description of the Invention.
`
`20
`
`30
`
`6
`variety of information sources is very compelling to both
`users and corporations, with the caveat that the files being
`sent must not impede the network, the mail server, or the
`end-user's experience. This means, for truly effective docu(cid:173)
`ment push, file size has to be addressed, first and foremost.
`Electronic Document Delivery involves more than just the
`physical process of sending out documents automatically.
`The indiscriminate sending or downloading of full-size files
`places a heavy burden on network bandwidth, IS, and the
`mobile professional. Intelligence needs to be built into the
`entire process of delivery to be truly effective and valuable
`to both MIS and users.
`For truly effective Document Delivery, server-based intel(cid:173)
`ligence is required. It is needed for detecting and sending
`changed files, but also as well as for detecting what changes
`have been made and packaging only those changes as
`efficiently as possible. If only 50 cells of 5000 have changed
`in a spread-sheet, it does not make sense to send the entire
`file again. If only a single slide in a 50-slide presentation
`changes, it does not make sense to re-send the entire 2 MB
`file.
`Symantec Mobile Update TM (Symantec Mobile Update is
`a trademark of Symantec Corporation and its subsidiaries)
`according to the present invention, through a combination of
`server-based "delta technology" and client-based "update
`agent technology", adds "intelligence" to document delivery
`by automatically offering a seamless way of receiving
`changes to corporate documents. The next section discusses
`the technology used by Mobile Update according to the
`present invention to bring "intelligence" to document deliv(cid:173)
`ery.
`Mobile Update according to the present invention is
`designed primarily to serve the mobile professional as the
`target user, who relies on copies of the most up-to-date
`documents to be effective, but who is not always connected
`to the network to access changes. In addition, the mobile
`user is challenged with both slow connection speeds to the
`network (typically 28.8 Kb/sec modem), as well as the
`hassles of getting and staying connected. The Mobile Update
`solution according to the present invention is comprised of
`a server portion (for tracking files on the network and
`processing changes) and a client portion (for managing
`document "subscriptions" and for incorporating changes
`into existing documents).
`The Mobile Update Client portion is used to create and
`manage subscriptions to network documents. The process of
`selecting files to be monitored is referred to as "subscrib(cid:173)
`ing". Users browse to the network directory where the
`50 desired files are stored and select either individual files or
`folders (excluding sub-folders). Once selected, the user then
`determines the polling or monitoring interval for the server
`to check for changes and also what to do when changes
`occur, i.e., package and send file changes or simple notifi-
`55 cation. Once the subscription is set up, the information is
`passed to the server and stored in its database.
`The Mobile Update Server according to the present inven(cid:173)
`tion acts as an "electronic assistant" on the network, tracking
`documents for changes. It polls files or subfolders at either
`user-defined intervals for any changes to date, time stamps.
`When it detects a change, it checks the integrity of the file,
`then decides whether it needs to deliver the actual changes
`or simply notify send notice of a file change.
`FIG. 1 illustrates a general purpose computer system 100
`suitable for implementing the methods according to the
`present invention. The general purpose computer system
`100 includes at least a microprocessor 104. The general
`
`25
`
`DETAILED DESCRIPTION OF 1HE
`INVENTION
`Although intranets are growing in popularity, they are not
`likely to replace file servers any time soon. File servers are
`one of the primary ways to store and share data on corporate
`networks due to their sheer simplicity for posting and
`retrieving files. Users have grown accustomed to working
`with network drives, even to the extent where in which data
`is actually stored directly on the network, rather than on their
`own hard drives. The intranet, on the other hand, requires
`that documents be "posted" or "uploaded" to a web server, 35
`usually by a select group of individuals. Thus, making
`documents available to others goes from the simple task of
`copying a file onto a network directory to submitting a file
`to be processed by others. On the recipient end, it involves
`activating a browser, going to the appropriate URL or IP 40
`address, finding the document on a page and downloading it
`(as opposed to a simple drag-and-drop file copy to the hard
`drive).
`In spite of the varying degrees of complexity, there is
`value in both methods of file sharing. Since virtually all
`Intranet documents are converted forms of some other type
`of document file, the most current information is often found
`in native files on the LAN, rather than information posted to
`a web page. In addition, not all changing files used in the
`day-to-day life of the mobile professional are found on the
`intranet, whereas all intranet-based files can typically be
`found on the network. Thus, browser-access alone is not
`always adequate to serve the needs of document delivery.
`According to research, the most popular method of con(cid:173)
`necting to the corporate network is through electronic mail.
`Not surprisingly, electronic mail is treated as a mission
`critical application. For remote or mobile professionals, it is
`the one connection they do make to the network on a
`recurrent basis. T