KR20060073724A - Method and device for storing and downloading duplicate files by using file information - Google Patents
Method and device for storing and downloading duplicate files by using file information Download PDFInfo
- Publication number
- KR20060073724A KR20060073724A KR1020040112109A KR20040112109A KR20060073724A KR 20060073724 A KR20060073724 A KR 20060073724A KR 1020040112109 A KR1020040112109 A KR 1020040112109A KR 20040112109 A KR20040112109 A KR 20040112109A KR 20060073724 A KR20060073724 A KR 20060073724A
- Authority
- KR
- South Korea
- Prior art keywords
- file
- check data
- same
- client
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/109—Sector 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
파일의 정보를 이용하여 중복된 파일을 저장하고 다운로드하는 방법 및 장치에 관한 것이다.A method and apparatus for storing and downloading duplicate files using information of a file.
본 발명의 일 실시예에 따른 파일의 정보를 이용하여 중복된 파일을 저장하는 방법은 클라이언트로부터 제 1 파일의 적어도 일부에 대한 체크데이터를 수신하는 단계, 상기 수신한 체크데이터와 동일한 체크데이터를 가지는 제 2 파일을 검색하는 단계, 상기 제 2 파일이 존재하는 경우, 상기 클라이언트로부터 상기 제 1 파일을 상기 제 2 파일과 비교하여 동일한 부분과 상이한 부분을 추출하는 단계 및 상기 제 1 파일의 상기 동일한 부분은 상기 제 2 파일을 참조하고, 상기 제 1 파일의 상기 상이한 부분만 저장하는 단계를 포함한다.According to an embodiment of the present invention, a method of storing a duplicate file by using information of a file includes receiving check data for at least a portion of a first file from a client, and having the same check data as the received check data. Retrieving a second file, if the second file exists, comparing the first file with the second file from the client to extract a same portion and a different portion and the same portion of the first file Refers to the second file and includes storing only the different portion of the first file.
중복 파일, 파일 서버, CRC, 세그먼트Duplicate File, File Server, CRC, Segment
Description
도 1은 종래 중복된 대용량 파일을 사용자별로 저장하는 경우를 보여주는 예시도이다.1 is an exemplary view showing a case where a conventional duplicated large file is stored for each user.
도 2는 본 발명의 일 실시예에 따른 다수의 동일한 파일이 하나의 파일로 저장되는 예시도이다.2 is an exemplary diagram in which a plurality of identical files are stored as one file according to an embodiment of the present invention.
도 3은 본 발명의 일 실시예에 따른 클라이언트와 파일 서버의 구성을 보여주는 예시도이다. 3 is an exemplary view showing a configuration of a client and a file server according to an embodiment of the present invention.
도 4는 본 발명의 일 실시예에 따른 두 파일의 일부 중복을 처리하는 과정을 보여주는 예시도이다.4 is an exemplary view illustrating a process of processing some duplication of two files according to an embodiment of the present invention.
도 5는 본 발명의 일 실시예에 따른 파일 서버에 중복된 파일의 상이한 부분들이 저장되는 예시도이다.5 is an exemplary diagram in which different parts of a duplicate file are stored in a file server according to an embodiment of the present invention.
도 6은 본 발명의 일 실시예에 따른 파일 서버가 클라이언트로부터 파일을 수신하는 과정을 보여주는 순서도이다.6 is a flowchart illustrating a process in which a file server receives a file from a client according to an embodiment of the present invention.
도 7은 본 발명의 일 실시예에 따른 클라이언트와 서버간의 작업을 보여주는 시퀀스 다이어그램이다.7 is a sequence diagram showing operations between a client and a server according to an embodiment of the present invention.
<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>
500: 클라이언트 520: 세그먼트 생성부500: client 520: segment generator
530: 체크파일 생성부 950: 파일 정보부530: check file generation unit 950: file information unit
960: 파일저장부 1000: 파일 서버960: file storage unit 1000: file server
파일의 정보를 이용하여 중복된 파일을 저장하고 다운로드하는 방법 및 장치에 관한 것이다.A method and apparatus for storing and downloading duplicate files using information of a file.
최근 멀티미디어 기술의 증가와 대용량 저장매체의 상용화로 멀티미디어 파일의 크기와 디지털 장치의 저장 용량은 꾸준히 증대되고 있다. 또한 과거에 파일을 개인의 디지털 장치에 저장하는 방식에서 점차 탈피하여, 대용량 저장 공간을 제공하는 회사의 저장 장치를 사용하는 방식이 자리잡아 가고 있다. 그러나 대용량의 저장 공간에 저장되는 많은 멀티미디어 파일들은 중복되는 경우가 허다하다. 특히, 멀티미디어 파일의 경우에는 사용자가 파일을 조작하거나 변경할 가능성이 낮으며, 유사한 시점에 동일한 멀티미디어 파일이 각기 다른 사용자들에 의해 저장될 가능성이 높다는 점에서 저장 공간의 효율을 떨어뜨린다.Recently, with the increase of multimedia technology and the commercialization of mass storage media, the size of multimedia files and the storage capacity of digital devices are steadily increasing. In addition, in the past, the method of using a company's storage device that provides a large amount of storage space is gradually moving away from storing the file on a personal digital device. However, many multimedia files stored in a large storage space are often duplicated. In particular, in the case of a multimedia file, the user is unlikely to manipulate or change the file, which reduces the storage space efficiency in that the same multimedia file is likely to be stored by different users at similar time points.
사용자가 저장하는 개인용 디지털 저장 장치에 중복된 파일을 찾아주는 프로그램은 현재 많이 유통중이다. 이는 개인용 컴퓨터에 저장되는 파일의 유형을 검사하여 중복된 파일을 찾아내는 방식으로, 개별 파일을 일대일로 찾아서 검사한다.Programs that find duplicate files in personal digital storage devices that users store are currently in circulation. It checks for the type of files stored on your personal computer and finds duplicate files.
그러나, 다양한 사용자가 파일을 저장하는 스토리지 서비스(storage service)에서는 수많은 개별 파일을 일일이 검색하여 중복을 찾는 것은 엄청난 시간을 필요로 하므로, 실제 스토리지 서비스를 제공하는 파일 저장 서버에 이를 적용하기에는 무리가 있다. 또한 스토리지 서비스를 제공하는 파일 저장 서버는 하나의 컴퓨터에 구성되는 것이 아니라, 다수의 대용량 저장 장치를 가지는 컴퓨터들을 연결하여 구성하기 때문에, 각 저장 장치를 다 검사한다는 것은 불가능하다.However, in the storage service, where various users store files, searching through a large number of individual files and searching for duplicates takes tremendous time, so it is difficult to apply them to a file storage server that provides a real storage service. . In addition, since the file storage server providing the storage service is not configured on a single computer, but is configured by connecting computers having a plurality of mass storage devices, it is impossible to inspect each storage device.
스토리지 서비스를 제공함에 있어서 중복된 파일을 저장하는 것은 비단 저장 공간의 낭비만을 초래하는 것이 아니다. 도 1에서는 중복된 대용량 파일을 저장하는 경우 저장 공간과 네트워크의 효율이 떨어지는 경우를 보여준다.In providing storage services, storing duplicate files is not only a waste of storage space. FIG. 1 shows a case in which duplicated large files are stored, and storage efficiency and network efficiency are reduced.
도 1은 종래 중복된 대용량 파일을 사용자별로 저장하는 경우를 보여주는 예시도이다.1 is an exemplary view showing a case where a conventional duplicated large file is stored for each user.
파일 서버(1000)를 사용하는 사용자(10, 20, 90)이 동일한 파일인 Movie_nemo.avi를 업로드하고 있다. 통상적으로 멀티미디어 파일의 경우 특정 시점에 동일한 컨텐츠에 대한 관심이 집중되므로, 같은 컨텐츠를 가지는 다수의 멀티미디어 파일이 파일 서버(1000)에 저장되는 경우가 많다. 그 결과, 파일 서버(1000)에는 동일한 파일(201, 202, 209)가 저장됨으로써, 불필요한 공간이 낭비되며, 동일한 파일을 중복하여 업로드하기 때문에 네트워크의 부하가 커진다. A
따라서, 대용량 파일 서버에 업로드 되는 파일의 중복을 피하고, 중복되는 파일의 저장을 효율적으로 처리하여, 저장 공간의 낭비와 네트워크의 부하를 줄이는 방법이 필요하다.Therefore, there is a need for a method of avoiding duplication of files uploaded to a large file server, efficiently processing duplicate files, and reducing storage space and network load.
본 발명이 이루고자 하는 기술적 과제는 파일의 중복되는 부분은 저장하지 않음으로써 저장 공간의 효율을 높이는데 있다.The technical problem to be achieved by the present invention is to increase the efficiency of the storage space by not storing the overlapping portion of the file.
본 발명이 이루고자 하는 또다른 기술적 과제는 중복된 파일의 업로드를 제한하여 네트워크의 부하를 줄이는데 있다.Another technical problem to be achieved by the present invention is to reduce the load on the network by limiting the upload of duplicate files.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The objects of the present invention are not limited to the above-mentioned objects, and other objects that are not mentioned will be clearly understood by those skilled in the art from the following description.
파일의 정보를 이용하여 중복된 파일을 저장하고 다운로드하는 방법 및 장치에 관한 것이다.A method and apparatus for storing and downloading duplicate files using information of a file.
본 발명의 일 실시예에 따른 파일의 정보를 이용하여 중복된 파일을 저장하는 방법은 클라이언트로부터 제 1 파일의 적어도 일부에 대한 체크데이터를 수신하는 단계, 상기 수신한 체크데이터와 동일한 체크데이터를 가지는 제 2 파일을 검색하는 단계, 상기 제 2 파일이 존재하는 경우, 상기 클라이언트로부터 상기 제 1 파일을 상기 제 2 파일과 비교하여 동일한 부분과 상이한 부분을 추출하는 단계 및 상기 제 1 파일의 상기 동일한 부분은 상기 제 2 파일을 참조하고, 상기 제 1 파일의 상기 상이한 부분만 저장하는 단계를 포함한다.According to an embodiment of the present invention, a method of storing a duplicate file by using information of a file includes receiving check data for at least a portion of a first file from a client, and having the same check data as the received check data. Retrieving a second file, if the second file exists, comparing the first file with the second file from the client to extract a same portion and a different portion and the same portion of the first file Refers to the second file and includes storing only the different portion of the first file.
본 발명의 다른 실시예에 따른 파일의 정보를 이용하여 중복된 파일을 저장하는 방법은 클라이언트로부터 제 1 파일그룹의 적어도 일부 파일에 대한 체크데이 터를 수신하는 단계, 상기 수신한 체크데이터와 동일한 체크데이터를 가지는 제 2 파일그룹을 검색하는 단계, 상기 제 2 파일그룹이 존재하는 경우, 상기 클라이언트로부터 상기 제 1 파일그룹의 제 1 파일과 상기 제 2 파일그룹의 제 2 파일을 비교하는 단계 및 상기 제 2 파일과 동일한 상기 제 1 파일은 상기 제 2 파일을 참조하고, 상기 제 2 파일과 동일하지 않은 상기 제 1 파일은 저장하는 단계를 포함한다.According to another aspect of the present invention, there is provided a method of storing a duplicate file using information of a file, the method comprising: receiving check data of at least some files of a first filegroup from a client, the same check as the received check data Retrieving a second filegroup having data, comparing the first file of the first filegroup with the second file of the second filegroup from the client if the second filegroup exists; and The first file, which is identical to the second file, refers to the second file, and the first file, which is not the same as the second file, is stored.
본 발명의 일 실시예에 따른 파일의 정보를 이용하여 중복된 파일을 다운로드하는 방법은 클라이언트로부터 다운로드할 제 1 파일에 대한 정보를 수신하는 단계, 상기 제 1 파일과 동일한 부분을 가지는 제 2 파일이 존재하는지 검색하는 단계, 상기 제 2 파일이 존재하는 경우, 상기 제 1 파일과 상기 제 2 파일의 동일한 부분은 상기 제 2 파일에서 추출하여 상기 클라이언트에 송신하고, 상기 제 1 파일과 상기 제 2 파일의 상이한 부분은 상기 제 1 파일에서 추출하여 상기 클라이언트에 송신하는 단계를 포함한다.According to an embodiment of the present invention, a method of downloading a duplicate file by using information of a file may include receiving information about a first file to be downloaded from a client, wherein the second file having the same portion as the first file may be selected. Searching for existence, if the second file exists, the same part of the first file and the second file is extracted from the second file and sent to the client, and the first file and the second file The different portion of the includes extracting from the first file and sending it to the client.
본 발명의 일 실시예에 따른 파일 서버는 클라이언트로부터 제 1 파일의 적어도 일부에 대한 체크데이터를 수신하는 송수신부, 상기 수신한 체크데이터와 동일한 체크데이터를 가지는 제 2 파일을 검색하며, 상기 수신한 체크데이터를 저장하는 파일 정보부 및 상기 제 2 파일이 존재하는 경우, 상기 클라이언트로부터 상기 제 1 파일과 상기 제 2 파일을 비교하여 동일한 부분과 상이한 부분을 추출하여 상기 동일한 부분은 상기 제 2 파일을 참조하도록 저장하며, 상기 상이한 부분은 상기 제 1 파일의 일부를 사용하여 저장하는 파일저장부를 포함한다.The file server according to an embodiment of the present invention is a transceiver for receiving check data for at least a portion of a first file from a client, searching for a second file having the same check data as the received check data, and receiving the received data. If the file information unit storing the check data and the second file exist, comparing the first file and the second file from the client and extracting the same and different parts, the same part refers to the second file. And the different portion includes a file storage portion for storing using a portion of the first file.
설명에 앞서 본 명세서에서 사용하는 용어의 의미를 간략히 설명한다. 그렇 지만 용어의 설명은 본 명세서의 이해를 돕기 위한 것으로서 명시적으로 본 발명을 한정하는 사항으로 기재하지 않은 경우에 본 발명의 기술적 사상을 한정하는 의미로 사용하는 것이 아님을 주의해야 한다.Prior to the description, the meaning of terms used in the present specification will be briefly described. Nevertheless, it should be noted that the terminology is used to limit the technical spirit of the present invention unless it is explicitly described as limiting the present invention as an explanation of the present specification.
- CRC (Cyclic Redundancy Checking)-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 is one of the methods for checking if there is an error in the data transmitted on the communication link. The transmitter applies a 16-bit or 32-bit polynomial to the block of data to be transmitted, and adds the resulting code to the block. The receiver applies the same polynomial to the data and compares the result with that sent by the sender. If the two match, the data has been successfully received, otherwise the sender is requested to retransmit the data block. The ITU-T has established a standard for 16-bit polynomials used to obtain codes to be added to transmission blocks. The 16-bit CRC guarantees 99.998% detection for all possible errors, including when two bits fail at the same time. This degree of detection assurance is estimated to be sufficient for data block transmission of 4 KB or less, and 32-bit CRC is used for further large-scale transmission. Both the Ethernet and Token ring protocols also use 32-bit CRCs. A slightly less complicated and less error-prone method is the checksum method. The checksum method counts the bits in a transmission unit so that the receiver can verify that the same number of bits have arrived. If the calculation is correct, it is considered smoothly received without errors. Checksum calculation and verification services are provided at both the TCP and UDP communication layers.
- 파일- file
파일은 통상적으로 데이터를 다루는 단위가 된다. 따라서 하나의 멀티미디어 컨텐츠, 하나의 저작물등은 통상 하나 이상의 파일로 구성된다. 본 명세서에서는 주된 실시예로 하나의 파일이 하나의 의미있는 데이터로 존재하는 경우를 나타내고 있으나 이에 한정되는 것은 아니다. 후술할 세그먼트가 하나의 파일로 존재할 수 있으며, 특히 파일 서버의 경우에는 원래 하나였던 파일을 중복 여부를 검토할 수 있게 일정 크기 또는 일정 기준에 따라 여러 개의 세그먼트로 나누어 저장할 수 있는데, 이 세그먼트가 각각 파일로 저장될 수 있다. 따라서 파일 서버는 하나의 파일로 저장하는 경우와 여러 개의 세그먼트로 나뉘어진 여러 파일을 저장하는 경우 모두를 포함한다.A file is usually a unit for handling data. Therefore, one multimedia content, one copyrighted work, etc. are usually composed of one or more files. In the present specification, as a main embodiment, one file exists as one meaningful data, but is not limited thereto. Segments to be described later may exist as a single file. Especially, in the case of a file server, a file that was originally one may be divided into several segments according to a predetermined size or a predetermined criterion to check whether a file is duplicated. Can be saved as a file. Therefore, a file server includes both a single file and a multi-segment file.
- 체크파일-Check file
체크파일은 체크데이터의 일종이다. 체크데이터는 파일 또는 파일의 일부에 대해 CRC, 체크섬을 통해 얻을 수 있으며, 또한 파일의 크기, 파일명, 파일의 유형등을 포함할 수 있다. 체크파일은 체크데이터를 파일서버에서 파일 형태로 저장하는 것을 의미한다. 파일 형태로 저장될 경우, 파일 서버는 업로드시 체크파일을 체크데이터로 하여 파일의 동일 여부를 검토할 수 있다. 본 명세서에서는 체크데이터가 데이터 베이스에 일부 저장되고, 또 일부는 파일의 형태로 저장되므로 체크데이터의 일 실시예로 체크파일이라 명명한다. 그러나, 본 발명은 이에 한정되는 것이 아니며, 체크데이터는 파일의 형태로 저장되지 않고 매 업로드 순간마다 계산하는 방식으로 생성될 수도 있다. 또한 데이터베이스에 저장되어 검색할 수 있다.The check file is a kind of check data. Check data can be obtained through CRC, checksum for a file or part of a file, and can also include the file size, file name, file type, and so on. Check file means to save the check data in the form of a file in the file server. When stored in the form of a file, the file server may check whether the files are identical by using the check file as the check data when uploading. In the present specification, since the check data is partially stored in the database, and part of the check data is stored in the form of a file, the check data is referred to as an embodiment of the check data. However, the present invention is not limited thereto, and the check data may not be stored in the form of a file but may be generated by calculating at every upload moment. It can also be stored in a database for searching.
도 2는 본 발명의 일 실시예에 따른 다수의 동일한 파일이 하나의 파일로 저장되는 예시도이다.2 is an exemplary diagram in which a plurality of identical files are stored as one file according to an embodiment of the present invention.
파일 서버(1000)에 다수의 사용자가 Movie_nemo.avi 파일을 업로드 하고 있다. 여기서 어느 한 사용자의 Movie_nemo.avi 파일(210)만을 저장하고, 다른 사용자에게는 그 파일이 저장된 것으로 통지한다. 그리고 파일 서버(1000)에 저장된 Movie_nemo.avi 파일을 N 명의 사용자가 저장하였음을 나타내기 위한 카운터(291)를 사용한다. 이후, N 명의 사용자중 K 명이 이 파일의 삭제를 요청하면, 파일 서버(1000)는 파일을 직접 삭제하는 것이 아니라 카운터(291)를 N-K로 변경한다. 이 숫자가 0이 되면 더 이상 이 파일을 저장한 사용자가 없으므로 파일 서버(1000)에서 삭제한다. 동일한 파일을 다시 누군가가 저장하려 한다면, 카운터(291)를 1 증가시킨다.Many users upload the Movie_nemo.avi file to the
도 3은 본 발명의 일 실시예에 따른 클라이언트와 파일 서버의 구성을 보여주는 예시도이다.3 is an exemplary view showing a configuration of a client and a file server according to an embodiment of the present invention.
본 실시예에서 사용되는 '~부'라는 용어, 즉 '~모듈' 또는 '~테이블' 등은 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 기능들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시 저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 모듈들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.The term '~ part' used in this embodiment, that is, '~ module' or '~ table' means a hardware component such as software, FPGA or ASIC, and the module performs certain functions. However, modules are not meant to be limited to software or hardware. The module may be configured to be in an addressable storage medium and may be configured to play one or more processors. Thus, as an example, a module may include components such as software components, object-oriented software components, class components, and task components, and processes, functions, properties, procedures, subroutines, and the like. , Segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables. The functionality provided within the components and modules may be combined into a smaller number of components and modules or further separated into additional components and modules. In addition, the components and modules may be implemented to play one or more CPUs in a device or secure multimedia card.
클라이언트(500)는 전술한 사용자의 컴퓨터(10, 20, 90)에 설치되며, 파일의 업로드, 다운로드를 수행한다. 클라이언트(500)는 크게 파일과 데이터를 송수신하는 송수신부(510), 하나의 파일을 일정 크기 또는 일정 기준에 따라 세그먼트로 나누는 세그먼트 생성부(520), 그리고 하나의 파일에 대해, 또는 세그먼트에 대해 체크파일을 생성하는 체크파일 생성부(530), 그리고 파일이 저장되어 있는 파일 저장부(560)를 포함한다.The
송수신부(510)는 파일 서버와 데이터 및 파일을 송수신한다. 유, 무선의 네트워크를 통해 파일을 송수신한다. 상기 송수신되는 파일은 하나의 파일일 수 있고, 또는 파일을 나눈 세그먼트일 수 있다.The
세그먼트 생성부(520)는 파일을 일정 길이 또는 일정 기준에 따라 나눈다. 이는 파일의 중복을 체크하기 위해 파일 전체에 대해서 수행하는 것은 시간이 걸릴 수 있으므로, 파일을 일정 크기만큼 나눌 수 있기 때문이다. 대용량의 파일이 이미 일정 크기로 나뉘어진 경우에는 세그먼트 생성부(520)을 거치지않고 전송될 수 있다.The
체크파일 생성부(530)는 파일 또는 파일의 일부인 세그먼트에서 정보를 추출하여 파일 또는 세그먼트의 동일 여부를 검토할 수 있게 하는 체크파일을 생성한다. 체크파일의 생성 방법으로는 전술한 CRC 방법, 또는 체크섬(Checksum) 방법이 될 수 있다. 이외에도, 파일 또는 세그먼트에 대한 비트의 정보, 사이즈 등으로 체크파일을 만들 수 있다.The check
파일저장부(560)는 업로드할 파일이 저장되거나 또는 다운로드할 파일을 저장할 매체를 의미한다. 대용량의 파일의 저장이 하드디스크를 통해 이루어졌으나, 최근, 플래쉬 메모리, USB 저장장치 등으로 다양해지고 있다.The
클라이언트(500)는 파일 서버(1000)에 파일을 업로드 하기전에 업로드할 파일의 정보를 파일 서버(1000)에 전송한다. 전송할 정보로는 파일의 동일성을 검토할 수 있는 것으로서, 예를 들어, 파일 또는 파일의 첫번째 세그먼트에 대한 체크파일과 파일의 사이즈, 파일명 등이 될 수 있다. 멀티미디어 컨텐츠가 하나의 파일로 존재한다면 세그먼트 생성부(520)에서 세그먼트로 나눈후, 체크파일 생성부(530)에서 체크파일을 생성한다. 송수신부(510)는 파일의 정보, 예를 들어 체크파일, 파일의 사이즈, 파일명 등을 파일 서버(1000)로 전송하여 파일 서버(1000)에 동일한 파일이 저장되어 있는지 검토할 수 있게 한다. 파일 서버(1000)는 수신한 정보들을 이용하여, 완전히 동일한 파일인 경우에는 파일을 수신하지 않고, 업로드하고자 한 파일에 대한 정보만을 저장한다. 일부가 상이한 파일인 경우에는 상이한 부분만 수신하도록 클라이언트(500)에 요청한다. 상이한 부분을 검토하는 방법은 후술하고자 한다.The
파일 서버(1000)는 송수신부(910), 세그먼트 생성부(920), 체크파일 생성부(930), 파일 정보부(950), 파일저장부(960)을 포함한다.The
송수신부(910)는 클라이언트(500)와 파일과 데이터를 송수신한다. 클라이언트(500)와는 유, 무선의 네트워크를 통해 데이터와 파일을 송수신할 수 있다. 세그먼트 생성부(920)는 클라이언트(500)가 파일을 전송하는 경우, 이를 세그먼트로 생성하여 저장하는 작업을 수행한다. 클라이언트(500)가 업로드하는 파일과 중복되는 파일이 존재하지 않을 경우, 클라이언트(500)는 파일을 세그먼트로 나누지 않고 그대로 전송할 수 있다. 수신한 파일을 원본으로 중복 여부를 검토할 수 있도록 세그먼트 생성부는 수신한 파일을 세그먼트로 나눈다. The
체크파일 생성부(930)는 각 세그먼트에 대해 체크파일을 생성한다. 파일 서버(1000)에 중복된 파일이 저장되지 않은 경우에는 모든 세그먼트에 대해 체크파일을 생성할 수 있다. 한편, 중복된 파일이 존재한다면, 그 상이한 부분에 해당하는 세그먼트만 저장하고, 이 세그먼트에 대한 체크파일을 생성한다. 이후 사용자가 파일을 다운로드하고자 할 경우, 원본 파일의 세그먼트와 원본 파일과 상이한 세그먼트를 구별하여 다운로드 받을 수 있다. 여기에 대해서는 도 4에서 자세히 살펴보고자 한다.The
파일 정보부(950)는 어떤 파일이 어떤 정보를 가지고 있는지에 대한 정보를 저장한다. 파일의 체크파일의 일부를 포함할 수 있고, 파일의 사이즈, 파일명 등 파일의 동일성을 검토하는데 필요한 정보를 포함할 수 있다. 또한, 원본 파일과 이 파일과 동일하거나 일부 상이한 파일이, 이 원본 파일에 기하여 업로드 된 경우에 는 원본 파일을 찾을 수 있게 하고, 원본 파일을 참조하는 다른 파일이 존재하는 경우에는 원본 파일이 삭제되지 않도록 제어할 수 있다. 파일에 대한 정보는 데이터베이스(database), 정보 파일 등을 이용해 저장할 수 있다.The
파일저장부(960)는 파일을 저장하는 저장 매체이다. 대용량의 파일을 저장하기에 적합한 매체이며, 파일저장부(960)는 여러 시스템에 분산되어 설치될 수 있다. 파일이 어느 시스템의 파일저장부(960)에 저장되었는지를 알기 위한 정보를 파일 정보부(950)가 제공할 수 있다.The
도 3의 실시예에서 파일 서버와 클라이언트는 모두 체크파일 생성부를 가지고 이으며, 체크파일을 저장하는 방식을 제시하고 있다. 그러나 이는 일 실시예에 해당하며, 체크데이터를 업로드, 다운로드시 생성하여 비교할 수 있다. 다만, 업로드 속도를 고려하여 체크데이터를 파일의 형태로 저장하는 것이 바람직하며, 또한 파일의 형태가 아니라도, 데이터베이스와 같은 검색이 용이한 부분을 사용할 수도 있다.In the embodiment of FIG. 3, both the file server and the client have a check file generator, and present a method of storing the check file. However, this corresponds to an embodiment, and check data can be generated and compared when uploading or downloading. However, it is preferable to store the check data in the form of a file in consideration of the upload speed, and it is also possible to use a searchable part such as a database even if the file is not in the form of a file.
도 4는 본 발명의 일 실시예에 따른 두 파일의 일부 중복을 처리하는 과정을 보여주는 예시도이다. 4 is an exemplary view illustrating a process of processing some duplication of two files according to an embodiment of the present invention.
멀티미디어 파일이 모두 동일하다면, 하나의 파일만을 업로드하여 몇 명의 사용자가 이 파일을 저장하였는지를 데이터베이스 또는 파일등의 자료를 통해 관리할 수 있다. 그런데, 파일이 동일한지 여부를 알기 위해서는 해당 파일의 각 비트를 검사하는 방법이 있을 수 있고, 해당 파일을 나타내는 정보를 비교하여 파일의 동일 여부를 검사하는 방법이 있다. 해당 파일의 각 비트를 검사하는 것은 멀티미 디어 파일의 경우 그 크기로 인해, 비교하는데 소요되는 시간이 크다.If the multimedia files are all the same, only one file can be uploaded to manage how many users have stored this file through data such as a database or a file. However, in order to know whether a file is the same, there may be a method of checking each bit of the file, and there is a method of checking whether the file is the same by comparing information representing the file. Examining each bit of the file is time consuming due to its size in the case of multimedia files.
따라서 해당 파일을 나타내는 정보를 비교하는 것이 더 적은 시간을 필요로 할 수 있다. 해당 파일을 나타내는 정보에는 파일의 크기, 파일명, 또는 파일의 특정 부분이거나, 해당 특정 부분을 구성하는 비트들의 패턴 또는 CRC 체크값이 될 수 있다.Therefore, comparing the information that represents the file may take less time. The information indicating the file may be a file size, a file name, or a specific part of the file, or a pattern of bits or a CRC check value constituting the specific part.
도 4에서는 파일의 비트들의 패턴등을 체크하여 이들의 결과값을 비교하여 파일의 동일성을 검토한다. 101은 사용자 1이 올리려는 파일이며, 개인용 컴퓨터 또는 디지털 장치 등에 저장되어 있다. 이 파일은 파일 중복 체크에서 중복되지 않는 파일로 검토되어 파일 서버에 원본 파일로 저장된다. 저장되는 방식은 하나의 파일이 하나 이상의 조각들(segment, 이하 '세그먼트'라 한다)(201, 202, 203 등)로 나뉘어져 저장된다. 이 세그먼트(201, 202, 203 등)는 본 발명의 일 실시예에 따라 파일을 일정 크기로 나누어진 것을 의미한다. 각 세그먼트는 파일 서버에 저장된다. 그리고 각 세그먼트를 나타내는 체크파일(301, 302 등)을 더 생성할 수 있다. 체크파일은 해당 세그먼트의 특성을 나타내며, 두 세그먼트를 구별하는 기준이 된다. 도 4에 나타난 바와 같이 체크파일1(301)은 세그먼트1(201)의 특성을 나타내는 파일이며, 체크파일2(302)는 세그먼트2(202)의 특성을 나타내는 파일이다. 통상적으로 체크파일은 CRC, 체크섬 방식 등을 통해 생성된다. In Fig. 4, the pattern of the bits of the file is checked and the result values thereof are compared to examine the identity of the file. 101 is a file to be uploaded by
다음 사용자인 사용자 2가 102 파일을 업로드하고자 한다. 102 파일이 서버에 저장된 다른 파일과 동일한지 여부를 검토하기 위해, 102 파일의 첫번째 세그먼트(211)의 체크파일(311)을 파일 서버에 전송한다. 파일 서버는 수신한 체크파일 (311)과 저장된 체크파일(301)을 비교한 결과 두 세그먼트(201, 211)가 같은 세그먼트임을 알게 된다. 또한 102파일의 크기가 사용자 1이 업로드한 파일의 사이즈와 유사하거나 유사한 경우, 두 파일은 중복될 가능성이 크다. 따라서 201, 202 등의 세그먼트로 구성된 101 파일을 원본 파일로 하여 중복되지 않는 부분만을 저장한다.The next user,
서버는 201 세그먼트와 동일한 211 세그먼트는 저장할 필요가 없으므로, 201 세그먼트를 수신하지 않고, 다음 세그먼트(212)의 체크파일(312)과 저장된 체크파일(302)를 비교하게 된다. 역시 동일한 결과가 나오므로 두번째 세그먼트(212)도 저장하지 않는다. 세번째 세그먼트(213)의 체크파일(313)을 수신하여 검토한 결과, 두 체크파일(303, 313)이 다르다는 것을 알게 된다. 이는 두 세그먼트(203, 213)가 다르다는 것을 의미하므로, 213 세그먼트를 수신하여 저장한다. 그리고 213 세그먼트에 대한 체크파일(313)을 생성한다. 이후 102 파일의 각 세그먼트들을 전술한 방법으로 비교하여, 체크파일이 다른 경우만 세그먼트를 저장하여 중복된 세그먼트의 저장을 피하여 효율을 높일 수 있다.Since the server does not need to store the 211 segment that is the same as the 201 segment, the server does not receive the 201 segment and compares the
이후, 사용자 2가 102 파일을 다시 다운로드하고자 할때에는, 201, 202 등의 세그먼트 파일을 원본으로 하여 다운로드 받으며, 또한 원본 파일과 상이한 부분으로 저장한 세그먼트(213)도 다운로드 받게 된다.Then, when the
도 4에서는 상이한 부분과 이에 대한 체크파일을 저장하고 있다. 한편 동일한 부분, 예를 들어 세그먼트 1(211), 세그먼트 2(212)의 경우는 원본의 세그먼트인 세그먼트 1(201), 세그먼트 2(202)를 참조해야 하므로, 이 정보를 저장할 수 있 다. 참조 정보는 파일형태로 저장가능하며, 데이터 베이스에 저장할 수도 있다.4 stores different parts and check files thereof. On the other hand, the same part, for example, segment 1 (211), segment 2 (212) should refer to the original segment segment 1 (201), segment 2 (202), so this information can be stored. Reference information can be stored in a file format or stored in a database.
도 4의 실시예에서는 클라이언트가 파일을 업로드하기전에 체크파일을 송신하여, 서버에 저장된 다른 체크파일과 비교하게 된다. 체크파일은 그 체크파일이 나타내는 세그먼트 파일보다 크기가 작으므로, 네트워크를 통해 송수신되는 데이터의 양이 상대적으로 적다. 또한, 동일하거나 일부 세그먼트만이 다른 경우에는, 체크파일만을 지속적으로 송수신하여 비교하고, 그 결과에 따라 상이한 세그먼트만 수신하므로, 중복되는 파일을 업로드 하는 사용자는 업로드 속도가 빠르다. 저장 공간의 효율뿐만 아니라 네트워크 전송량을 절감할 수 있다.In the embodiment of Fig. 4, the client sends a check file before uploading the file and compares it with other check files stored in the server. Since the check file is smaller than the segment file represented by the check file, the amount of data transmitted and received through the network is relatively small. In addition, when the same or only some segments are different, only the check file is continuously transmitted and received and compared, and only different segments are received according to the result, so that a user uploading a duplicate file has a high upload speed. Not only the efficiency of storage space but also network transmission can be saved.
도 4의 실시예에서는 하나의 세그먼트가 일정 크기, 예를 들어 64 Kbyte, 또는 128 Kbyte일 수 있고, 여기에 대한 체크파일은 4byte, 또는 8byte 등이 될 수 있다. 체크파일의 크기는 세그먼트의 크기에 따라 가변적이다.In the embodiment of FIG. 4, one segment may be a predetermined size, for example, 64 Kbytes or 128 Kbytes, and the check file may be 4 bytes or 8 bytes. The size of the checkfile varies with the size of the segment.
또한, 세그먼트는 실제 클라이언트에서 세그먼트 단위로 나뉘어 파일이 저장될 수 있으며, 클라이언트가 세그먼트 단위로 나누어 전송할 수 있다. 체크파일 역시 클라이언트가 생성하여 매 세그먼트에 따라 체크데이터의 형태로 송신할 수 있다. 본 명세서에서 파일은 저장 매체에 저장되는 파일의 개념을 포함하며, 또한 메모리의 일정 영역에 데이터로 자리잡는 일련의 비트스트링의 개념을 포함한다.In addition, the segment may be divided into segments in the actual client and the file may be stored, and the client may divide and transmit the segment in segments. The check file can also be generated by the client and sent in the form of check data for each segment. In the present specification, a file includes a concept of a file stored in a storage medium, and also includes a concept of a series of bitstrings that are located as data in a predetermined area of a memory.
또한 사용자의 관점에서 하나의 파일이라 하여도, 이 파일이 여러 개의 세그먼트로 나누어져 각각 파일의 형태로 저장되는 경우도 가능하다. 이 경우, 사용자의 관점에서 하나의 파일로 인식되는 것은 하나의 파일 그룹을 의미하는 것이고, 이 파일 그룹을 구성하는 세그먼트들은 각각 하나의 파일이 될 수 있다. 이 경우, 클라이언트가 전송하는 세그먼트는 하나의 파일이 될 수 있다. 마찬가지로, 파일 서버에 저장되는 세그먼트 역시 독립적인 파일로 존재할 수 있다. 특히 원본 파일을 참조하며 일부 상이한 파일의 경우에는 각 세그먼트들이 독립된 파일로 저장될 수 있다. 이 경우에는 사용자 관점에서 업로드, 다운로드 대상이 되는 것은 파일 그룹이며, 서버와 클라이언트에는 파일 그룹을 구성하는 세부 세그먼트들이 파일로 존재한다.In addition, even if a file is viewed from the user's point of view, the file may be divided into several segments and stored in the form of a file. In this case, what is recognized as one file from the user's point of view means one file group, and segments constituting the file group may each be one file. In this case, the segment transmitted by the client may be one file. Similarly, segments stored on file servers can also exist as independent files. In particular, it refers to the original file, and for some different files, each segment can be stored as a separate file. In this case, files are uploaded and downloaded from the user's point of view, and detailed segments of the file group exist as files in the server and the client.
비교하기 위한 세그먼트를 선택하는 방식은 두 파일에서 동일 위치에 있는 세그먼트를 선택하는 방법과, 특정 영역에서 일정 비트수만큼 전후를 떨어진 위치의 세그먼트를 선택하는 두 가지 방법이 있다. 전자의 경우(동일 위치의 세그먼트 선택)는 파일의 전체 사이즈는 동일하고, 일부 영역이 수정된 경우에 적용 가능하다. 후자의 경우(특정 영역에서 일정 오프셋만큼 떨어진 세그먼트 선택)는 원본 파일과 비교하여 일정 부분이 추가되거나 삭제된 경우에 적용가능하다. 예를 들어, 원본에는 세그먼트 1, 2, 3, 4, 5가 존재하고, 업로드할 대상 파일은 세그먼트 1, 3, 4, 5만 존재하고 세그먼트 2가 삭제된 경우이며 1, 3, 4, 5는 이미 원본 파일에 존재하므로 새로 올릴 필요가 없다. 그러나 동일 위치에 있는 세그먼트를 선택하는 방식이라면, 원본의 세그먼트 2와 업로드 파일의 세그먼트 3을 비교하고, 원본의 세그먼트 3과 업로드 파일의 세그먼트 4를, 그리고 원본 파일의 세그먼트 4와 업로드 파일의 세그먼트 5를 비교하여, 각기 다른 세그먼트로 인식할 수 있다. 따라서, 세그먼트 4, 5를 각각 세그먼트 3에서의 오프셋으로 판단하여 비교할 수 있다.There are two methods for selecting segments for comparison, two segments for selecting a segment at the same position in two files and a segment at a position separated by a predetermined number of bits in a specific region. In the former case (segment selection at the same position), the overall size of the file is the same, and it is applicable when some areas are modified. The latter case (segment selection separated by a certain offset from a specific area) is applicable when certain parts have been added or deleted compared to the original file. For example, the source contains
본 발명의 일 실시예에서는 두 파일을 비교하는 방식으로, 각 세그먼트를 비 교할 수 있으며, 또는 각 세그먼트의 체크파일을 비교할 수도 있다. 물론, 이들 파일들을 직접 비교하여 파일의 동일성을 검토할 수 있으나, 대용량의 멀티미디어 파일에서 파일을 직접 비교하는 경우에 많은 시간이 소요될 가능성이 존재하므로, 체크파일과 같이 파일의 일부 정보를 이용하여 비교하는 것이 바람직하다.In an exemplary embodiment of the present invention, each segment may be compared by comparing two files, or a check file of each segment may be compared. Of course, these files can be directly compared to examine the identity of the files, but there is a possibility that a large amount of time is required when directly comparing files in a large multimedia file. It is desirable to.
체크파일은 전술한 CRC 방식에 따라 생성할 수 있다. CRC 방식 외에도, 파일 또는 세그먼트의 비트를 계산하여 중복되지 않거나 중복될 가능성이 낮은 결과값을 산출할 수 있다. 이러한 값을 포함하는 체크파일이 동일하다면 파일 또는 세그먼트가 동일한 값을 가지는 것으로 판단할 수 있다.The check file may be generated according to the CRC method described above. In addition to the CRC scheme, the bits of a file or segment can be calculated to yield a result that is non-overlapping or unlikely to overlap. If the checkfiles containing these values are the same, it can be determined that the files or segments have the same values.
도 5는 본 발명의 일 실시예에 따른 파일 서버에 중복된 파일의 상이한 부분들이 저장되는 예시도이다.5 is an exemplary diagram in which different parts of a duplicate file are stored in a file server according to an embodiment of the present invention.
파일 서버(1000)는 파일 정보부(950)와 파일저장부(960)로 구성된다. 물론 이외에도, 도 3에서 살펴본 바와 같이 파일을 송수신하고, 클라이언트와 통신하기 위한 송수신부가 존재한다.The
파일 정보부(950)는 저장된 파일에 대한 정보를 가진다. 파일 식별자, 파일이 저장된 위치, 파일에 대한 체크파일들의 전체 체크파일, 파일의 첫 세그먼트에 대한 체크파일, 파일의 크기, 원본인지 혹은 원본이 아닐 경우의 원본 파일에 대한 정보, 그리고 참조 횟수(카운터) 등을 포함한다. 파일 서버(1000)는 업로드할 파일이 중복된 파일인지를 검토하기 위해 파일 정보부(950)의 정보를 검색할 수 있다. 첫 체크파일이 동일하고, 파일 크기가 동일하거나, 전체 체크파일이 동일하다면, 저장된 파일과 동일하므로, 파일 정보부(950)에는 동일한 파일임을 표시한 후, 파 일을 저장하지 않는다.The
한편, 첫 체크파일과 파일 크기가 동일하지만, 전체 체크파일이 상이한 경우, 두 파일의 일부 세그먼트가 상이함을 의미하므로, 도 4에서 살펴본 바와 같이 상이한 세그먼트만 저장하도록 할 수 있다. 파일 저장부(960)에 나타났듯이, FILE_0002는 FILE_0001과 상이한 세그먼트와 체크파일, 그리고 전체 체크파일이 저장되어 있다. 또한 FILE_0002가 FILE_0001을 원본으로 하는 것을 나타내기 위해 FILE_0001의 카운터 필드를 2로 할 수 있다.On the other hand, if the first check file and the file size are the same, but the entire check file is different, it means that some segments of the two files are different, as shown in Figure 4 can be stored only different segments. As shown in the
이후 사용자가 FILE_0002를 다운로드 하고자 할 경우, 파일 정보부(950)에서 FILE_0002가 FILE_0001을 원본으로 하는 것을 알게 되므로, 중복되는 부분(세그먼트 1, 세그먼트 3 등)은 FILE_0001에서 다운로드 하고, 상이한 부분(세그먼트 2)은 FILE_0002에서 다운로드 하도록 한다.Afterwards, when the user wants to download FILE_0002, the
한편 FILE_0001의 사용자가 자신의 파일을 삭제할 경우, 파일을 바로 삭제하는 것이 아니라, FILE_0001의 카운터를 1로 하는 것으로 대치한다. 1로 대치하는 이유는 FILE_0002의 사용자가 FILE_0002를 다운로드 받기 위해서는 FILE_0001을 필요로 하기 때문이다. 이후, 사용자가 FILE_0002를 삭제하는 경우, FILE_0002의 카운터를 1 줄여서 0으로 만들고, 그 원본 파일인 FILE_0001의 카운터 역시 1을 줄인 0으로 만든다. 일괄 실행 프로그램, 또는 삭제 프로그램에서는 카운터가 0이 되는 파일을 파일저장부(960)에서 삭제할 수 있다.On the other hand, when the user of FILE_0001 deletes his file, the counter of FILE_0001 is replaced with 1 instead of immediately deleting the file. The reason for replacing 1 is that the user of FILE_0002 needs FILE_0001 to download FILE_0002. After that, when the user deletes FILE_0002, the counter of FILE_0002 is decreased by 1 to 0, and the counter of the original file FILE_0001 is also reduced to 1 by 0. In the batch execution program or the deletion program, the file whose counter is 0 can be deleted from the
도 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을 원본으로 하여 저장될 수 있다. 이는 일부만 차이나는 여러 유사 파일의 저장시에 적용할 수 있다.In FIG. 5, a case in which FILE_0002 has one file as an original file is shown. However, this is an embodiment of the invention and may have more than one original file. For example, if FILE_0003 is the same as the second segment of FILE_0002, FILE_0002 may have the second segment refer to FILE_0003. Alternatively, if FILE_0003 is the original file such as FILE_0002 and FILE_0001 is the same file as FILE_0002, FILE_0002 may be stored using FILE_0003 as the source rather than FILE_0001. This can be applied when storing several similar files with only a few differences.
도 6은 본 발명의 일 실시예에 따른 파일 서버가 클라이언트로부터 파일을 수신하는 과정을 보여주는 순서도이다.6 is a flowchart illustrating a process in which a file server receives a file from a client according to an embodiment of the present invention.
파일 서버(1000)는 클라이언트(500)로부터 파일의 업로드 요청을 수신한다(S101). 그리고 클라이언트(500)로부터 업로드할 파일 또는 그 파일의 일부에 대한 체크파일을 수신한다(S102). 체크파일은 전술한 CRC, 체크섬 방식으로 생성된 파일일 수 있으며, 상기 업로드할 파일의 크기에 대한 정보를 포함할 수 있다. 또한, 파일명 또는 컨텐츠의 종류를 함께 포함할 수 있다. 또한, 멀티미디어 컨텐츠를 식별하기 위한 소정의 식별자 정보를 포함할 수 있다. 이러한 식별자 정보는 디지털 파일의 저작권을 관리하기 위한 것으로, 이 식별자에 의해 멀티미디어 컨텐츠를 구분할 수 있는 경우에 사용할 수 있다. 파일에 대한 정보를 포함하는 체크파일을 수신한 파일 서버(1000)는 상기 체크파일과 동일한 체크파일을 가지는 원본 파일이 존재하는지 검색한다(S103). 도 5의 파일 정보부(950)를 통해 검색할 수 있다.The
그 결과 원본 파일이 존재한다면(S111) 상이한 부분만을 수신하여 저장하는 작업을 수행한다(S113~S142). 업로드될 파일에 대한 정보를 파일 정보부(950)에 저장한다(S113). 사용자가 업로드중에 네트워크 또는 컴퓨터 환경등에 따라 중지될 수 있기 때문에, 이어서 올릴 수 있도록 하기 위함이다. 업로드될 파일에 대한 정보 중에서 도 5의 원본 필드에 특정 파일 식별자를 저장한 것과 같이 원본 파일에 대한 정보를 저장할 수 있다. 더불어 파일 정보부(950)에 저장된 원본 파일의 정보를 수정한다(S114). 이는 업로드 중에 원본 파일이 삭제될 경우, 원본 파일을 다른 파일에서 참조하고 있음을 알리기 위함이다. 그리고 클라이언트에 업로드할 파일 또는 그 파일의 일부에 대한 체크파일을 요청한다(S115). 이는 파일 서버(1000)에서 요청할 수도 있고, 클라이언트에서 원본 파일과의 비교를 위해 순차적으로 체크파일을 전송할 수 있다. 파일 서버(1000)는 수신한 체크파일과 원본 파일의 체크파일을 비교한다(S116). 비교결과 체크파일이 동일하면(S131), 그 체크 파일이 마지막 세그먼트 또는 파일의 마지막 부분에 대한 체크파일인지 검토한다(S141). 마지막이라면, 파일 정보부(950)에 업로드가 완료됨을 기록하고 종료한다(S142).As a result, if the original file exists (S111), only a different portion is received and stored (S113 to S142). Information about the file to be uploaded is stored in the file information unit 950 (S113). This is to allow the user to continue uploading because the user may stop the upload depending on the network or computer environment. Of the information on the file to be uploaded, information about the original file may be stored, such as storing a specific file identifier in the original field of FIG. 5. In addition, the information of the original file stored in the
파일의 마지막이 아니라면, 다음 세그먼트 또는 파일의 다음 부분에 대한 체크파일을 요청하고, 전술한 S115 내지 S141 과정을 수행한다.If it is not the end of the file, a check file for the next segment or the next part of the file is requested, and the processes S115 to S141 described above are performed.
한편, S131 단계에서 체크파일이 다르다면, 두 세그먼트가 다르므로, 체크파일을 저장한다(S133). 상기 체크파일이 나타내는 파일 또는 파일의 일부를 송신할 것을 클라이언트에 요청한다(S134). 그리고 수신한 파일 또는 파일의 일부를 저장한다(S135). 그리고 전술한 S141 단계로 진행한다. 마지막이 아니면, 다음 세그먼트의 체크파일을 수신하여 전술한 단계를 진행한다.On the other hand, if the check file is different in step S131, since the two segments are different, the check file is stored (S133). The client requests the client to transmit the file or part of the file indicated by the check file (S134). The received file or part of the file is stored (S135). The flow proceeds to step S141 described above. If not, the check file of the next segment is received and the above-described steps are performed.
한편, S111단계에서 원본 파일이 존재하지 않는 것으로 판단되면, 파일 정보부(950)에 새로이 업로드될 파일의 정보를 저장한다(S121). 이때는 업로드될 파일 이 원본임을 표시한다. 그리고 클라이언트에게 업로드 파일을 송신할 것을 요청한다(S122). 업로드 파일을 수신하면(S123), 파일 서버는 향후 이 파일을 원본 파일로 사용할 수 있도록 체크파일을 생성한다(S124). 체크파일은 파일을 모두 수신하여 일괄적으로 생성할 수 있으며, 파일을 수신하는 중간에 계속 세그먼트 단위로 저장하여, 세그먼트에 대한 체크파일을 생성할 수 있다.On the other hand, if it is determined in step S111 that the original file does not exist, the
도 6의 순서도는 원본 파일이 존재하는 경우, 원본 파일의 체크파일과 비교하여 클라이언트로부터 상이한 파일 부분을 수신하는 방식을 채택하고 있다.The flowchart of FIG. 6 adopts a method of receiving a different file portion from a client when the original file exists, compared to the check file of the original file.
이외에도, 업로드할 파일에 대한 체크파일이 다수인 경우, 클라이언트가 체크파일을 모두 송신하고, 파일 서버에서 상이한 부분만을 클라이언트에 알려서, 해당 세그먼트만을 수신하는 방식도 가능하다. In addition, when there are a large number of check files for a file to be uploaded, the client may transmit all the check files, notify the client of only the different parts of the file server, and receive only the corresponding segments.
도 7은 본 발명의 일 실시예에 따른 클라이언트와 서버간의 작업을 보여주는 시퀀스 다이어그램이다.7 is a sequence diagram showing operations between a client and a server according to an embodiment of the present invention.
클라이언트(500)는 파일 정보를 송신한다(S201). 파일 정보에는 동일성을 검토하기 위한 체크파일, 파일 사이즈, 파일명 등이 포함된다. 또는 상기 정보들을 포함한 체크파일을 송신할 수 있다. 이를 수신한 송수신부(910)는 이 정보를 가지는 원본 파일이 존재하는지 파일 정보부(950)를 통해 검토한다(S205). 검토 결과 원본 파일이 존재하면 원본 파일이 존재함을 알린다(S208). 그리고 송수신부(910)는 원본 파일이 존재하므로 체크파일등을 통해 상이한 부분만을 업로드하게 됨을 클라이언트(500)에 알린다(S210).The
클라이언트(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). The
이후, 클라이언트와 파일서버는 세그먼트별로 중복여부를 검토하여 상이한 세그먼트를 저장한다. 클라이언트가 마지막 세그먼트의 체크파일을 송신하면(S261) 송수신부(910)는 체크파일을 파일저장부(960)으로 송신하여 원본과 비교한다. 그 결과 동일하면 송수신부(910)에 비교 결과를 송신하고(S268), 송수신부(910)는 클 라이언트(500)에 업로드 종료됨을 알린다(S270). 물론, 마지막 세그먼트의 체크파일이 원본과 다르다면, S234 내지 S241에 제시된 과정을 수행하게 된다. 그리고 파일 정보부(950)는 업로드 파일의 정보를 수정 하거나 저장하고, 원본 파일의 정보를 수정한다(S272).After that, the client and the file server store the different segments by examining whether they overlap each other. When the client transmits the check file of the last segment (S261), the
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.Those skilled in the art will appreciate that the present invention can be embodied in other specific forms without changing the technical spirit or essential features of the present invention. Therefore, it should be understood that the embodiments described above are exemplary in all respects and not restrictive. The scope of the present invention is indicated by the scope of the following claims rather than the detailed description, and all changes or modifications derived from the meaning and scope of the claims and the equivalent concept are included in the scope of the present invention. Should be interpreted.
본 발명을 구현함으로써 파일의 중복되지 않는 부분만을 저장하여 저장 공간의 효율을 높일 수 있다.By implementing the present invention it is possible to increase the efficiency of the storage space by storing only the non-overlapping portions of the file.
본 발명을 구현함으로써 중복된 파일의 업로드를 제한하여 네트워크의 부하를 줄일 수 있다.By implementing the present invention it is possible to reduce the load on the network by limiting the upload of duplicate files.
Claims (24)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020040112109A KR100700200B1 (en) | 2004-12-24 | 2004-12-24 | Method and device for storing and downloading duplicate files by using file information |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020040112109A KR100700200B1 (en) | 2004-12-24 | 2004-12-24 | Method and device for storing and downloading duplicate files by using file information |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20060073724A true KR20060073724A (en) | 2006-06-29 |
| KR100700200B1 KR100700200B1 (en) | 2007-03-27 |
Family
ID=37166618
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020040112109A Expired - Lifetime KR100700200B1 (en) | 2004-12-24 | 2004-12-24 | Method and device for storing and downloading duplicate files by using file information |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR100700200B1 (en) |
Cited By (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2009091957A3 (en) * | 2008-01-16 | 2009-10-15 | Sepaton, Inc. | Scalable de-duplication mechanism |
| KR100946986B1 (en) * | 2007-12-13 | 2010-03-10 | 한국전자통신연구원 | Duplicate file management method in file storage system and file storage system |
| KR101147892B1 (en) * | 2011-10-19 | 2012-05-24 | 주식회사 한글과컴퓨터 | Storage apparatus and file management method of the storage apparatus |
| US8280926B2 (en) | 2003-08-05 | 2012-10-02 | Sepaton, Inc. | Scalable de-duplication mechanism |
| US8447741B2 (en) | 2010-01-25 | 2013-05-21 | Sepaton, Inc. | System and method for providing data driven de-duplication services |
| US8688651B2 (en) | 2011-01-25 | 2014-04-01 | Sepaton, Inc. | Dynamic deduplication |
| 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 |
| US9766832B2 (en) | 2013-03-15 | 2017-09-19 | Hitachi Data Systems Corporation | Systems and methods of locating redundant data using patterns of matching fingerprints |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20030067282A (en) * | 2002-02-07 | 2003-08-14 | 윤용환 | Compress the Digital File by using DB |
-
2004
- 2004-12-24 KR KR1020040112109A patent/KR100700200B1/en not_active Expired - Lifetime
Cited By (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8280926B2 (en) | 2003-08-05 | 2012-10-02 | Sepaton, Inc. | Scalable de-duplication mechanism |
| KR100946986B1 (en) * | 2007-12-13 | 2010-03-10 | 한국전자통신연구원 | Duplicate file management method in file storage system and file storage system |
| WO2009091957A3 (en) * | 2008-01-16 | 2009-10-15 | Sepaton, Inc. | Scalable de-duplication mechanism |
| US8495312B2 (en) | 2010-01-25 | 2013-07-23 | Sepaton, Inc. | System and method for identifying locations within data |
| US8447741B2 (en) | 2010-01-25 | 2013-05-21 | Sepaton, Inc. | System and method for providing data driven de-duplication services |
| US8495028B2 (en) | 2010-01-25 | 2013-07-23 | Sepaton, Inc. | System and method for data driven de-duplication |
| US8620939B2 (en) | 2010-01-25 | 2013-12-31 | Sepaton, Inc. | System and method for summarizing data |
| US8688651B2 (en) | 2011-01-25 | 2014-04-01 | Sepaton, Inc. | Dynamic deduplication |
| US9122639B2 (en) | 2011-01-25 | 2015-09-01 | Sepaton, Inc. | Detection and deduplication of backup sets exhibiting poor locality |
| KR101147892B1 (en) * | 2011-10-19 | 2012-05-24 | 주식회사 한글과컴퓨터 | Storage apparatus and file management method of the storage apparatus |
| 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 |
Also Published As
| Publication number | Publication date |
|---|---|
| KR100700200B1 (en) | 2007-03-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10909110B1 (en) | Data retrieval from a distributed data storage system | |
| CN1331076C (en) | Real-time search engine | |
| CN111090645B (en) | Cloud storage-based data transmission method and device and computer equipment | |
| CN106233259B (en) | Method and system for retrieving multi-generational stored data in a decentralized storage network | |
| JP3990115B2 (en) | Server-side proxy device and program | |
| CN113273163A (en) | File uploading method, file downloading method and file management device | |
| US10459886B2 (en) | Client-side deduplication with local chunk caching | |
| JP2006344231A (en) | Encapsulate, represent, and transfer content addressable information | |
| US9917894B2 (en) | Accelerating transfer protocols | |
| CN106575527A (en) | Generating molecular encoding information for data storage | |
| CN108512898B (en) | File pushing method and device, computer equipment and storage medium | |
| US10339124B2 (en) | Data fingerprint strengthening | |
| KR100700200B1 (en) | Method and device for storing and downloading duplicate files by using file information | |
| US7546492B2 (en) | Remotely repairing files by hierarchical and segmented cyclic redundancy checks | |
| US20110055179A1 (en) | System for and method of partial file hashing | |
| CN105320577A (en) | A data backup and recovery method, system and device | |
| CN114238240B (en) | Distributed multi-cluster data storage method and device and storage medium | |
| CN105162747B (en) | System and method for compression device and decompression device discovery and handshake | |
| US20170048303A1 (en) | On the fly statistical delta differencing engine | |
| WO2013136584A1 (en) | Data transfer system | |
| US20250139060A1 (en) | System and method for intelligent data access and analysis | |
| CN103269351A (en) | A file download method and device | |
| US20030115172A1 (en) | Electronic file management | |
| US8997124B2 (en) | Method for updating data in a distributed data storage system | |
| CN112688905B (en) | Data transmission method, device, client, server and storage medium |
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 |