[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR100700200B1 - 파일의 정보를 이용하여 중복된 파일을 저장하고다운로드하는 방법 및 장치 - Google Patents

파일의 정보를 이용하여 중복된 파일을 저장하고다운로드하는 방법 및 장치 Download PDF

Info

Publication number
KR100700200B1
KR100700200B1 KR1020040112109A KR20040112109A KR100700200B1 KR 100700200 B1 KR100700200 B1 KR 100700200B1 KR 1020040112109 A KR1020040112109 A KR 1020040112109A KR 20040112109 A KR20040112109 A KR 20040112109A KR 100700200 B1 KR100700200 B1 KR 100700200B1
Authority
KR
South Korea
Prior art keywords
file
segment
check
check data
information
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
KR1020040112109A
Other languages
English (en)
Other versions
KR20060073724A (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 주식회사 나우콤
Priority to KR1020040112109A priority Critical patent/KR100700200B1/ko
Publication of KR20060073724A publication Critical patent/KR20060073724A/ko
Application granted granted Critical
Publication of KR100700200B1 publication Critical patent/KR100700200B1/ko
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation

Landscapes

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

Abstract

파일의 정보를 이용하여 중복된 파일을 저장하고 다운로드하는 방법 및 장치에 관한 것이다.
본 발명의 일 실시예에 따른 파일의 정보를 이용하여 중복된 파일을 저장하는 방법은 클라이언트로부터 제 1 파일의 적어도 일부에 대한 체크데이터를 수신하는 단계, 상기 수신한 체크데이터와 동일한 체크데이터를 가지는 제 2 파일을 검색하는 단계, 상기 제 2 파일이 존재하는 경우, 상기 클라이언트로부터 상기 제 1 파일을 상기 제 2 파일과 비교하여 동일한 부분과 상이한 부분을 추출하는 단계 및 상기 제 1 파일의 상기 동일한 부분은 상기 제 2 파일을 참조하고, 상기 제 1 파일의 상기 상이한 부분만 저장하는 단계를 포함한다.
중복 파일, 파일 서버, CRC, 세그먼트

Description

파일의 정보를 이용하여 중복된 파일을 저장하고 다운로드하는 방법 및 장치{Method and apparatus for storing and downloading duplicated file using different file information}
도 1은 종래 중복된 대용량 파일을 사용자별로 저장하는 경우를 보여주는 예시도이다.
도 2는 본 발명의 일 실시예에 따른 다수의 동일한 파일이 하나의 파일로 저장되는 예시도이다.
도 3은 본 발명의 일 실시예에 따른 클라이언트와 파일 서버의 구성을 보여주는 예시도이다.
도 4는 본 발명의 일 실시예에 따른 두 파일의 일부 중복을 처리하는 과정을 보여주는 예시도이다.
도 5는 본 발명의 일 실시예에 따른 파일 서버에 중복된 파일의 상이한 부분들이 저장되는 예시도이다.
도 6은 본 발명의 일 실시예에 따른 파일 서버가 클라이언트로부터 파일을 수신하는 과정을 보여주는 순서도이다.
도 7은 본 발명의 일 실시예에 따른 클라이언트와 서버간의 작업을 보여주는 시퀀스 다이어그램이다.
<도면의 주요 부분에 대한 부호의 설명>
500: 클라이언트 520: 세그먼트 생성부
530: 체크파일 생성부 950: 파일 정보부
960: 파일저장부 1000: 파일 서버
파일의 정보를 이용하여 중복된 파일을 저장하고 다운로드하는 방법 및 장치에 관한 것이다.
최근 멀티미디어 기술의 증가와 대용량 저장매체의 상용화로 멀티미디어 파일의 크기와 디지털 장치의 저장 용량은 꾸준히 증대되고 있다. 또한 과거에 파일을 개인의 디지털 장치에 저장하는 방식에서 점차 탈피하여, 대용량 저장 공간을 제공하는 회사의 저장 장치를 사용하는 방식이 자리잡아 가고 있다. 그러나 대용량의 저장 공간에 저장되는 많은 멀티미디어 파일들은 중복되는 경우가 허다하다. 특히, 멀티미디어 파일의 경우에는 사용자가 파일을 조작하거나 변경할 가능성이 낮으며, 유사한 시점에 동일한 멀티미디어 파일이 각기 다른 사용자들에 의해 저장될 가능성이 높다는 점에서 저장 공간의 효율을 떨어뜨린다.
사용자가 저장하는 개인용 디지털 저장 장치에 중복된 파일을 찾아주는 프로그램은 현재 많이 유통중이다. 이는 개인용 컴퓨터에 저장되는 파일의 유형을 검사하여 중복된 파일을 찾아내는 방식으로, 개별 파일을 일대일로 찾아서 검사한다.
그러나, 다양한 사용자가 파일을 저장하는 스토리지 서비스(storage service)에서는 수많은 개별 파일을 일일이 검색하여 중복을 찾는 것은 엄청난 시간을 필요로 하므로, 실제 스토리지 서비스를 제공하는 파일 저장 서버에 이를 적용하기에는 무리가 있다. 또한 스토리지 서비스를 제공하는 파일 저장 서버는 하나의 컴퓨터에 구성되는 것이 아니라, 다수의 대용량 저장 장치를 가지는 컴퓨터들을 연결하여 구성하기 때문에, 각 저장 장치를 다 검사한다는 것은 불가능하다.
스토리지 서비스를 제공함에 있어서 중복된 파일을 저장하는 것은 비단 저장 공간의 낭비만을 초래하는 것이 아니다. 도 1에서는 중복된 대용량 파일을 저장하는 경우 저장 공간과 네트워크의 효율이 떨어지는 경우를 보여준다.
도 1은 종래 중복된 대용량 파일을 사용자별로 저장하는 경우를 보여주는 예시도이다.
파일 서버(1000)를 사용하는 사용자(10, 20, 90)이 동일한 파일인 Movie_nemo.avi를 업로드하고 있다. 통상적으로 멀티미디어 파일의 경우 특정 시점에 동일한 컨텐츠에 대한 관심이 집중되므로, 같은 컨텐츠를 가지는 다수의 멀티미디어 파일이 파일 서버(1000)에 저장되는 경우가 많다. 그 결과, 파일 서버(1000)에는 동일한 파일(201, 202, 209)가 저장됨으로써, 불필요한 공간이 낭비되며, 동일한 파일을 중복하여 업로드하기 때문에 네트워크의 부하가 커진다.
따라서, 대용량 파일 서버에 업로드 되는 파일의 중복을 피하고, 중복되는 파일의 저장을 효율적으로 처리하여, 저장 공간의 낭비와 네트워크의 부하를 줄이는 방법이 필요하다.
본 발명이 이루고자 하는 기술적 과제는 파일의 중복되는 부분은 저장하지 않음으로써 저장 공간의 효율을 높이는데 있다.
본 발명이 이루고자 하는 또다른 기술적 과제는 중복된 파일의 업로드를 제한하여 네트워크의 부하를 줄이는데 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
파일의 정보를 이용하여 중복된 파일을 저장하고 다운로드하는 방법 및 장치에 관한 것이다.
본 발명의 일 실시예에 따른 파일의 정보를 이용하여 중복된 파일을 저장하는 방법은 클라이언트로부터 제 1 파일의 적어도 일부에 대한 체크데이터를 수신하는 단계, 상기 수신한 체크데이터와 동일한 체크데이터를 가지는 제 2 파일을 검색하는 단계, 상기 제 2 파일이 존재하는 경우, 상기 클라이언트로부터 상기 제 1 파일을 상기 제 2 파일과 비교하여 동일한 부분과 상이한 부분을 추출하는 단계 및 상기 제 1 파일의 상기 동일한 부분은 상기 제 2 파일을 참조하고, 상기 제 1 파일의 상기 상이한 부분만 저장하는 단계를 포함한다.
본 발명의 다른 실시예에 따른 파일의 정보를 이용하여 중복된 파일을 저장하는 방법은 클라이언트로부터 제 1 파일그룹의 적어도 일부 파일에 대한 체크데이 터를 수신하는 단계, 상기 수신한 체크데이터와 동일한 체크데이터를 가지는 제 2 파일그룹을 검색하는 단계, 상기 제 2 파일그룹이 존재하는 경우, 상기 클라이언트로부터 상기 제 1 파일그룹의 제 1 파일과 상기 제 2 파일그룹의 제 2 파일을 비교하는 단계 및 상기 제 2 파일과 동일한 상기 제 1 파일은 상기 제 2 파일을 참조하고, 상기 제 2 파일과 동일하지 않은 상기 제 1 파일은 저장하는 단계를 포함한다.
본 발명의 일 실시예에 따른 파일의 정보를 이용하여 중복된 파일을 다운로드하는 방법은 클라이언트로부터 다운로드할 제 1 파일에 대한 정보를 수신하는 단계, 상기 제 1 파일과 동일한 부분을 가지는 제 2 파일이 존재하는지 검색하는 단계, 상기 제 2 파일이 존재하는 경우, 상기 제 1 파일과 상기 제 2 파일의 동일한 부분은 상기 제 2 파일에서 추출하여 상기 클라이언트에 송신하고, 상기 제 1 파일과 상기 제 2 파일의 상이한 부분은 상기 제 1 파일에서 추출하여 상기 클라이언트에 송신하는 단계를 포함한다.
본 발명의 일 실시예에 따른 파일 서버는 클라이언트로부터 제 1 파일의 적어도 일부에 대한 체크데이터를 수신하는 송수신부, 상기 수신한 체크데이터와 동일한 체크데이터를 가지는 제 2 파일을 검색하며, 상기 수신한 체크데이터를 저장하는 파일 정보부 및 상기 제 2 파일이 존재하는 경우, 상기 클라이언트로부터 상기 제 1 파일과 상기 제 2 파일을 비교하여 동일한 부분과 상이한 부분을 추출하여 상기 동일한 부분은 상기 제 2 파일을 참조하도록 저장하며, 상기 상이한 부분은 상기 제 1 파일의 일부를 사용하여 저장하는 파일저장부를 포함한다.
설명에 앞서 본 명세서에서 사용하는 용어의 의미를 간략히 설명한다. 그렇 지만 용어의 설명은 본 명세서의 이해를 돕기 위한 것으로서 명시적으로 본 발명을 한정하는 사항으로 기재하지 않은 경우에 본 발명의 기술적 사상을 한정하는 의미로 사용하는 것이 아님을 주의해야 한다.
- CRC (Cyclic Redundancy Checking)
CRC는 통신 링크로 전송되어온 데이터 내에 에러가 있는지 확인하기 위한 방법 중의 하나이다. 송신장치는 전송될 데이터 블록에 16 비트 또는 32 비트 다항식을 적용하여, 그 결과로 얻어진 코드를 그 블록에 덧붙인다. 수신측에서는 데이터에 같은 다항식을 적용하여 그 결과를 송신측이 보내온 결과와 비교한다. 만약 두 개가 일치하면, 그 데이터는 성공적으로 수신된 것이며, 그렇지 않은 경우 그 데이터 블록을 재송신하도록 송신측에게 요구한다. ITU-T는 송신블록에 부가될 코드를 얻는데 사용되는 16 비트 다항식에 대한 표준을 제정했다. 16 비트 CRC는 두 개의 비트가 동시에 에러가 난 경우를 포함하여, 일어날 수 있는 모든 에러에 대하여 99.998% 검출을 보장한다. 이 정도의 검출보증은 4 KB 이하의 데이터 블록 전송에는 충분한 것으로 평가되고 있으며, 그 이상의 대량 전송에는 32 비트 CRC가 사용된다. 이더넷(Ethernet)과 토큰링(Token ring) 프로토콜에서도 모두 32 비트 CRC를 사용한다. 다소 덜 복잡하고 에러 검출능력도 다소 떨어지는 방법으로서 체크섬(Checksum) 방식이 있다. 체크섬 방식은 수신자가 같은 수의 비트가 도착했는지를 확인 할 수 있도록 전송단위 내의 비트 수를 세는 것이다. 만약 계산이 맞으면, 에러없이 원만하게 수신된 것으로 간주된다. TCP와 UDP 통신계층 모두에서 체크섬 계산 및 검증 서비스가 제공된다.
- 파일
파일은 통상적으로 데이터를 다루는 단위가 된다. 따라서 하나의 멀티미디어 컨텐츠, 하나의 저작물등은 통상 하나 이상의 파일로 구성된다. 본 명세서에서는 주된 실시예로 하나의 파일이 하나의 의미있는 데이터로 존재하는 경우를 나타내고 있으나 이에 한정되는 것은 아니다. 후술할 세그먼트가 하나의 파일로 존재할 수 있으며, 특히 파일 서버의 경우에는 원래 하나였던 파일을 중복 여부를 검토할 수 있게 일정 크기 또는 일정 기준에 따라 여러 개의 세그먼트로 나누어 저장할 수 있는데, 이 세그먼트가 각각 파일로 저장될 수 있다. 따라서 파일 서버는 하나의 파일로 저장하는 경우와 여러 개의 세그먼트로 나뉘어진 여러 파일을 저장하는 경우 모두를 포함한다.
- 체크파일
체크파일은 체크데이터의 일종이다. 체크데이터는 파일 또는 파일의 일부에 대해 CRC, 체크섬을 통해 얻을 수 있으며, 또한 파일의 크기, 파일명, 파일의 유형등을 포함할 수 있다. 체크파일은 체크데이터를 파일서버에서 파일 형태로 저장하는 것을 의미한다. 파일 형태로 저장될 경우, 파일 서버는 업로드시 체크파일을 체크데이터로 하여 파일의 동일 여부를 검토할 수 있다. 본 명세서에서는 체크데이터가 데이터 베이스에 일부 저장되고, 또 일부는 파일의 형태로 저장되므로 체크데이터의 일 실시예로 체크파일이라 명명한다. 그러나, 본 발명은 이에 한정되는 것이 아니며, 체크데이터는 파일의 형태로 저장되지 않고 매 업로드 순간마다 계산하는 방식으로 생성될 수도 있다. 또한 데이터베이스에 저장되어 검색할 수 있다.
도 2는 본 발명의 일 실시예에 따른 다수의 동일한 파일이 하나의 파일로 저장되는 예시도이다.
파일 서버(1000)에 다수의 사용자가 Movie_nemo.avi 파일을 업로드 하고 있다. 여기서 어느 한 사용자의 Movie_nemo.avi 파일(210)만을 저장하고, 다른 사용자에게는 그 파일이 저장된 것으로 통지한다. 그리고 파일 서버(1000)에 저장된 Movie_nemo.avi 파일을 N 명의 사용자가 저장하였음을 나타내기 위한 카운터(291)를 사용한다. 이후, N 명의 사용자중 K 명이 이 파일의 삭제를 요청하면, 파일 서버(1000)는 파일을 직접 삭제하는 것이 아니라 카운터(291)를 N-K로 변경한다. 이 숫자가 0이 되면 더 이상 이 파일을 저장한 사용자가 없으므로 파일 서버(1000)에서 삭제한다. 동일한 파일을 다시 누군가가 저장하려 한다면, 카운터(291)를 1 증가시킨다.
도 3은 본 발명의 일 실시예에 따른 클라이언트와 파일 서버의 구성을 보여주는 예시도이다.
본 실시예에서 사용되는 '~부'라는 용어, 즉 '~모듈' 또는 '~테이블' 등은 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 기능들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시 저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 모듈들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
클라이언트(500)는 전술한 사용자의 컴퓨터(10, 20, 90)에 설치되며, 파일의 업로드, 다운로드를 수행한다. 클라이언트(500)는 크게 파일과 데이터를 송수신하는 송수신부(510), 하나의 파일을 일정 크기 또는 일정 기준에 따라 세그먼트로 나누는 세그먼트 생성부(520), 그리고 하나의 파일에 대해, 또는 세그먼트에 대해 체크파일을 생성하는 체크파일 생성부(530), 그리고 파일이 저장되어 있는 파일 저장부(560)를 포함한다.
송수신부(510)는 파일 서버와 데이터 및 파일을 송수신한다. 유, 무선의 네트워크를 통해 파일을 송수신한다. 상기 송수신되는 파일은 하나의 파일일 수 있고, 또는 파일을 나눈 세그먼트일 수 있다.
세그먼트 생성부(520)는 파일을 일정 길이 또는 일정 기준에 따라 나눈다. 이는 파일의 중복을 체크하기 위해 파일 전체에 대해서 수행하는 것은 시간이 걸릴 수 있으므로, 파일을 일정 크기만큼 나눌 수 있기 때문이다. 대용량의 파일이 이미 일정 크기로 나뉘어진 경우에는 세그먼트 생성부(520)을 거치지않고 전송될 수 있다.
체크파일 생성부(530)는 파일 또는 파일의 일부인 세그먼트에서 정보를 추출하여 파일 또는 세그먼트의 동일 여부를 검토할 수 있게 하는 체크파일을 생성한다. 체크파일의 생성 방법으로는 전술한 CRC 방법, 또는 체크섬(Checksum) 방법이 될 수 있다. 이외에도, 파일 또는 세그먼트에 대한 비트의 정보, 사이즈 등으로 체크파일을 만들 수 있다.
파일저장부(560)는 업로드할 파일이 저장되거나 또는 다운로드할 파일을 저장할 매체를 의미한다. 대용량의 파일의 저장이 하드디스크를 통해 이루어졌으나, 최근, 플래쉬 메모리, USB 저장장치 등으로 다양해지고 있다.
클라이언트(500)는 파일 서버(1000)에 파일을 업로드 하기전에 업로드할 파일의 정보를 파일 서버(1000)에 전송한다. 전송할 정보로는 파일의 동일성을 검토할 수 있는 것으로서, 예를 들어, 파일 또는 파일의 첫번째 세그먼트에 대한 체크파일과 파일의 사이즈, 파일명 등이 될 수 있다. 멀티미디어 컨텐츠가 하나의 파일로 존재한다면 세그먼트 생성부(520)에서 세그먼트로 나눈후, 체크파일 생성부(530)에서 체크파일을 생성한다. 송수신부(510)는 파일의 정보, 예를 들어 체크파일, 파일의 사이즈, 파일명 등을 파일 서버(1000)로 전송하여 파일 서버(1000)에 동일한 파일이 저장되어 있는지 검토할 수 있게 한다. 파일 서버(1000)는 수신한 정보들을 이용하여, 완전히 동일한 파일인 경우에는 파일을 수신하지 않고, 업로드하고자 한 파일에 대한 정보만을 저장한다. 일부가 상이한 파일인 경우에는 상이한 부분만 수신하도록 클라이언트(500)에 요청한다. 상이한 부분을 검토하는 방법은 후술하고자 한다.
파일 서버(1000)는 송수신부(910), 세그먼트 생성부(920), 체크파일 생성부(930), 파일 정보부(950), 파일저장부(960)을 포함한다.
송수신부(910)는 클라이언트(500)와 파일과 데이터를 송수신한다. 클라이언트(500)와는 유, 무선의 네트워크를 통해 데이터와 파일을 송수신할 수 있다. 세그먼트 생성부(920)는 클라이언트(500)가 파일을 전송하는 경우, 이를 세그먼트로 생성하여 저장하는 작업을 수행한다. 클라이언트(500)가 업로드하는 파일과 중복되는 파일이 존재하지 않을 경우, 클라이언트(500)는 파일을 세그먼트로 나누지 않고 그대로 전송할 수 있다. 수신한 파일을 원본으로 중복 여부를 검토할 수 있도록 세그먼트 생성부는 수신한 파일을 세그먼트로 나눈다.
체크파일 생성부(930)는 각 세그먼트에 대해 체크파일을 생성한다. 파일 서버(1000)에 중복된 파일이 저장되지 않은 경우에는 모든 세그먼트에 대해 체크파일을 생성할 수 있다. 한편, 중복된 파일이 존재한다면, 그 상이한 부분에 해당하는 세그먼트만 저장하고, 이 세그먼트에 대한 체크파일을 생성한다. 이후 사용자가 파일을 다운로드하고자 할 경우, 원본 파일의 세그먼트와 원본 파일과 상이한 세그먼트를 구별하여 다운로드 받을 수 있다. 여기에 대해서는 도 4에서 자세히 살펴보고자 한다.
파일 정보부(950)는 어떤 파일이 어떤 정보를 가지고 있는지에 대한 정보를 저장한다. 파일의 체크파일의 일부를 포함할 수 있고, 파일의 사이즈, 파일명 등 파일의 동일성을 검토하는데 필요한 정보를 포함할 수 있다. 또한, 원본 파일과 이 파일과 동일하거나 일부 상이한 파일이, 이 원본 파일에 기하여 업로드 된 경우에 는 원본 파일을 찾을 수 있게 하고, 원본 파일을 참조하는 다른 파일이 존재하는 경우에는 원본 파일이 삭제되지 않도록 제어할 수 있다. 파일에 대한 정보는 데이터베이스(database), 정보 파일 등을 이용해 저장할 수 있다.
파일저장부(960)는 파일을 저장하는 저장 매체이다. 대용량의 파일을 저장하기에 적합한 매체이며, 파일저장부(960)는 여러 시스템에 분산되어 설치될 수 있다. 파일이 어느 시스템의 파일저장부(960)에 저장되었는지를 알기 위한 정보를 파일 정보부(950)가 제공할 수 있다.
도 3의 실시예에서 파일 서버와 클라이언트는 모두 체크파일 생성부를 가지고 이으며, 체크파일을 저장하는 방식을 제시하고 있다. 그러나 이는 일 실시예에 해당하며, 체크데이터를 업로드, 다운로드시 생성하여 비교할 수 있다. 다만, 업로드 속도를 고려하여 체크데이터를 파일의 형태로 저장하는 것이 바람직하며, 또한 파일의 형태가 아니라도, 데이터베이스와 같은 검색이 용이한 부분을 사용할 수도 있다.
도 4는 본 발명의 일 실시예에 따른 두 파일의 일부 중복을 처리하는 과정을 보여주는 예시도이다.
멀티미디어 파일이 모두 동일하다면, 하나의 파일만을 업로드하여 몇 명의 사용자가 이 파일을 저장하였는지를 데이터베이스 또는 파일등의 자료를 통해 관리할 수 있다. 그런데, 파일이 동일한지 여부를 알기 위해서는 해당 파일의 각 비트를 검사하는 방법이 있을 수 있고, 해당 파일을 나타내는 정보를 비교하여 파일의 동일 여부를 검사하는 방법이 있다. 해당 파일의 각 비트를 검사하는 것은 멀티미 디어 파일의 경우 그 크기로 인해, 비교하는데 소요되는 시간이 크다.
따라서 해당 파일을 나타내는 정보를 비교하는 것이 더 적은 시간을 필요로 할 수 있다. 해당 파일을 나타내는 정보에는 파일의 크기, 파일명, 또는 파일의 특정 부분이거나, 해당 특정 부분을 구성하는 비트들의 패턴 또는 CRC 체크값이 될 수 있다.
도 4에서는 파일의 비트들의 패턴등을 체크하여 이들의 결과값을 비교하여 파일의 동일성을 검토한다. 101은 사용자 1이 올리려는 파일이며, 개인용 컴퓨터 또는 디지털 장치 등에 저장되어 있다. 이 파일은 파일 중복 체크에서 중복되지 않는 파일로 검토되어 파일 서버에 원본 파일로 저장된다. 저장되는 방식은 하나의 파일이 하나 이상의 조각들(segment, 이하 '세그먼트'라 한다)(201, 202, 203 등)로 나뉘어져 저장된다. 이 세그먼트(201, 202, 203 등)는 본 발명의 일 실시예에 따라 파일을 일정 크기로 나누어진 것을 의미한다. 각 세그먼트는 파일 서버에 저장된다. 그리고 각 세그먼트를 나타내는 체크파일(301, 302 등)을 더 생성할 수 있다. 체크파일은 해당 세그먼트의 특성을 나타내며, 두 세그먼트를 구별하는 기준이 된다. 도 4에 나타난 바와 같이 체크파일1(301)은 세그먼트1(201)의 특성을 나타내는 파일이며, 체크파일2(302)는 세그먼트2(202)의 특성을 나타내는 파일이다. 통상적으로 체크파일은 CRC, 체크섬 방식 등을 통해 생성된다.
다음 사용자인 사용자 2가 102 파일을 업로드하고자 한다. 102 파일이 서버에 저장된 다른 파일과 동일한지 여부를 검토하기 위해, 102 파일의 첫번째 세그먼트(211)의 체크파일(311)을 파일 서버에 전송한다. 파일 서버는 수신한 체크파일 (311)과 저장된 체크파일(301)을 비교한 결과 두 세그먼트(201, 211)가 같은 세그먼트임을 알게 된다. 또한 102파일의 크기가 사용자 1이 업로드한 파일의 사이즈와 유사하거나 유사한 경우, 두 파일은 중복될 가능성이 크다. 따라서 201, 202 등의 세그먼트로 구성된 101 파일을 원본 파일로 하여 중복되지 않는 부분만을 저장한다.
서버는 201 세그먼트와 동일한 211 세그먼트는 저장할 필요가 없으므로, 201 세그먼트를 수신하지 않고, 다음 세그먼트(212)의 체크파일(312)과 저장된 체크파일(302)를 비교하게 된다. 역시 동일한 결과가 나오므로 두번째 세그먼트(212)도 저장하지 않는다. 세번째 세그먼트(213)의 체크파일(313)을 수신하여 검토한 결과, 두 체크파일(303, 313)이 다르다는 것을 알게 된다. 이는 두 세그먼트(203, 213)가 다르다는 것을 의미하므로, 213 세그먼트를 수신하여 저장한다. 그리고 213 세그먼트에 대한 체크파일(313)을 생성한다. 이후 102 파일의 각 세그먼트들을 전술한 방법으로 비교하여, 체크파일이 다른 경우만 세그먼트를 저장하여 중복된 세그먼트의 저장을 피하여 효율을 높일 수 있다.
이후, 사용자 2가 102 파일을 다시 다운로드하고자 할때에는, 201, 202 등의 세그먼트 파일을 원본으로 하여 다운로드 받으며, 또한 원본 파일과 상이한 부분으로 저장한 세그먼트(213)도 다운로드 받게 된다.
도 4에서는 상이한 부분과 이에 대한 체크파일을 저장하고 있다. 한편 동일한 부분, 예를 들어 세그먼트 1(211), 세그먼트 2(212)의 경우는 원본의 세그먼트인 세그먼트 1(201), 세그먼트 2(202)를 참조해야 하므로, 이 정보를 저장할 수 있 다. 참조 정보는 파일형태로 저장가능하며, 데이터 베이스에 저장할 수도 있다.
도 4의 실시예에서는 클라이언트가 파일을 업로드하기전에 체크파일을 송신하여, 서버에 저장된 다른 체크파일과 비교하게 된다. 체크파일은 그 체크파일이 나타내는 세그먼트 파일보다 크기가 작으므로, 네트워크를 통해 송수신되는 데이터의 양이 상대적으로 적다. 또한, 동일하거나 일부 세그먼트만이 다른 경우에는, 체크파일만을 지속적으로 송수신하여 비교하고, 그 결과에 따라 상이한 세그먼트만 수신하므로, 중복되는 파일을 업로드 하는 사용자는 업로드 속도가 빠르다. 저장 공간의 효율뿐만 아니라 네트워크 전송량을 절감할 수 있다.
도 4의 실시예에서는 하나의 세그먼트가 일정 크기, 예를 들어 64 Kbyte, 또는 128 Kbyte일 수 있고, 여기에 대한 체크파일은 4byte, 또는 8byte 등이 될 수 있다. 체크파일의 크기는 세그먼트의 크기에 따라 가변적이다.
또한, 세그먼트는 실제 클라이언트에서 세그먼트 단위로 나뉘어 파일이 저장될 수 있으며, 클라이언트가 세그먼트 단위로 나누어 전송할 수 있다. 체크파일 역시 클라이언트가 생성하여 매 세그먼트에 따라 체크데이터의 형태로 송신할 수 있다. 본 명세서에서 파일은 저장 매체에 저장되는 파일의 개념을 포함하며, 또한 메모리의 일정 영역에 데이터로 자리잡는 일련의 비트스트링의 개념을 포함한다.
또한 사용자의 관점에서 하나의 파일이라 하여도, 이 파일이 여러 개의 세그먼트로 나누어져 각각 파일의 형태로 저장되는 경우도 가능하다. 이 경우, 사용자의 관점에서 하나의 파일로 인식되는 것은 하나의 파일 그룹을 의미하는 것이고, 이 파일 그룹을 구성하는 세그먼트들은 각각 하나의 파일이 될 수 있다. 이 경우, 클라이언트가 전송하는 세그먼트는 하나의 파일이 될 수 있다. 마찬가지로, 파일 서버에 저장되는 세그먼트 역시 독립적인 파일로 존재할 수 있다. 특히 원본 파일을 참조하며 일부 상이한 파일의 경우에는 각 세그먼트들이 독립된 파일로 저장될 수 있다. 이 경우에는 사용자 관점에서 업로드, 다운로드 대상이 되는 것은 파일 그룹이며, 서버와 클라이언트에는 파일 그룹을 구성하는 세부 세그먼트들이 파일로 존재한다.
비교하기 위한 세그먼트를 선택하는 방식은 두 파일에서 동일 위치에 있는 세그먼트를 선택하는 방법과, 특정 영역에서 일정 비트수만큼 전후를 떨어진 위치의 세그먼트를 선택하는 두 가지 방법이 있다. 전자의 경우(동일 위치의 세그먼트 선택)는 파일의 전체 사이즈는 동일하고, 일부 영역이 수정된 경우에 적용 가능하다. 후자의 경우(특정 영역에서 일정 오프셋만큼 떨어진 세그먼트 선택)는 원본 파일과 비교하여 일정 부분이 추가되거나 삭제된 경우에 적용가능하다. 예를 들어, 원본에는 세그먼트 1, 2, 3, 4, 5가 존재하고, 업로드할 대상 파일은 세그먼트 1, 3, 4, 5만 존재하고 세그먼트 2가 삭제된 경우이며 1, 3, 4, 5는 이미 원본 파일에 존재하므로 새로 올릴 필요가 없다. 그러나 동일 위치에 있는 세그먼트를 선택하는 방식이라면, 원본의 세그먼트 2와 업로드 파일의 세그먼트 3을 비교하고, 원본의 세그먼트 3과 업로드 파일의 세그먼트 4를, 그리고 원본 파일의 세그먼트 4와 업로드 파일의 세그먼트 5를 비교하여, 각기 다른 세그먼트로 인식할 수 있다. 따라서, 세그먼트 4, 5를 각각 세그먼트 3에서의 오프셋으로 판단하여 비교할 수 있다.
본 발명의 일 실시예에서는 두 파일을 비교하는 방식으로, 각 세그먼트를 비 교할 수 있으며, 또는 각 세그먼트의 체크파일을 비교할 수도 있다. 물론, 이들 파일들을 직접 비교하여 파일의 동일성을 검토할 수 있으나, 대용량의 멀티미디어 파일에서 파일을 직접 비교하는 경우에 많은 시간이 소요될 가능성이 존재하므로, 체크파일과 같이 파일의 일부 정보를 이용하여 비교하는 것이 바람직하다.
체크파일은 전술한 CRC 방식에 따라 생성할 수 있다. CRC 방식 외에도, 파일 또는 세그먼트의 비트를 계산하여 중복되지 않거나 중복될 가능성이 낮은 결과값을 산출할 수 있다. 이러한 값을 포함하는 체크파일이 동일하다면 파일 또는 세그먼트가 동일한 값을 가지는 것으로 판단할 수 있다.
도 5는 본 발명의 일 실시예에 따른 파일 서버에 중복된 파일의 상이한 부분들이 저장되는 예시도이다.
파일 서버(1000)는 파일 정보부(950)와 파일저장부(960)로 구성된다. 물론 이외에도, 도 3에서 살펴본 바와 같이 파일을 송수신하고, 클라이언트와 통신하기 위한 송수신부가 존재한다.
파일 정보부(950)는 저장된 파일에 대한 정보를 가진다. 파일 식별자, 파일이 저장된 위치, 파일에 대한 체크파일들의 전체 체크파일, 파일의 첫 세그먼트에 대한 체크파일, 파일의 크기, 원본인지 혹은 원본이 아닐 경우의 원본 파일에 대한 정보, 그리고 참조 횟수(카운터) 등을 포함한다. 파일 서버(1000)는 업로드할 파일이 중복된 파일인지를 검토하기 위해 파일 정보부(950)의 정보를 검색할 수 있다. 첫 체크파일이 동일하고, 파일 크기가 동일하거나, 전체 체크파일이 동일하다면, 저장된 파일과 동일하므로, 파일 정보부(950)에는 동일한 파일임을 표시한 후, 파 일을 저장하지 않는다.
한편, 첫 체크파일과 파일 크기가 동일하지만, 전체 체크파일이 상이한 경우, 두 파일의 일부 세그먼트가 상이함을 의미하므로, 도 4에서 살펴본 바와 같이 상이한 세그먼트만 저장하도록 할 수 있다. 파일 저장부(960)에 나타났듯이, FILE_0002는 FILE_0001과 상이한 세그먼트와 체크파일, 그리고 전체 체크파일이 저장되어 있다. 또한 FILE_0002가 FILE_0001을 원본으로 하는 것을 나타내기 위해 FILE_0001의 카운터 필드를 2로 할 수 있다.
이후 사용자가 FILE_0002를 다운로드 하고자 할 경우, 파일 정보부(950)에서 FILE_0002가 FILE_0001을 원본으로 하는 것을 알게 되므로, 중복되는 부분(세그먼트 1, 세그먼트 3 등)은 FILE_0001에서 다운로드 하고, 상이한 부분(세그먼트 2)은 FILE_0002에서 다운로드 하도록 한다.
한편 FILE_0001의 사용자가 자신의 파일을 삭제할 경우, 파일을 바로 삭제하는 것이 아니라, FILE_0001의 카운터를 1로 하는 것으로 대치한다. 1로 대치하는 이유는 FILE_0002의 사용자가 FILE_0002를 다운로드 받기 위해서는 FILE_0001을 필요로 하기 때문이다. 이후, 사용자가 FILE_0002를 삭제하는 경우, FILE_0002의 카운터를 1 줄여서 0으로 만들고, 그 원본 파일인 FILE_0001의 카운터 역시 1을 줄인 0으로 만든다. 일괄 실행 프로그램, 또는 삭제 프로그램에서는 카운터가 0이 되는 파일을 파일저장부(960)에서 삭제할 수 있다.
도 5에서는 FILE_0002가 하나의 파일을 원본 파일로 가지는 경우를 보고 있다. 그러나 이는 본 발명의 일 실시예이며, 둘 이상의 원본 파일을 가질 수 있다. 예를 들어, FILE_0003이 FILE_0002의 두번째 세그먼트와 동일하다면 FILE_0002는 두번째 세그먼트는 FILE_0003을 참조하도록 할 수 있다. 또는 FILE_0003이 FILE_0002와 같이 FILE_0001을 원본으로 하며, FILE_0002와 동일한 파일인 경우에 FILE_0002는 FILE_0001이 아닌 FILE_0003을 원본으로 하여 저장될 수 있다. 이는 일부만 차이나는 여러 유사 파일의 저장시에 적용할 수 있다.
도 6은 본 발명의 일 실시예에 따른 파일 서버가 클라이언트로부터 파일을 수신하는 과정을 보여주는 순서도이다.
파일 서버(1000)는 클라이언트(500)로부터 파일의 업로드 요청을 수신한다(S101). 그리고 클라이언트(500)로부터 업로드할 파일 또는 그 파일의 일부에 대한 체크파일을 수신한다(S102). 체크파일은 전술한 CRC, 체크섬 방식으로 생성된 파일일 수 있으며, 상기 업로드할 파일의 크기에 대한 정보를 포함할 수 있다. 또한, 파일명 또는 컨텐츠의 종류를 함께 포함할 수 있다. 또한, 멀티미디어 컨텐츠를 식별하기 위한 소정의 식별자 정보를 포함할 수 있다. 이러한 식별자 정보는 디지털 파일의 저작권을 관리하기 위한 것으로, 이 식별자에 의해 멀티미디어 컨텐츠를 구분할 수 있는 경우에 사용할 수 있다. 파일에 대한 정보를 포함하는 체크파일을 수신한 파일 서버(1000)는 상기 체크파일과 동일한 체크파일을 가지는 원본 파일이 존재하는지 검색한다(S103). 도 5의 파일 정보부(950)를 통해 검색할 수 있다.
그 결과 원본 파일이 존재한다면(S111) 상이한 부분만을 수신하여 저장하는 작업을 수행한다(S113~S142). 업로드될 파일에 대한 정보를 파일 정보부(950)에 저장한다(S113). 사용자가 업로드중에 네트워크 또는 컴퓨터 환경등에 따라 중지될 수 있기 때문에, 이어서 올릴 수 있도록 하기 위함이다. 업로드될 파일에 대한 정보 중에서 도 5의 원본 필드에 특정 파일 식별자를 저장한 것과 같이 원본 파일에 대한 정보를 저장할 수 있다. 더불어 파일 정보부(950)에 저장된 원본 파일의 정보를 수정한다(S114). 이는 업로드 중에 원본 파일이 삭제될 경우, 원본 파일을 다른 파일에서 참조하고 있음을 알리기 위함이다. 그리고 클라이언트에 업로드할 파일 또는 그 파일의 일부에 대한 체크파일을 요청한다(S115). 이는 파일 서버(1000)에서 요청할 수도 있고, 클라이언트에서 원본 파일과의 비교를 위해 순차적으로 체크파일을 전송할 수 있다. 파일 서버(1000)는 수신한 체크파일과 원본 파일의 체크파일을 비교한다(S116). 비교결과 체크파일이 동일하면(S131), 그 체크 파일이 마지막 세그먼트 또는 파일의 마지막 부분에 대한 체크파일인지 검토한다(S141). 마지막이라면, 파일 정보부(950)에 업로드가 완료됨을 기록하고 종료한다(S142).
파일의 마지막이 아니라면, 다음 세그먼트 또는 파일의 다음 부분에 대한 체크파일을 요청하고, 전술한 S115 내지 S141 과정을 수행한다.
한편, S131 단계에서 체크파일이 다르다면, 두 세그먼트가 다르므로, 체크파일을 저장한다(S133). 상기 체크파일이 나타내는 파일 또는 파일의 일부를 송신할 것을 클라이언트에 요청한다(S134). 그리고 수신한 파일 또는 파일의 일부를 저장한다(S135). 그리고 전술한 S141 단계로 진행한다. 마지막이 아니면, 다음 세그먼트의 체크파일을 수신하여 전술한 단계를 진행한다.
한편, S111단계에서 원본 파일이 존재하지 않는 것으로 판단되면, 파일 정보부(950)에 새로이 업로드될 파일의 정보를 저장한다(S121). 이때는 업로드될 파일 이 원본임을 표시한다. 그리고 클라이언트에게 업로드 파일을 송신할 것을 요청한다(S122). 업로드 파일을 수신하면(S123), 파일 서버는 향후 이 파일을 원본 파일로 사용할 수 있도록 체크파일을 생성한다(S124). 체크파일은 파일을 모두 수신하여 일괄적으로 생성할 수 있으며, 파일을 수신하는 중간에 계속 세그먼트 단위로 저장하여, 세그먼트에 대한 체크파일을 생성할 수 있다.
도 6의 순서도는 원본 파일이 존재하는 경우, 원본 파일의 체크파일과 비교하여 클라이언트로부터 상이한 파일 부분을 수신하는 방식을 채택하고 있다.
이외에도, 업로드할 파일에 대한 체크파일이 다수인 경우, 클라이언트가 체크파일을 모두 송신하고, 파일 서버에서 상이한 부분만을 클라이언트에 알려서, 해당 세그먼트만을 수신하는 방식도 가능하다.
도 7은 본 발명의 일 실시예에 따른 클라이언트와 서버간의 작업을 보여주는 시퀀스 다이어그램이다.
클라이언트(500)는 파일 정보를 송신한다(S201). 파일 정보에는 동일성을 검토하기 위한 체크파일, 파일 사이즈, 파일명 등이 포함된다. 또는 상기 정보들을 포함한 체크파일을 송신할 수 있다. 이를 수신한 송수신부(910)는 이 정보를 가지는 원본 파일이 존재하는지 파일 정보부(950)를 통해 검토한다(S205). 검토 결과 원본 파일이 존재하면 원본 파일이 존재함을 알린다(S208). 그리고 송수신부(910)는 원본 파일이 존재하므로 체크파일등을 통해 상이한 부분만을 업로드하게 됨을 클라이언트(500)에 알린다(S210).
클라이언트(500)는 중복되지 않는 파일 또는 파일의 일부를 서버에 전송하기 위해 파일을 구성하는 세그먼트의 체크파일을 전송한다. 클라이언트(500)의 업로드 대상이 되는 파일이 다수의 작은 파일들로 구성된 경우에는 각 파일이 세그먼트가 될 수 있다. 첫번째 세그먼트의 체크파일을 송신한다(S213). 이 체크파일을 수신한 송수신부(910)는 체크파일을 파일저장부(960)에 송신한다(S215). 그리고 수신한 체크파일을 원본 파일의 체크파일과 비교한다(S217). 비교 결과 체크파일이 동일하다면, 해당 체크파일이 나타내는 파일 또는 파일의 일부인 세그먼트를 수신할 필요가 없다. 따라서 이러한 비교 결과를 송수신부에 송신한다(S220). 그리고 송수신부(910)는 다음 세그먼트인 두번째 세그먼트의 체크파일을 송신할 것을 요청한다(S222). 클라이언트(S500)는 두번째 세그먼트의 체크파일을 송신한다(S225). 역시 송수신부(910)는 체크파일을 파일저장부(960)로 송신한다(S227). 파일저장부(960)에서는 원본 파일의 두번째 세그먼트의 체크파일과 비교한다(S229). 그 결과 두 체크파일이 동일하지 않을 경우, 그 결과를 송수신부에 송신한다(S232). 송수신부는 두번째 체크파일이 동일하지 않으므로, 두번째 세그먼트를 전송할 것을 요청한다(S234). 클라이언트는 두번째 세그먼트를 송신한다(S237). 송수신부(910)는 이 세그먼트를 파일저장부(960)에 송신한다(S239). 파일저장부(960)는 세그먼트를 저장하고, 이 세그먼트에 대한 체크파일을 저장한다(S241).
이후, 클라이언트와 파일서버는 세그먼트별로 중복여부를 검토하여 상이한 세그먼트를 저장한다. 클라이언트가 마지막 세그먼트의 체크파일을 송신하면(S261) 송수신부(910)는 체크파일을 파일저장부(960)으로 송신하여 원본과 비교한다. 그 결과 동일하면 송수신부(910)에 비교 결과를 송신하고(S268), 송수신부(910)는 클 라이언트(500)에 업로드 종료됨을 알린다(S270). 물론, 마지막 세그먼트의 체크파일이 원본과 다르다면, S234 내지 S241에 제시된 과정을 수행하게 된다. 그리고 파일 정보부(950)는 업로드 파일의 정보를 수정 하거나 저장하고, 원본 파일의 정보를 수정한다(S272).
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
본 발명을 구현함으로써 파일의 중복되지 않는 부분만을 저장하여 저장 공간의 효율을 높일 수 있다.
본 발명을 구현함으로써 중복된 파일의 업로드를 제한하여 네트워크의 부하를 줄일 수 있다.

Claims (24)

  1. 클라이언트로부터 다수의 세그먼트들로 분할된 제 1 파일에 대한 정보를 수신하는 단계;
    상기 수신된 정보에 따라 상기 제 1 파일과 동일한 부분을 가지는 제 2 파일이 존재하는지 검색하는 단계;
    상기 제 2 파일이 존재하는 경우, 상기 제 1 파일의 세그먼트들에 대한 체크데이터를 순차적으로 수신하는 단계;
    상기 수신한 체크데이터가 상기 제 2 파일의 세그먼트의 체크데이터와 다른 경우, 상기 제 1 파일의 해당 세그먼트를 수신하는 단계; 및
    상기 수신된 제 1 파일의 세그먼트 및 상기 수신된 제 1 파일의 세그먼트의 체크데이터를 저장하는 단계를 포함하는, 파일의 정보를 이용하여 중복된 파일을 저장하는 방법.
  2. 제 1항에 있어서,
    상기 체크데이터가 비교되는 세그먼트는, 상기 제 1 파일 및 상기 제 2 파일에서 위치가 동일한 세그먼트인, 파일의 정보를 이용하여 중복된 파일을 저장하는 방법.
  3. 제 1항에 있어서,
    상기 체크데이터가 비교되는 세그먼트는, 동일한 비트스트링을 가지며 공통의 제 3 영역과 동일한 오프셋을 가지는, 파일의 정보를 이용하여 중복된 파일을 저장하는 방법.
  4. 삭제
  5. 제 1항에 있어서,
    상기 체크데이터는 상기 제 1 파일의 적어도 일부에 대해 CRC 또는 체크섬 방식을 통해 얻은 데이터를 포함하는, 파일의 정보를 이용하여 중복된 파일을 저장하는 방법.
  6. 제 1항에 있어서,
    상기 체크데이터는 상기 제 1 파일의 크기에 대한 정보를 포함하는, 파일의 정보를 이용하여 중복된 파일을 저장하는 방법.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 클라이언트로부터 다수의 세그먼트들로 분할된 제 1 파일에 대한 정보를 수신하고, 상기 제 1 파일과 동일한 부분을 가지는 제 2 파일이 존재하는 경우 상기 제 1 파일의 세그먼트들에 대한 체크데이터를 순차적으로 수신하고, 그리고
    상기 수신한 체크데이터가 상기 제 2 파일의 세그먼트의 체크데이터와 다른 경우, 상기 제 1 파일의 해당 세그먼트를 수신하는 송수신부;
    상기 수신된 제 1 파일에 대한 정보에 따라 상기 제 1 파일과 동일한 부분을 가지는 제 2 파일이 존재하는지 검색하고, 상기 수신한 체크데이터를 상기 제 2 파일의 세그먼트의 체크데이터와 비교하는 파일 정보부; 및
    상기 수신된 제 1 파일의 세그먼트 및 상기 수신된 제 1 파일의 세그먼트의 체크데이터를 저장하는 파일 저장부를 포함하는 파일 서버.
  18. 삭제
  19. 제 17항에 있어서,
    상기 체크데이터가 비교되는 세그먼트는, 상기 제 1 파일 및 상기 제 2 파일에서 위치가 동일한 세그먼트인, 파일 서버.
  20. 제 17항에 있어서,
    상기 체크데이터가 비교되는 세그먼트는, 동일한 비트스트링을 가지며 공통의 제 3 영역과 동일한 오프셋을 가지는, 파일 서버.
  21. 삭제
  22. 제 17항에 있어서,
    상기 체크데이터는 상기 제 1 파일의 적어도 일부에 대해 CRC 또는 체크섬 방식을 통해 얻은 데이터를 포함하는, 파일 서버.
  23. 제 17항에 있어서,
    상기 체크데이터는 상기 제 1 파일의 크기에 대한 정보를 포함하는, 파일 서버.
  24. 삭제
KR1020040112109A 2004-12-24 2004-12-24 파일의 정보를 이용하여 중복된 파일을 저장하고다운로드하는 방법 및 장치 Expired - Lifetime KR100700200B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040112109A KR100700200B1 (ko) 2004-12-24 2004-12-24 파일의 정보를 이용하여 중복된 파일을 저장하고다운로드하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040112109A KR100700200B1 (ko) 2004-12-24 2004-12-24 파일의 정보를 이용하여 중복된 파일을 저장하고다운로드하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20060073724A KR20060073724A (ko) 2006-06-29
KR100700200B1 true KR100700200B1 (ko) 2007-03-27

Family

ID=37166618

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040112109A Expired - Lifetime KR100700200B1 (ko) 2004-12-24 2004-12-24 파일의 정보를 이용하여 중복된 파일을 저장하고다운로드하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100700200B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103636B2 (en) 2007-12-13 2012-01-24 Electronics And Telecommunications Research Institute File storage system and method for managing duplicate files in file storage system

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8280926B2 (en) 2003-08-05 2012-10-02 Sepaton, Inc. Scalable de-duplication mechanism
WO2009091957A2 (en) * 2008-01-16 2009-07-23 Sepaton, Inc. Scalable de-duplication mechanism
US8495028B2 (en) 2010-01-25 2013-07-23 Sepaton, Inc. System and method for data driven de-duplication
US8688651B2 (en) 2011-01-25 2014-04-01 Sepaton, Inc. Dynamic deduplication
KR101147892B1 (ko) * 2011-10-19 2012-05-24 주식회사 한글과컴퓨터 스토리지 장치 및 상기 스토리지 장치의 파일 관리 방법
US9766832B2 (en) 2013-03-15 2017-09-19 Hitachi Data Systems Corporation Systems and methods of locating redundant data using patterns of matching fingerprints
US9256611B2 (en) 2013-06-06 2016-02-09 Sepaton, Inc. System and method for multi-scale navigation of data
US9678973B2 (en) 2013-10-15 2017-06-13 Hitachi Data Systems Corporation Multi-node hybrid deduplication

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030067282A (ko) * 2002-02-07 2003-08-14 윤용환 Db를 이용한 대량의 디지털 파일의 압축 저장 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030067282A (ko) * 2002-02-07 2003-08-14 윤용환 Db를 이용한 대량의 디지털 파일의 압축 저장 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103636B2 (en) 2007-12-13 2012-01-24 Electronics And Telecommunications Research Institute File storage system and method for managing duplicate files in file storage system

Also Published As

Publication number Publication date
KR20060073724A (ko) 2006-06-29

Similar Documents

Publication Publication Date Title
US10909110B1 (en) Data retrieval from a distributed data storage system
CN111090645B (zh) 基于云存储的数据传输方法、装置及计算机设备
CN107423426B (zh) 一种区块链块数据的数据归档方法及电子设备
CN1331076C (zh) 实时搜索引擎
US10459886B2 (en) Client-side deduplication with local chunk caching
EP1977318B1 (en) Remotely repairing files by hierarchical and segmented cyclic redundancy checks
US9917894B2 (en) Accelerating transfer protocols
US20160042008A1 (en) Technique selection in a deduplication aware client environment
JP2006338680A (ja) コンテンツアドレス可能な情報のカプセル化、表現、および転送
CN109597717A (zh) 一种数据备份、恢复方法、装置、电子设备及存储介质
CN101379465A (zh) 利用多种选择标准进行数据管理的方法和系统
US10339124B2 (en) Data fingerprint strengthening
CN106575527A (zh) 生成用于数据存储的分子编码信息
CN108512898B (zh) 文件推送方法、装置、计算机设备和存储介质
KR100700200B1 (ko) 파일의 정보를 이용하여 중복된 파일을 저장하고다운로드하는 방법 및 장치
US20110055179A1 (en) System for and method of partial file hashing
CN105320577A (zh) 一种数据备份和恢复方法、系统及装置
CN105162747B (zh) 用于压缩设备与解压缩设备探索及握手的系统和方法
CN110737635B (zh) 一种数据分块方法
CN103269351A (zh) 一种文件下载方法和装置
US7660876B2 (en) Electronic file management
JP2005100007A (ja) データファイル保存システムおよびアロケーション方法
WO2017027226A1 (en) On the fly statistical delta differencing engine
CN112688905A (zh) 数据传输方法、装置、客户端、服务器及存储介质
WO2013136584A1 (ja) データ転送システム

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20041224

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20060721

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20070118

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20070320

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20070321

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20100225

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20110113

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20120420

Start annual number: 6

End annual number: 6

FPAY Annual fee payment

Payment date: 20130320

Year of fee payment: 7

PR1001 Payment of annual fee

Payment date: 20130320

Start annual number: 7

End annual number: 7

FPAY Annual fee payment

Payment date: 20140320

Year of fee payment: 8

PR1001 Payment of annual fee

Payment date: 20140320

Start annual number: 8

End annual number: 8

FPAY Annual fee payment

Payment date: 20160318

Year of fee payment: 10

PR1001 Payment of annual fee

Payment date: 20160318

Start annual number: 10

End annual number: 10

FPAY Annual fee payment

Payment date: 20170320

Year of fee payment: 11

PR1001 Payment of annual fee

Payment date: 20170320

Start annual number: 11

End annual number: 11

FPAY Annual fee payment

Payment date: 20180320

Year of fee payment: 12

PR1001 Payment of annual fee

Payment date: 20180320

Start annual number: 12

End annual number: 12

PR1001 Payment of annual fee

Payment date: 20210318

Start annual number: 15

End annual number: 15

PR1001 Payment of annual fee

Payment date: 20220321

Start annual number: 16

End annual number: 16

PR1001 Payment of annual fee

Payment date: 20240319

Start annual number: 18

End annual number: 18

PC1801 Expiration of term

Termination date: 20250624

Termination category: Expiration of duration