US20190180044A1 - Internal folder sharing - Google Patents
Internal folder sharing Download PDFInfo
- Publication number
- US20190180044A1 US20190180044A1 US16/278,321 US201916278321A US2019180044A1 US 20190180044 A1 US20190180044 A1 US 20190180044A1 US 201916278321 A US201916278321 A US 201916278321A US 2019180044 A1 US2019180044 A1 US 2019180044A1
- Authority
- US
- United States
- Prior art keywords
- folder
- grantee
- parent
- virtual
- share
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
- G06F16/166—File name conversion
-
- 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/178—Techniques for file synchronisation in file systems
-
- 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/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H04L67/42—
Definitions
- This application relates generally to cloud-based file storage. More particularly, this application relates to the internal file sharing in a cloud-based file storage.
- FIG. 1 is a block diagram illustrating a system, in accordance with an example embodiment, of securely synchronizing files.
- FIG. 2 is a block diagram illustrating a client device, in accordance with an example embodiment, that may form part of the system of FIG. 1 .
- FIG. 3 is a block diagram illustrating another client device, in accordance with an example embodiment, that may form part of the system of FIG. 1 .
- FIG. 4 is a block diagram illustrating a backend, in accordance with an example embodiment, that may form part of the system of FIG. 1 .
- FIG. 5 is a diagram illustrating sub-folder sharing in accordance with an example embodiment.
- FIG. 6 is a flow diagram illustrating a method, in accordance with an example embodiment, for sharing a folder in a tile system between an owner and a grantee.
- FIG. 7 is a block diagram illustrating a mobile device, in accordance with an example embodiment.
- FIG. 8 is a block diagram of machine in the example form of a computer system within which instructions, for causing the machine to perform any one or more of the methodologies discussed herein, can be executed.
- various techniques are utilized in order to allow for efficient, accurate, and secure synchronization of files across multiple devices even in cases where a large number of events are occurring concurrently. This may include using an events-based technique to improve reliability during periods of file modifications being performed concurrently.
- name conflicts between different files may be resolved automatically.
- FIG. 1 is a block diagram illustrating a system 100 , in accordance with an example embodiment, of securely synchronizing files.
- files may be synchronized between one or more servers 102 and one or more client devices 104 A- 104 D.
- the client devices 104 A- 104 D may include various types of devices running various types of platforms with various types of operating systems and applications.
- client device 104 A may be a mobile device running proprietary mobile applications 106 .
- Client device 104 B may be a personal computer running a MacintoshTM operating system from Apple Inc. of Cupertino, Calif. This may include a file system known as Finder 108 , which may include a specialized plug-in 110 to allow Finder 108 to be altered in order to better operate with a proprietary application 112 .
- Client device 104 C may be a personal computer running a WindowsTM operating system from Microsoft Corp. of Redmond, Wash. This may include a file system known as Windows Explorer 114 , which may include a specialized plug-in 116 to allow Windows Explorer 114 to be altered in order to better operate with a proprietary application 118 . Additionally, applications such as Microsoft OfficeTM 120 and Microsoft OutlookTM 122 may also include their own specialized plug-ins 124 , 126 , respectively, which allow them to better operate with the proprietary application 118 . Client device 104 D may be a web-based device that may operate a web browser 128 instead of a traditional operating system.
- Each of the client devices 104 A- 104 D may communicate with a back-end 130 hosted by the one or more servers 102 . This communication may either take place directly between the back-end 130 and the proprietary applications 106 , 112 , 118 , or indirectly through a web application 132 .
- a provisioning service such as HostPilotTM 134 may also be present, and may coordinate with a directory service such as Active Directories 136 .
- FIG. 3 is a block diagram illustrating another client device, in accordance with an example embodiment, in more detail.
- the client device in this figure corresponds to client device 104 B of FIG. 1 , although in some example embodiments this diagram corresponds to a different client device.
- the various components in FIG. 3 are labeled as those components are labeled in FIG. 1 . In some embodiments, however, the components may not be identical.
- Proprietary application 112 may be a desktop application, and may store files in a local database 300 .
- the proprietary application 112 may also communicate with a specialized plugin 108 in Finder 110 . This communication may take place, for example, using Thrift over TCP.
- the proprietary application 118 may communicate with a storage device 302 on the server 102 .
- FIG. 4 is a block diagram illustrating a backend, in accordance with an example embodiment, in more detail.
- the backend in this figure corresponds to backend 130 of FIG. 1 , although in some example embodiments this diagram corresponds to a different backend.
- the various components in FIG. 4 are labeled as those components are labeled in FIG. 1 . In some embodiments, however, the components may not be identical.
- the backend 130 may include a front-end server 400 , which acts to perform much of the server-side storage functions described in this disclosure, as well as interfacing with the various devices. These functions will be discussed in more detail later in this document.
- the front-end server 400 may interface with client devices 104 A- 104 D through a firewall 402 .
- the front-end server 400 may also interface with a database server 404 , which may control access to a database 406 .
- the database 406 may be of many different types of formats.
- the database 406 is a relational database, such as one operated using Structured Query Language (SQL).
- SQL Structured Query Language
- Other formats of database are envisioned, however, as well, including flat-file and multidimensional databases.
- the database may store not just files and folders, but also metadata about the files and folders, including, but not limited to, information about which files and folders are shared, and with whom.
- a central server 408 performs internal tasks such as cleanup, provisioning, and other backend services.
- a key management server 410 provides access for keys created for each user. When a user is created on the central server 408 , a key may be issued by the key server 410 . These keys are also used by an encryption server 412 to encrypt and decrypt files and folders. This is accomplished through the use of the front end server 400 , which understands which organization the keys belong and submits file or folder content to the encryption server 412 for encryption. Active Directories 414 is used for integration with ExchangeTM.
- files to be synchronized between devices may be organized into folders. This allows a user to share an entire grouping of files with other users in an organization.
- the user initially sharing the folder can be referred to as the owner of the folder.
- the users with which the owner shares the folder can be referred to as grantees.
- the owner of a folder can share that folder with another user (grantee) from his/her organization using, for example, a web application.
- the grantee can receive a sharing invitation that can be either accepted or rejected using the web application.
- the desktop application can create the shared folder locally (on the device of the grantee) in specific folder (e.g. My SecuriSync ⁇ Shared Folder) and then synchronize this new local folder with the server folder.
- the owner and all the grantees could conceivably have multiple instances of the folder stored on a variety of different devices.
- an owner may have an instance of the folder on a desktop computer and a mobile phone, while one of the grantees may have an instance of the folder on a laptop computer and a tablet computer. All of these instances may be synchronized, not just for each user but among all the users having access to the folder.
- a folder can be shared by the owner at a number of different permission levels.
- the permission levels include View, Modify or Co-owner permission.
- the View permission allows viewing but not modification of the files in the folder.
- the grantee locally modifies one of the files in the folder, the local file will be overwritten with the server version.
- the modified version can be saved to a conflict file.
- the grantee locally deletes a file/folder that exists on the server, the file/folder will be restored locally. If the grantee having View permission locally creates a new file/folder, it will not be synchronized by the desktop application.
- the view permission only applies to the version of the files potentially shared with other users.
- the modified version can be shared with the user's other devices. In one example embodiment, this may be accomplished by synchronizing the conflict folder among the user's devices.
- a folder is shared with Modify or Co-owner permission
- the grantee locally modifies a file that exists on the server or creates a new file
- the local file version will be synchronized to the server (if there is no version conflict, which will be described in more detail below).
- the grantee locally creates a new folder, it will be created on the server by the desktop app. If the grantee locally deletes a file/folder that exists on the server, the file/folder will be deleted on server.
- a folder may be shared with a different user (grantee) regardless of its level in a folder hierarchy.
- the grantee may have one of a number of different permission levels (e.g., view, modify, co-owner).
- the subfolder can be shared regardless of whether or not the parent folder is shared. Permissions for folders and subfolders are each stored independently, allowing each folder or subfolder to be shared or not shared independently. If a subfolder is shared it may appear on grantee's devices as top-level folder while simultaneously appearing as a mid-level folder (subfolder) on the owner's devices.
- a parent folder is later shared with a grantee that already has permissions for a sub-folder of that parent folder, an issue may arise in that the grantee may get confused if suddenly the sub-folder disappears from a main directory and is placed in a new folder unbeknownst to the grantee.
- the new shared parent folder may appear on the user's device as a top-level folder, while the sub-folder also remains as a top-level folder, with the same permissions as it had before. Both the top-level folder and the subfolder may be synchronized with each other, despite both being stored in the same instance of the file system (e.g., on the same device).
- FIG. 5 is a diagram illustrating sub-folder sharing in accordance with an example embodiment.
- An owner 500 may wish to share various folders and subfolders 502 - 508 with a grantee 510 . This sharing may occur at various permission levels.
- the user may wish to grant viewing permission to Folder A 502 , which then means that all subfolders 504 , 506 , 508 are also shared with the grantee 510 at the view permission level. This results in the grantee 510 seeing all of the folders 502 - 508 when viewing folders in the view permission level. If the grantee 510 wishes to see only those folders that he has co-owner permissions to, however, he will only see Folder C 506 and Folder D 508 . Likewise, if the grantee 510 wishes to see only those folders that he has modify permissions to, then he will only see Folder D 508 .
- the various sharing permissions may be stored with the files/folders.
- a folder is shared with a grantee
- a virtual folder corresponding to the folder can be created on a device of the grantee. All objects within the folder can be copied to the virtual folder to share and mapped to the existing objects.
- the shared folder may be stored at a level equal to parent folders of a file hierarchy on the device of the user.
- FIG. 6 is a flow diagram illustrating a method 600 , in accordance with an example embodiment, for sharing a folder in a file system between an owner and a grantee.
- an indication of a folder to share with a grantee may be received from the owner.
- the folder to share may be a subfolder within a parent folder.
- the parent folder in this instance, is not shared with the grantee.
- sharing permissions indicating a level of access the grantee has to the folder are stored with the folder.
- a virtual folder corresponding to the folder is created on a device of the grantee, the virtual folder mapping to all objects within the folder to share and being stored at a level equal to parent folders of a file hierarchy on the device of the grantee.
- a file version conflict may occur in the following situations:
- the local file is copied to the conflict file and then the local file is overwritten with the server version.
- the conflict file is created in the same folder as the original file and has the name ⁇ original file name> (Conflicted copy ⁇ YYYY-MM-DD>—for ⁇ user name>).
- ⁇ original file extension> e.g. “document(Conflicted copy 2013-04-04—for Nikita Uraltsev).docx”)
- FIG. 7 is a block diagram illustrating a mobile device 700 , according to an example embodiment.
- the mobile device 700 can include a processor 702 .
- the processor 702 can be any of a variety of different types of commercially available processors suitable for mobile devices 700 (for example, an XScale architecture microprocessor, a Microprocessor without Interlocked Pipeline Stages (MIPS) architecture processor, or another type of processor).
- a memory 704 such as a random access memory (RAM), a Flash memory, or other type of memory, is typically accessible to the processor 702 .
- the memory 704 can be adapted to store an operating system (OS) 706 , as well as application programs 708 , such as a mobile location enabled application that can provide LBSs to a user.
- OS operating system
- application programs 708 such as a mobile location enabled application that can provide LBSs to a user.
- the processor 702 can be coupled, either directly or via appropriate intermediary hardware, to a display 710 and to one or more input/output (I/O) devices 712 , such as a keypad, a touch panel sensor, a microphone, and the like.
- the processor 702 can be coupled to a transceiver 714 that interfaces with an antenna 716 .
- the transceiver 714 can be configured to both transmit and receive cellular network signals, wireless data signals, or other types of signals via the antenna 716 , depending on the nature of the mobile device 700 .
- a GPS receiver 718 can also make use of the antenna 716 to receive GPS signals.
- Modules can constitute either software modules (e.g., code embodied (1) on a non-transitory machine-readable medium or (2) in a transmission signal) or hardware-implemented modules.
- a hardware-implemented module is tangible unit capable of performing certain operations and can be configured or arranged in a certain manner.
- one or more computer systems e.g., a standalone, client or server computer system
- one or more processors can be configured by software (e.g., an application or application portion) as a hardware-implemented module that operates to perform certain operations as described herein.
- a hardware-implemented module can be implemented mechanically or electronically.
- a hardware-implemented module can comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations.
- a hardware-implemented module can also comprise programmable logic or circuitry as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware-implemented module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) can be driven by cost and time considerations.
- the term “hardware-implemented module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily or transitorily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein.
- hardware-implemented modules are temporarily configured (e.g., programmed)
- each of the hardware-implemented modules need not be configured or instantiated at any one instance in time.
- the hardware-implemented modules comprise a general-purpose processor configured using software
- the general-purpose processor can be configured as respective different hardware-implemented modules at different times.
- Software can accordingly configure a processor, for example, to constitute a particular hardware-implemented module at one instance of time and to constitute a different hardware-implemented module at a different instance of time.
- Hardware-implemented modules can provide information to, and receive information from, other hardware-implemented modules. Accordingly, the described hardware-implemented modules can be regarded as being communicatively coupled. Where multiple such hardware-implemented modules exist contemporaneously, communications can be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware-implemented modules. In embodiments in which multiple hardware-implemented modules are configured or instantiated at different times, communications between such hardware-implemented modules can be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware-implemented modules have access. For example, one hardware-implemented module can perform an operation and store the output of that operation in a memory device to which it is communicatively coupled.
- a further hardware-implemented module can then, at a later time, access the memory device to retrieve and process the stored output.
- Hardware-implemented modules can also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
- processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations.
- processors can constitute processor-implemented modules that operate to perform one or more operations or functions.
- the modules referred to herein can, in some example embodiments, comprise processor-implemented modules.
- the methods described herein can be at least partially processor-implemented. For example, at least some of the operations of a method can be performed by one of processors or processor-implemented modules. The performance of certain of the operations can be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processor or processors can be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors can be distributed across a number of locations.
- the one or more processors can also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations can be performed by a group of computers (as examples of machines including processors), these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application program interfaces (APIs).)
- SaaS software as a service
- Example embodiments can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them.
- Example embodiments can be implemented using a computer program product, e.g., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable medium for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers.
- a computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, subroutine, or other unit suitable for use in a computing environment.
- a computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
- operations can be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output.
- Method operations can also be performed by, and apparatus of example embodiments can be implemented as, special purpose logic circuitry, e.g., a FPGA or an ASIC.
- the computing system can include clients and servers.
- a client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
- both hardware and software architectures require consideration.
- the choice of whether to implement certain functionality in permanently configured hardware e.g., an ASIC
- temporarily configured hardware e.g., a combination of software and a programmable processor
- a combination of permanently and temporarily configured hardware can be a design choice.
- hardware e.g., machine
- software architectures that can be deployed, in various example embodiments.
- FIG. 15 is a block diagram of machine in the example form of a computer system 1500 within which instructions, for causing the machine to perform any one or more of the methodologies discussed herein, can be executed.
- the machine operates as a standalone device or can be connected (e.g., networked) to other machines.
- the machine can operate in the capacity of a server or a client machine in server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
- the machine can be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine.
- PC personal computer
- PDA personal digital assistant
- STB set-top box
- web appliance web appliance
- network router switch or bridge
- machine any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine.
- machine shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
- the example computer system 1500 includes a processor 1502 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), or both), a main memory 1504 and a static memory 1506 , which communicate with each other via a bus 1508 .
- the computer system 1500 can further include a video display unit 1510 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)).
- the computer system 1500 also includes an alpha-numeric input device 1512 (e.g., a keyboard or a touch-sensitive display screen), a user interface (UI) navigation device 1514 (e.g., a mouse), a disk drive unit 1516 , a signal generation device 1518 (e.g., a speaker), and a network interface device 1520 .
- an alpha-numeric input device 1512 e.g., a keyboard or a touch-sensitive display screen
- UI user interface
- disk drive unit 1516 e.g., a disk drive unit 1516
- signal generation device 1518 e.g., a speaker
- network interface device 1520 e.g., a network interface device
- the disk drive unit 1516 includes a machine-readable medium 1522 on which is stored one or more sets of instructions and data structures (e.g., software) 1524 embodying or utilized by any one or more of the methodologies or functions described herein.
- the instructions 1524 can also reside, completely or at least partially, within the main memory 1504 and/or within the processor 1502 during execution thereof by the computer system 1500 , with the main memory 1504 and the processor 1502 also constituting machine-readable media 1522 .
- machine-readable medium 1522 is shown in an example embodiment to be a single medium, the term “machine-readable medium” can include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more instructions or data structures 1524 .
- the term “machine-readable medium” shall also be taken to include any tangible medium that is capable of storing, encoding or carrying instructions 1524 for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure, or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions 1524 .
- the term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.
- machine-readable media 1522 include non-volatile memory, including by way of example semiconductor memory devices, e.g., erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
- semiconductor memory devices e.g., erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and flash memory devices
- EPROM erasable programmable read-only memory
- EEPROM electrically erasable programmable read-only memory
- flash memory devices e.g., electrically erasable programmable read-only memory (EEPROM), and flash memory devices
- magnetic disks such as internal hard disks and removable disks
- magneto-optical disks e.g., magneto-optical disks
- the instructions 152 . 4 can further be transmitted or received over a communications network 1526 using a transmission medium.
- the instructions 1524 can be transmitted using the network interface device 1520 and any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks include a local area network (LAN), a wide area network (WAN), the Internet, mobile telephone networks, plain old telephone (POTS) networks, and wireless data networks (e.g., WiFi and WiMax networks).
- POTS plain old telephone
- the term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions 1524 for execution by the machine, and includes digital or analog communications signals or other intangible media to facilitate communication of such software.
- inventive subject matter can be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed.
- inventive concept merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- This application is a continuation application of and claims the benefit of priority to U.S. patent application Ser. No. 14/271,846, filed May 7, 2014, which application claims the benefit of priority to U.S. Provisional Application No. 61/820,793 filed May 8, 2013, the contents of both which are incorporated herein by reference in their entireties.
- This application relates generally to cloud-based file storage. More particularly, this application relates to the internal file sharing in a cloud-based file storage.
- With the dramatic increase in use of mobile devices in recent years, it has become more important now than ever before that a user's files be synchronized between multiple devices. A single user may operate on a desktop computer, laptop computer, tablet computer, and mobile phone, editing the same document at different times on different devices. This issue is only going to become even more important as additional mobile devices, such as wearable computers and vehicle-based computers become popular mechanisms for editing files.
- Problems, however, may be encountered as the synchronization of files across devices become more complex. Specifically, users may wish to share folders containing files with other users, which adds significant complexity to the management of files across multiple devices.
- The present disclosure is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
-
FIG. 1 is a block diagram illustrating a system, in accordance with an example embodiment, of securely synchronizing files. -
FIG. 2 is a block diagram illustrating a client device, in accordance with an example embodiment, that may form part of the system ofFIG. 1 . -
FIG. 3 is a block diagram illustrating another client device, in accordance with an example embodiment, that may form part of the system ofFIG. 1 . -
FIG. 4 is a block diagram illustrating a backend, in accordance with an example embodiment, that may form part of the system ofFIG. 1 . -
FIG. 5 is a diagram illustrating sub-folder sharing in accordance with an example embodiment. -
FIG. 6 is a flow diagram illustrating a method, in accordance with an example embodiment, for sharing a folder in a tile system between an owner and a grantee. -
FIG. 7 is a block diagram illustrating a mobile device, in accordance with an example embodiment. -
FIG. 8 is a block diagram of machine in the example form of a computer system within which instructions, for causing the machine to perform any one or more of the methodologies discussed herein, can be executed. - The description that follows includes illustrative systems, methods, techniques, instruction sequences, and machine-readable media (e.g., computing machine program products) that embody illustrative embodiments. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. It will be evident, however, to those skilled in the art that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures, and techniques have not been shown in detail.
- In an example embodiment, various techniques are utilized in order to allow for efficient, accurate, and secure synchronization of files across multiple devices even in cases where a large number of events are occurring concurrently. This may include using an events-based technique to improve reliability during periods of file modifications being performed concurrently. In another example embodiment, name conflicts between different files may be resolved automatically.
-
FIG. 1 is a block diagram illustrating asystem 100, in accordance with an example embodiment, of securely synchronizing files. In thesystem 100, files may be synchronized between one ormore servers 102 and one ormore client devices 104A-104D. Theclient devices 104A-104D may include various types of devices running various types of platforms with various types of operating systems and applications. For example,client device 104A may be a mobile device running proprietarymobile applications 106.Client device 104B may be a personal computer running a Macintosh™ operating system from Apple Inc. of Cupertino, Calif. This may include a file system known as Finder 108, which may include a specialized plug-in 110 to allow Finder 108 to be altered in order to better operate with aproprietary application 112. -
Client device 104C may be a personal computer running a Windows™ operating system from Microsoft Corp. of Redmond, Wash. This may include a file system known as Windows Explorer 114, which may include a specialized plug-in 116 to allow Windows Explorer 114 to be altered in order to better operate with aproprietary application 118. Additionally, applications such as Microsoft Office™ 120 and Microsoft Outlook™ 122 may also include their own specialized plug-ins proprietary application 118.Client device 104D may be a web-based device that may operate aweb browser 128 instead of a traditional operating system. - Each of the
client devices 104A-104D may communicate with a back-end 130 hosted by the one ormore servers 102. This communication may either take place directly between the back-end 130 and theproprietary applications web application 132. A provisioning service, such as HostPilot™ 134 may also be present, and may coordinate with a directory service such asActive Directories 136. -
FIG. 2 is a block diagram illustrating a client device, in accordance with an example embodiment, in more detail. In an example embodiment, the client device in this figure corresponds toclient device 104C ofFIG. 1 , although in some example embodiments this diagram corresponds to a different client device. Additionally, the various components inFIG. 2 are labeled as those components are labeled inFIG. 1 . In some embodiments, however, the components may not be identical.Proprietary application 116 may be a desktop application, and may store files in alocal database 200. Theproprietary application 118 may also communicate with specialized plug-ins proprietary application 118 may communicate with astorage service 202 on theserver 102. -
FIG. 3 is a block diagram illustrating another client device, in accordance with an example embodiment, in more detail. In an example embodiment, the client device in this figure corresponds toclient device 104B ofFIG. 1 , although in some example embodiments this diagram corresponds to a different client device. Additionally, the various components inFIG. 3 are labeled as those components are labeled inFIG. 1 . In some embodiments, however, the components may not be identical.Proprietary application 112 may be a desktop application, and may store files in alocal database 300. Theproprietary application 112 may also communicate with aspecialized plugin 108 in Finder 110. This communication may take place, for example, using Thrift over TCP. Theproprietary application 118 may communicate with astorage device 302 on theserver 102. -
FIG. 4 is a block diagram illustrating a backend, in accordance with an example embodiment, in more detail. In an example embodiment, the backend in this figure corresponds to backend 130 ofFIG. 1 , although in some example embodiments this diagram corresponds to a different backend. Additionally, the various components inFIG. 4 are labeled as those components are labeled inFIG. 1 . In some embodiments, however, the components may not be identical. Thebackend 130 may include a front-end server 400, which acts to perform much of the server-side storage functions described in this disclosure, as well as interfacing with the various devices. These functions will be discussed in more detail later in this document. The front-end server 400 may interface withclient devices 104A-104D through afirewall 402. The front-end server 400 may also interface with adatabase server 404, which may control access to adatabase 406. Thedatabase 406 may be of many different types of formats. In one example embodiment, thedatabase 406 is a relational database, such as one operated using Structured Query Language (SQL). Other formats of database are envisioned, however, as well, including flat-file and multidimensional databases. The database may store not just files and folders, but also metadata about the files and folders, including, but not limited to, information about which files and folders are shared, and with whom. - A
central server 408 performs internal tasks such as cleanup, provisioning, and other backend services. Akey management server 410 provides access for keys created for each user. When a user is created on thecentral server 408, a key may be issued by thekey server 410. These keys are also used by anencryption server 412 to encrypt and decrypt files and folders. This is accomplished through the use of thefront end server 400, which understands which organization the keys belong and submits file or folder content to theencryption server 412 for encryption.Active Directories 414 is used for integration with Exchange™. - In an example embodiment, files to be synchronized between devices may be organized into folders. This allows a user to share an entire grouping of files with other users in an organization. The user initially sharing the folder can be referred to as the owner of the folder. The users with which the owner shares the folder can be referred to as grantees. In an example embodiment, the owner of a folder can share that folder with another user (grantee) from his/her organization using, for example, a web application. When a folder is shared, the grantee can receive a sharing invitation that can be either accepted or rejected using the web application. When the grantee accepts the sharing invitation, the desktop application can create the shared folder locally (on the device of the grantee) in specific folder (e.g. My SecuriSync\Shared Folder) and then synchronize this new local folder with the server folder.
- Notably, the owner and all the grantees could conceivably have multiple instances of the folder stored on a variety of different devices. For example, an owner may have an instance of the folder on a desktop computer and a mobile phone, while one of the grantees may have an instance of the folder on a laptop computer and a tablet computer. All of these instances may be synchronized, not just for each user but among all the users having access to the folder.
- A folder can be shared by the owner at a number of different permission levels. In an example embodiment, the permission levels include View, Modify or Co-owner permission. The View permission allows viewing but not modification of the files in the folder. Thus, if a folder is shared with View permission, then if the grantee locally modifies one of the files in the folder, the local file will be overwritten with the server version. The modified version can be saved to a conflict file. Also, if the grantee locally deletes a file/folder that exists on the server, the file/folder will be restored locally. If the grantee having View permission locally creates a new file/folder, it will not be synchronized by the desktop application.
- It should be noted that in some example embodiments the view permission only applies to the version of the files potentially shared with other users. In some example embodiments, if a user having view permission makes a modification to a file and saves that modification locally, the modified version can be shared with the user's other devices. In one example embodiment, this may be accomplished by synchronizing the conflict folder among the user's devices.
- In an example embodiment, if a folder is shared with Modify or Co-owner permission, then if the grantee locally modifies a file that exists on the server or creates a new file, the local file version will be synchronized to the server (if there is no version conflict, which will be described in more detail below). Also, if the grantee locally creates a new folder, it will be created on the server by the desktop app. If the grantee locally deletes a file/folder that exists on the server, the file/folder will be deleted on server.
- In an example embodiment, a folder may be shared with a different user (grantee) regardless of its level in a folder hierarchy. The grantee may have one of a number of different permission levels (e.g., view, modify, co-owner). In the prior art, if a subfolder of a folder was to be shared, the entire folder (including other subfolders) would also have to be shared. In an example embodiment the subfolder can be shared regardless of whether or not the parent folder is shared. Permissions for folders and subfolders are each stored independently, allowing each folder or subfolder to be shared or not shared independently. If a subfolder is shared it may appear on grantee's devices as top-level folder while simultaneously appearing as a mid-level folder (subfolder) on the owner's devices.
- In an example embodiment, if a parent folder is later shared with a grantee that already has permissions for a sub-folder of that parent folder, an issue may arise in that the grantee may get confused if suddenly the sub-folder disappears from a main directory and is placed in a new folder unbeknownst to the grantee. As such, in an example embodiment, if a parent folder is shared with a grantee that already has permissions for a sub-folder of that parent folder, the new shared parent folder may appear on the user's device as a top-level folder, while the sub-folder also remains as a top-level folder, with the same permissions as it had before. Both the top-level folder and the subfolder may be synchronized with each other, despite both being stored in the same instance of the file system (e.g., on the same device).
- It should be noted that in an example embodiment if a parent folder is shared, then the sub-folders within that folder inherit the permission level of the parent.
-
FIG. 5 is a diagram illustrating sub-folder sharing in accordance with an example embodiment. Anowner 500 may wish to share various folders and subfolders 502-508 with agrantee 510. This sharing may occur at various permission levels. The user may wish to grant viewing permission toFolder A 502, which then means that allsubfolders grantee 510 at the view permission level. This results in thegrantee 510 seeing all of the folders 502-508 when viewing folders in the view permission level. If thegrantee 510 wishes to see only those folders that he has co-owner permissions to, however, he will only seeFolder C 506 andFolder D 508. Likewise, if thegrantee 510 wishes to see only those folders that he has modify permissions to, then he will only seeFolder D 508. - The various sharing permissions may be stored with the files/folders. When a folder is shared with a grantee, a virtual folder corresponding to the folder can be created on a device of the grantee. All objects within the folder can be copied to the virtual folder to share and mapped to the existing objects. Additionally, the shared folder may be stored at a level equal to parent folders of a file hierarchy on the device of the user.
-
FIG. 6 is a flow diagram illustrating amethod 600, in accordance with an example embodiment, for sharing a folder in a file system between an owner and a grantee. Atoperation 602, an indication of a folder to share with a grantee may be received from the owner. The folder to share may be a subfolder within a parent folder. The parent folder, in this instance, is not shared with the grantee. Atoperation 604, sharing permissions indicating a level of access the grantee has to the folder are stored with the folder. Atoperation 606, a virtual folder corresponding to the folder is created on a device of the grantee, the virtual folder mapping to all objects within the folder to share and being stored at a level equal to parent folders of a file hierarchy on the device of the grantee. - A file version conflict may occur in the following situations:
- If the file has been modified locally and on the server after the last synchronization and the server version differs from the local version.
- If the file has not been synchronized and the server version differs from the local version.
- If the file has been modified locally after the last synchronization and the user has View permission to this file.
- In these cases, in an example embodiment, the local file is copied to the conflict file and then the local file is overwritten with the server version.
- The conflict file is created in the same folder as the original file and has the name <original file name> (Conflicted copy <YYYY-MM-DD>—for <user name>).<original file extension> (e.g. “document(Conflicted copy 2013-04-04—for Nikita Uraltsev).docx”)
-
FIG. 7 is a block diagram illustrating amobile device 700, according to an example embodiment. Themobile device 700 can include aprocessor 702. Theprocessor 702 can be any of a variety of different types of commercially available processors suitable for mobile devices 700 (for example, an XScale architecture microprocessor, a Microprocessor without Interlocked Pipeline Stages (MIPS) architecture processor, or another type of processor). Amemory 704, such as a random access memory (RAM), a Flash memory, or other type of memory, is typically accessible to theprocessor 702. Thememory 704 can be adapted to store an operating system (OS) 706, as well asapplication programs 708, such as a mobile location enabled application that can provide LBSs to a user. Theprocessor 702 can be coupled, either directly or via appropriate intermediary hardware, to adisplay 710 and to one or more input/output (I/O)devices 712, such as a keypad, a touch panel sensor, a microphone, and the like. Similarly, in some embodiments, theprocessor 702 can be coupled to atransceiver 714 that interfaces with anantenna 716. Thetransceiver 714 can be configured to both transmit and receive cellular network signals, wireless data signals, or other types of signals via theantenna 716, depending on the nature of themobile device 700. Further, in some configurations, aGPS receiver 718 can also make use of theantenna 716 to receive GPS signals. - Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules can constitute either software modules (e.g., code embodied (1) on a non-transitory machine-readable medium or (2) in a transmission signal) or hardware-implemented modules. A hardware-implemented module is tangible unit capable of performing certain operations and can be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., a standalone, client or server computer system) or one or more processors can be configured by software (e.g., an application or application portion) as a hardware-implemented module that operates to perform certain operations as described herein.
- In various embodiments, a hardware-implemented module can be implemented mechanically or electronically. For example, a hardware-implemented module can comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware-implemented module can also comprise programmable logic or circuitry as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware-implemented module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) can be driven by cost and time considerations.
- Accordingly, the term “hardware-implemented module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily or transitorily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware-implemented modules are temporarily configured (e.g., programmed), each of the hardware-implemented modules need not be configured or instantiated at any one instance in time. For example, where the hardware-implemented modules comprise a general-purpose processor configured using software, the general-purpose processor can be configured as respective different hardware-implemented modules at different times. Software can accordingly configure a processor, for example, to constitute a particular hardware-implemented module at one instance of time and to constitute a different hardware-implemented module at a different instance of time.
- Hardware-implemented modules can provide information to, and receive information from, other hardware-implemented modules. Accordingly, the described hardware-implemented modules can be regarded as being communicatively coupled. Where multiple such hardware-implemented modules exist contemporaneously, communications can be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware-implemented modules. In embodiments in which multiple hardware-implemented modules are configured or instantiated at different times, communications between such hardware-implemented modules can be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware-implemented modules have access. For example, one hardware-implemented module can perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware-implemented module can then, at a later time, access the memory device to retrieve and process the stored output. Hardware-implemented modules can also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
- The various operations of example methods described herein can be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors can constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein can, in some example embodiments, comprise processor-implemented modules.
- Similarly, the methods described herein can be at least partially processor-implemented. For example, at least some of the operations of a method can be performed by one of processors or processor-implemented modules. The performance of certain of the operations can be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processor or processors can be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors can be distributed across a number of locations.
- The one or more processors can also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations can be performed by a group of computers (as examples of machines including processors), these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application program interfaces (APIs).)
- Example embodiments can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Example embodiments can be implemented using a computer program product, e.g., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable medium for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers.
- A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
- In example embodiments, operations can be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Method operations can also be performed by, and apparatus of example embodiments can be implemented as, special purpose logic circuitry, e.g., a FPGA or an ASIC.
- The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In embodiments deploying a programmable computing system, it will be appreciated that both hardware and software architectures require consideration. Specifically, it will be appreciated that the choice of whether to implement certain functionality in permanently configured hardware (e.g., an ASIC), in temporarily configured hardware (e.g., a combination of software and a programmable processor), or a combination of permanently and temporarily configured hardware can be a design choice. Below are set out hardware (e.g., machine) and software architectures that can be deployed, in various example embodiments.
-
FIG. 15 is a block diagram of machine in the example form of a computer system 1500 within which instructions, for causing the machine to perform any one or more of the methodologies discussed herein, can be executed. In alternative embodiments, the machine operates as a standalone device or can be connected (e.g., networked) to other machines. In a networked deployment, the machine can operate in the capacity of a server or a client machine in server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine can be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. - The example computer system 1500 includes a processor 1502 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), or both), a main memory 1504 and a static memory 1506, which communicate with each other via a bus 1508. The computer system 1500 can further include a video display unit 1510 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system 1500 also includes an alpha-numeric input device 1512 (e.g., a keyboard or a touch-sensitive display screen), a user interface (UI) navigation device 1514 (e.g., a mouse), a disk drive unit 1516, a signal generation device 1518 (e.g., a speaker), and a network interface device 1520.
- The disk drive unit 1516 includes a machine-readable medium 1522 on which is stored one or more sets of instructions and data structures (e.g., software) 1524 embodying or utilized by any one or more of the methodologies or functions described herein. The instructions 1524 can also reside, completely or at least partially, within the main memory 1504 and/or within the processor 1502 during execution thereof by the computer system 1500, with the main memory 1504 and the processor 1502 also constituting machine-readable media 1522.
- While the machine-readable medium 1522 is shown in an example embodiment to be a single medium, the term “machine-readable medium” can include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more instructions or data structures 1524. The term “machine-readable medium” shall also be taken to include any tangible medium that is capable of storing, encoding or carrying instructions 1524 for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure, or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions 1524. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. Specific examples of machine-readable media 1522 include non-volatile memory, including by way of example semiconductor memory devices, e.g., erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
- The instructions 152.4 can further be transmitted or received over a communications network 1526 using a transmission medium. The instructions 1524 can be transmitted using the network interface device 1520 and any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks include a local area network (LAN), a wide area network (WAN), the Internet, mobile telephone networks, plain old telephone (POTS) networks, and wireless data networks (e.g., WiFi and WiMax networks). The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions 1524 for execution by the machine, and includes digital or analog communications signals or other intangible media to facilitate communication of such software.
- Although an embodiment has been described with reference to specific example embodiments, it will be evident that various modifications and changes can be made to these embodiments without departing from the broader spirit and scope of the disclosure. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. The accompanying drawings that form a part hereof, show by way of illustration, and not of limitation, specific embodiments in which the subject matter can be practiced. The embodiments illustrated are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other embodiments can be utilized and derived therefrom, such that structural and logical substitutions and changes can be made without departing from the scope of this disclosure. This Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.
- Such embodiments of the inventive subject matter can be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed. Thus, although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose can be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the above description.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/278,321 US20190180044A1 (en) | 2013-05-08 | 2019-02-18 | Internal folder sharing |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361820793P | 2013-05-08 | 2013-05-08 | |
US14/271,846 US10248803B2 (en) | 2013-05-08 | 2014-05-07 | Internal folder sharing |
US16/278,321 US20190180044A1 (en) | 2013-05-08 | 2019-02-18 | Internal folder sharing |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/271,846 Continuation US10248803B2 (en) | 2013-05-08 | 2014-05-07 | Internal folder sharing |
Publications (1)
Publication Number | Publication Date |
---|---|
US20190180044A1 true US20190180044A1 (en) | 2019-06-13 |
Family
ID=51865582
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/271,846 Active 2037-04-06 US10248803B2 (en) | 2013-05-08 | 2014-05-07 | Internal folder sharing |
US14/271,918 Abandoned US20140372750A1 (en) | 2013-05-08 | 2014-05-07 | Client-side encryption |
US14/271,798 Abandoned US20140337290A1 (en) | 2013-05-08 | 2014-05-07 | Secure synchronization of files |
US16/278,321 Pending US20190180044A1 (en) | 2013-05-08 | 2019-02-18 | Internal folder sharing |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/271,846 Active 2037-04-06 US10248803B2 (en) | 2013-05-08 | 2014-05-07 | Internal folder sharing |
US14/271,918 Abandoned US20140372750A1 (en) | 2013-05-08 | 2014-05-07 | Client-side encryption |
US14/271,798 Abandoned US20140337290A1 (en) | 2013-05-08 | 2014-05-07 | Secure synchronization of files |
Country Status (2)
Country | Link |
---|---|
US (4) | US10248803B2 (en) |
WO (1) | WO2015171846A1 (en) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10248803B2 (en) | 2013-05-08 | 2019-04-02 | Intermedia.Net, Inc. | Internal folder sharing |
US20160140139A1 (en) * | 2014-11-17 | 2016-05-19 | Microsoft Technology Licensing, Llc | Local representation of shared files in disparate locations |
CN104579690B (en) * | 2015-01-23 | 2018-07-10 | 济南同智伟业软件股份有限公司 | High in the clouds KEY systems and application method |
US10277601B1 (en) | 2015-05-11 | 2019-04-30 | Google Llc | System and method for recursive propagating application access control |
US11470131B2 (en) * | 2017-07-07 | 2022-10-11 | Box, Inc. | User device processing of information from a network-accessible collaboration system |
CN107395612A (en) * | 2017-08-08 | 2017-11-24 | 四川长虹电器股份有限公司 | Realize the System and method for of network disk data safety |
US11055261B2 (en) * | 2018-02-28 | 2021-07-06 | Microsoft Technology Licensing, Llc | In-application support for topological changes to files during remote synchronization |
US11991273B2 (en) | 2018-09-04 | 2024-05-21 | International Business Machines Corporation | Storage device key management for encrypted host data |
US11088829B2 (en) | 2018-09-04 | 2021-08-10 | International Business Machines Corporation | Securing a path at a node |
US11038698B2 (en) | 2018-09-04 | 2021-06-15 | International Business Machines Corporation | Securing a path at a selected node |
US11610012B1 (en) * | 2019-11-26 | 2023-03-21 | Gobeep, Inc. | Systems and processes for providing secure client controlled and managed exchange of data between parties |
US11444754B1 (en) * | 2021-12-30 | 2022-09-13 | Monday.com Ltd. | Tenant level encryption |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5729734A (en) * | 1995-11-03 | 1998-03-17 | Apple Computer, Inc. | File privilege administration apparatus and methods |
US20040193672A1 (en) * | 2003-03-27 | 2004-09-30 | Microsoft Corporation | System and method for virtual folder sharing including utilization of static and dynamic lists |
US20050138192A1 (en) * | 2003-12-19 | 2005-06-23 | Encarnacion Mark J. | Server architecture for network resource information routing |
US20090100347A1 (en) * | 2005-12-21 | 2009-04-16 | Schemers Roland J | Enhanced calendaring functionality in a collaboration suite |
US20090276771A1 (en) * | 2005-09-15 | 2009-11-05 | 3Tera, Inc. | Globally Distributed Utility Computing Cloud |
US20090328171A1 (en) * | 2007-05-25 | 2009-12-31 | Si Corporation | Method and system for secure remote storage of electronic media |
US7814554B1 (en) * | 2003-11-06 | 2010-10-12 | Gary Dean Ragner | Dynamic associative storage security for long-term memory storage devices |
US20110296308A1 (en) * | 2010-05-31 | 2011-12-01 | Woojoon Yi | Mobile terminal and controlling method thereof |
US8108426B2 (en) * | 2007-09-28 | 2012-01-31 | Xcerion Aktiebolag | Application and file system hosting framework |
US20120078720A1 (en) * | 2010-09-28 | 2012-03-29 | Startforce, Inc. | Virtual desktop service with targeted advertisement |
US20130024424A1 (en) * | 2009-06-30 | 2013-01-24 | Commvault Systems, Inc. | Data object store and server for a cloud storage environment, including data deduplication and data management across multiple cloud storage sites |
US20130275973A1 (en) * | 2010-09-06 | 2013-10-17 | Fonleap Limited | Virtualisation system |
US20130283232A1 (en) * | 2010-11-24 | 2013-10-24 | Van Megchelen & Tilanus B.V. | User-Friendly Method and System for Compiling a Unique Sample Code for a Digital Sample with the Help of a User Interface |
US20130305039A1 (en) * | 2011-05-14 | 2013-11-14 | Anthony Francois Gauda | Cloud file system |
US8719286B1 (en) * | 2012-03-30 | 2014-05-06 | Emc Corporation | System and method for block-based subtree virtual machine backup |
US9633125B1 (en) * | 2012-08-10 | 2017-04-25 | Dropbox, Inc. | System, method, and computer program for enabling a user to synchronize, manage, and share folders across a plurality of client devices and a synchronization server |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324587B1 (en) * | 1997-12-23 | 2001-11-27 | Microsoft Corporation | Method, computer program product, and data structure for publishing a data object over a store and forward transport |
US6564369B1 (en) * | 1998-08-20 | 2003-05-13 | Pearson Technical Software, Inc. | Conflict checking using configuration images |
US6401079B1 (en) * | 1999-10-01 | 2002-06-04 | Inleague, Inc. | System for web-based payroll and benefits administration |
US8793374B2 (en) * | 1999-12-02 | 2014-07-29 | Western Digital Technologies, Inc. | Managed peer-to-peer applications, systems and methods for distributed data access and storage |
US7761497B1 (en) * | 2001-07-13 | 2010-07-20 | Vignette Software, LLC | Storage medium having a manageable file directory structure |
JP2005078612A (en) * | 2003-09-04 | 2005-03-24 | Hitachi Ltd | File sharing system and file migration method between file sharing devices |
US20070130143A1 (en) * | 2005-12-05 | 2007-06-07 | Wenbing Zhang | System and Method for File Sharing and Collaboration on the Internet |
US7860825B2 (en) * | 2006-05-08 | 2010-12-28 | Palm, Inc. | Method for synchronizing software application and user data for asynchronous client-server and peer to peer computer networks |
US8099605B1 (en) * | 2006-06-05 | 2012-01-17 | InventSec AB | Intelligent storage device for backup system |
US20080005195A1 (en) * | 2006-06-30 | 2008-01-03 | Microsoft Corporation | Versioning synchronization for mass p2p file sharing |
US20080163743A1 (en) * | 2007-01-07 | 2008-07-10 | Freedman Gordon J | Synchronization methods and systems |
US8204856B2 (en) * | 2007-03-15 | 2012-06-19 | Google Inc. | Database replication |
US9401957B2 (en) * | 2007-09-14 | 2016-07-26 | International Business Machines Corporation | System and method for synchronization between servers |
CA2807972A1 (en) | 2010-08-11 | 2012-02-16 | Security First Corp. | Systems and methods for secure multi-tenant data storage |
US20120180073A1 (en) * | 2011-01-06 | 2012-07-12 | Hung Hin Leung | Mobile Device Application Framework |
US8799997B2 (en) * | 2011-04-18 | 2014-08-05 | Bank Of America Corporation | Secure network cloud architecture |
WO2013009337A2 (en) * | 2011-07-08 | 2013-01-17 | Arnold Goldberg | Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof |
US9307006B2 (en) | 2012-04-11 | 2016-04-05 | Salesforce.Com, Inc. | System and method for synchronizing data objects in a cloud based social networking environment |
US20130282830A1 (en) | 2012-04-23 | 2013-10-24 | Google, Inc. | Sharing and synchronizing electronically stored files |
US8862561B1 (en) * | 2012-08-30 | 2014-10-14 | Google Inc. | Detecting read/write conflicts |
US9400800B2 (en) * | 2012-11-19 | 2016-07-26 | Palo Alto Research Center Incorporated | Data transport by named content synchronization |
US10248803B2 (en) | 2013-05-08 | 2019-04-02 | Intermedia.Net, Inc. | Internal folder sharing |
-
2014
- 2014-05-07 US US14/271,846 patent/US10248803B2/en active Active
- 2014-05-07 US US14/271,918 patent/US20140372750A1/en not_active Abandoned
- 2014-05-07 US US14/271,798 patent/US20140337290A1/en not_active Abandoned
-
2015
- 2015-05-07 WO PCT/US2015/029586 patent/WO2015171846A1/en active Application Filing
-
2019
- 2019-02-18 US US16/278,321 patent/US20190180044A1/en active Pending
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5729734A (en) * | 1995-11-03 | 1998-03-17 | Apple Computer, Inc. | File privilege administration apparatus and methods |
US20040193672A1 (en) * | 2003-03-27 | 2004-09-30 | Microsoft Corporation | System and method for virtual folder sharing including utilization of static and dynamic lists |
US7814554B1 (en) * | 2003-11-06 | 2010-10-12 | Gary Dean Ragner | Dynamic associative storage security for long-term memory storage devices |
US20050138192A1 (en) * | 2003-12-19 | 2005-06-23 | Encarnacion Mark J. | Server architecture for network resource information routing |
US20090276771A1 (en) * | 2005-09-15 | 2009-11-05 | 3Tera, Inc. | Globally Distributed Utility Computing Cloud |
US20090100347A1 (en) * | 2005-12-21 | 2009-04-16 | Schemers Roland J | Enhanced calendaring functionality in a collaboration suite |
US20090328171A1 (en) * | 2007-05-25 | 2009-12-31 | Si Corporation | Method and system for secure remote storage of electronic media |
US8108426B2 (en) * | 2007-09-28 | 2012-01-31 | Xcerion Aktiebolag | Application and file system hosting framework |
US20130024424A1 (en) * | 2009-06-30 | 2013-01-24 | Commvault Systems, Inc. | Data object store and server for a cloud storage environment, including data deduplication and data management across multiple cloud storage sites |
US20110296308A1 (en) * | 2010-05-31 | 2011-12-01 | Woojoon Yi | Mobile terminal and controlling method thereof |
US20130275973A1 (en) * | 2010-09-06 | 2013-10-17 | Fonleap Limited | Virtualisation system |
US20120078720A1 (en) * | 2010-09-28 | 2012-03-29 | Startforce, Inc. | Virtual desktop service with targeted advertisement |
US20130283232A1 (en) * | 2010-11-24 | 2013-10-24 | Van Megchelen & Tilanus B.V. | User-Friendly Method and System for Compiling a Unique Sample Code for a Digital Sample with the Help of a User Interface |
US20130305039A1 (en) * | 2011-05-14 | 2013-11-14 | Anthony Francois Gauda | Cloud file system |
US8719286B1 (en) * | 2012-03-30 | 2014-05-06 | Emc Corporation | System and method for block-based subtree virtual machine backup |
US9633125B1 (en) * | 2012-08-10 | 2017-04-25 | Dropbox, Inc. | System, method, and computer program for enabling a user to synchronize, manage, and share folders across a plurality of client devices and a synchronization server |
Also Published As
Publication number | Publication date |
---|---|
US20140337290A1 (en) | 2014-11-13 |
US20140372750A1 (en) | 2014-12-18 |
WO2015171846A1 (en) | 2015-11-12 |
US20140337386A1 (en) | 2014-11-13 |
US10248803B2 (en) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190180044A1 (en) | Internal folder sharing | |
US11516288B2 (en) | Synchronized content library | |
US10397319B2 (en) | Server-side selective synchronization | |
AU2014284461B2 (en) | Syncing content clipboard | |
US10242045B2 (en) | Filtering content using synchronization data | |
US10168927B2 (en) | Data mirroring for network attached storage | |
US9996549B2 (en) | Method to construct a file system based on aggregated metadata from disparate sources | |
JP7657281B2 (en) | Use encryption key exchange and rotation to share passwords via shared folders | |
US20150006482A1 (en) | Naïve, client-side sharding with online addition of shards | |
US9747321B2 (en) | Providing a content preview | |
WO2019047976A1 (en) | Network file management method, terminal and computer readable storage medium | |
US9613047B2 (en) | Automatic content item upload | |
US20150222580A1 (en) | Directing to shared content | |
US20140304384A1 (en) | Uploading large content items | |
US20100318554A1 (en) | Content mesh searching | |
US20160179789A1 (en) | Content localization using fallback translations | |
US11080243B2 (en) | Synchronizing virtualized file systems | |
US20150163326A1 (en) | Approaches for remotely unzipping content | |
US9626410B2 (en) | Vertically partitioned databases | |
US10733142B1 (en) | Method and apparatus to have snapshots for the files in a tier in a de-duplication file system | |
US20190258726A1 (en) | File and data migration to storage system | |
Kariyattin et al. | Evaluating NextCloud as a file storage for apache airavata | |
US10242025B2 (en) | Efficient differential techniques for metafiles | |
US20170124212A1 (en) | Location-independent links to content at online content management systems | |
US20190228487A1 (en) | Providing near real-time and effective litigation management for multiple remote content systems using asynchronous bi-directional replication pipelines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: APPLICATION DISPATCHED FROM PREEXAM, NOT YET DOCKETED |
|
AS | Assignment |
Owner name: INTERMEDIA.NET, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DUSEVIC, BOJAN;GACHECHILADZE, ANDREW;URALTSEV, NIKITA;AND OTHERS;SIGNING DATES FROM 20140502 TO 20140505;REEL/FRAME:049936/0632 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCV | Information on status: appeal procedure |
Free format text: APPEAL BRIEF (OR SUPPLEMENTAL BRIEF) ENTERED AND FORWARDED TO EXAMINER |
|
STCV | Information on status: appeal procedure |
Free format text: EXAMINER'S ANSWER TO APPEAL BRIEF MAILED |
|
STCV | Information on status: appeal procedure |
Free format text: ON APPEAL -- AWAITING DECISION BY THE BOARD OF APPEALS |
|
STCV | Information on status: appeal procedure |
Free format text: BOARD OF APPEALS DECISION RENDERED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |