gofs是基于golang开发的一款开箱即用的跨平台文件同步工具,目前主要支持以下几种基本场景的文件同步,并且可以通过组合不同的场景来实现更加复杂的同步需求。
在磁盘之间同步
使用本地磁盘在磁盘之间同步文件
+----------+ +----------+ +----------+
| |<---(A)-- monitor disk -----+ | | |
| DiskA | | Client | | DiskB |
| |----(B)--- notify change ---->| | | |
| | | | | |
| |<---(C)--- read file -----| | | |
| | | | | |
| |----(D)--- return file ---->| |----(E)--- write file ---->| |
| | | | | |
+----------+ +----------+ +----------+
从服务器端同步
+----------+ +----------+ +----------+ +----------+
| |<---(A)-- monitor disk -----+ | | | | |
| Server | | Server | | Client | | Client |
| Disk |----(B)--- notify change ---->| |----(C)--notify change ---->| | | Disk |
| | | | | | | |
| |<---(E)--- read file -----| |<---(D)-- pull file -----| | | |
| | | | | | | |
| |----(F)--- return file ---->| |----(G)--- send file ---->| |----(H)--- write file ---->| |
| | | | | | | |
+----------+ +----------+ +----------+ +----------+
同步到服务器端
+----------+ +----------+ +----------+ +----------+
| |<---(A)--- monitor disk -----+ | | | | |
| Client | | Client | | Server | | Server |
| Disk |----(B)--- notify change ---->| | | | | Disk |
| | | | | | | |
| |<---(C)--- read file -----| | | | | |
| | | | | | | |
| |----(D)--- return file ---->| |----(E)--- push file ---->| |----(F)--- write file ---->| |
| | | | | | | |
+----------+ +----------+ +----------+ +----------+
从SFTP服务器上同步
使用SFTP拉取客户端从SFTP服务器上同步文件
+----------+ +----------+ +----------+ +----------+
| |<---(A)--- monitor disk -----+ | | | | |
| Client | | Client | | SFTP | | SFTP |
| Disk |----(B)--- notify change ---->| | | Server | | Server |
| | | | | | | Disk |
| |<---(C)--- read file -----| | | | | |
| | | | | | | |
| |----(D)--- return file ---->| |----(E)--- push file ---->| |----(F)--- write file ---->| |
| | | | | | | |
+----------+ +----------+ +----------+ +----------+
同步到SFTP服务器
使用SFTP推送客户端同步文件到SFTP服务器
+----------+ +----------+ +----------+ +----------+
| | | +----(A)--- pull file ---->| |----(B)--- read file ---->| |
| Client | | Client | | SFTP | | SFTP |
| Disk |<---(E)--- write file -----| |<---(D)--- send file -----| Server |<---(C)--- return file ----| Server |
| | | | | | | Disk |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
+----------+ +----------+ +----------+ +----------+
从MinIO服务器上同步
使用MinIO拉取客户端从MinIO服务器上同步文件
+----------+ +----------+ +----------+ +----------+
| |<---(A)--- monitor disk -----+ | | | | |
| Client | | Client | | MinIO | | MinIO |
| Disk |----(B)--- notify change ---->| | | Server | | Server |
| | | | | | | Disk |
| |<---(C)--- read file -----| | | | | |
| | | | | | | |
| |----(D)--- return file ---->| |----(E)--- push file ---->| |----(F)--- write file ---->| |
| | | | | | | |
+----------+ +----------+ +----------+ +----------+
同步到MinIO服务器
使用MinIO推送客户端同步文件到MinIO服务器
+----------+ +----------+ +----------+ +----------+
| | | +----(A)--- pull file ---->| |----(B)--- read file ---->| |
| Client | | Client | | MinIO | | MinIO |
| Disk |<---(E)--- write file -----| |<---(D)--- send file -----| Server |<---(C)--- return file ----| Server |
| | | | | | | Disk |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
+----------+ +----------+ +----------+ +----------+
评论