如果您对云端应用开发感兴趣,那么Minio Server 是存储数据的绝佳选择。如果您只想将一些最重要的文件和图像备份并共享到一个或多个云存储服务,那么 Minio Client (mc) 将非常适合您。如果您还想能够让一切都能按照您的意愿工作,那么将 LiveCode 添加到组合中就可以将所有内容联系在一起。此示例适用于 Mac OS X,但也可以轻松修改以适用于 Linux 和 Windows,因为 Minio 和 LiveCode 都支持多个平台。
材料
Minio Client
LiveCode
1 个复选框 “miniocheck”
1 个复选框 “amazoncheck”
1 个字段 “transfer”
1 个字段 “output”
1 个图形 “harddrive”
1 个图形 “offtominio”——在 LC 中绘制的简单箭头
1 个图形 “offtoamazon” (可选)——在 LC 中绘制的简单箭头
1 张镜像图片
1 张 Minio 图片
1 张 Amazon 图片 (可选)
25 行(不包括注释)代码附加到您的镜像图片
安装 Minio 客户端 并为 Minio “play” 服务器配置您的密钥。如果您有 Amazon S3 账户,请将其添加到您的 minio 配置中。这非常简单,只需阅读 Minio Client 的在线帮助即可。
在 LiveCode 中创建一个新的堆栈,并为其命名。
导入一个图形图像作为镜像的控件。您将在其中嵌入用于接收来自 Finder 的拖放操作的代码。
添加另外两个图像来表示 Minio play 服务器和您的 Amazon S3 实例。
添加两个复选框以提供一些简单的反馈,表明当您将文件夹拖到镜像时发生了一些事情。
在您的窗口中添加一个字段,并将其命名为“output”。将其设置为滚动字段,以便您可以查看镜像操作的结果。
添加另一个字段,并将其命名为“transfer”。将其设置为不可见。
将您的脚本附加到镜像图像
on dragEnter
if there is a folder the dragData["files"] then set the acceptDrop to true
--镜像仅对文件夹进行操作--您可以根据需要进行创意
--对多个文件夹进行过滤
set the hilite of btn "miniocheck" to false
set the hilite of btn "amazoncheck" to false
end dragEnter
on dragDrop -- 检查是否正在拖放文件
if the dragData["files"] is empty then exit dragDrop
--在此处考虑一个检查,以查看这是否是一个完整的硬盘;您--可能不想这样做:)
put "正在将数据镜像到 Minio..." into fld "transfer"
show fld "transfer"
put the dragData["files"] into whatfile
--在“play”上创建您的存储桶,并将“play/mark”替换为-------
--"play/yourbucketname"
show graphic "offtominio"
put "mc --quiet --json mirror --force" && quote & whatfile & quote && "play/mark" into tDL --json 允许轻松移动到数据库和--字段
set the hilite of btn "miniocheck" to true
put shell(tDL) into hold
put "已镜像到 Minio:" & return & textDecode(hold, "UTF-8") into hold
---现在到 Amazon...
hide graphic "offtominio"
show graphic "offtoamazon"
put "正在将数据镜像到 Amazon..." into fld "transfer"
--在 s3 上创建您的存储桶,并将“s3marklivecodemc/”替换为您的--存储桶名称
put "mc --quiet --json mirror --force" && quote & whatfile & quote && "s3/marklivecodemc/" into tDL
put return & shell(tDL) into hold1
set the hilite of btn "amazoncheck" to true
hide fld "transfer"
hide graphic "offtoamazon"
put return & "已镜像到 Amazon:" & textDecode(hold1, "UTF-8") after hold
put hold into fld "output"
end dragDrop
为什么不运行您自己的内部 S3 兼容对象存储服务器?Minio 创造了公平的竞争环境。
对于 Livecode 部分,您需要添加一些检查和平衡,使您的界面适合您的需求,并考虑至少创建一个拖放应用程序版本(拖放/启动/执行/退出)。如果您不想使用 shell,则可以使用 LiveCode Builder 和 Go 的 C 包装器将 Minio API 本地导入到 LiveCode 中。或者,您可以构建一个两阶段的 LiveCode 应用程序——一个用于执行 shell,另一个用于您的非阻塞 GUI。使用 LiveCode 添加哈希、压缩和加密,并使用 mc 和简单的管道创建两因素链接以安全地共享您的文件。
一旦您掌握了基础知识,您可能还想使用 SQLite 或 PostgreSQL 后端来构建一个具有漂亮前端的完整内容系统。