我的NAS是怎么连接Amazon Web Services S3的

作为IT爱好者,很多家庭都配备了Network Attached Storage(NAS),用于存储和管理大量数据。一个常见的挑战是如何实现异地备份,以确保数据的安全性和可恢复性。以下是一些解决方案和工具,可以帮助用户有效地管理和使用Amazon S3与NAS的组合。

连接S3的几种方式

  1. Amazon Web Services CLI/SDK:使用命令行或者编程语言的SDK进行访问。
  2. Storage Gateway:把S3协议转换成SMB/NFS协议。
  3. Amazon Transfer Family:把S3协议转换成FTP/SFTP/FTPS协议。
  4. S3 Mount: 原生支持把S3当作一块共享盘挂载在Linux上。
  5. S3Fs:开源软件,也是把S3当作共享盘挂载在Linux上,出来时间比S3 Mount要早很多。

连接方式和安全性

使用AK/SK(访问密钥ID和密钥)连接Amazon S3虽然方便,但会明文暴露密钥,存在安全风险。推荐在EC2实例上使用IAM角色来替代AK/SK,以提高安全性。IAM角色不仅更安全,而且可以精细控制权限,避免不必要的访问。虽然我们有IAM Role anywher, 但是很多配套软件不支持使用证书进行认证。

常用的S3命令

以下是一些常用的S3命令,帮助用户管理S3中的数据:

  • aws s3 cp:用于在本地文件系统和S3存储桶之间复制文件。
  • aws s3 sync:用于同步本地目录与S3存储桶或两个S3存储桶之间的内容。
  • aws s3 ls:列出存储桶中的对象和前缀。
  • aws s3 rm:删除S3存储桶中的对象。

当然,下面是一个使用 aws s3 cp 命令的例子,展示如何使用 --include--exclude 选项进行过滤,并使用 --recursive 选项来复制目录结构中的所有文件和子文件夹:

# 使用 aws s3 cp 命令复制文件,并过滤包含和排除特定文件类型
aws s3 cp "$source_bucket" "$destination_bucket" --recursive \--exclude "*" \--include "*.jpg" \--include "*.png"# 上述命令会递归复制源存储桶中的所有 .jpg 和 .png 文件到目标存储桶

在这个例子中:

  1. source_bucketdestination_bucket:定义了源和目标 S3 存储桶的路径。
  2. –recursive:确保目录结构中的所有文件和子文件夹都被复制。
  3. –exclude “*”:首先排除所有文件。
  4. –include “*.jpg”–include “*.png”:仅包含扩展名为 .jpg.png 的文件。

以下是三个使用 AWS CLI 的例子,分别展示了 aws s3 syncaws s3 lsaws s3 rm 命令的使用方法。

aws s3 sync:用于同步本地目录与S3存储桶,或两个S3存储桶之间的内容。

# 同步本地目录到S3存储桶
aws s3 sync /path/to/local/directory s3://your-bucket-name/# 同步一个S3存储桶到另一个S3存储桶
aws s3 sync s3://source-bucket-name/ s3://destination-bucket-name/

在第一个命令中,本地目录 /path/to/local/directory 中的所有文件和子文件夹将被同步到 S3 存储桶 your-bucket-name 中。第二个命令则是将 source-bucket-name 中的内容同步到 destination-bucket-name

aws s3 ls 列出S3存储桶中的对象和前缀。

# 列出存储桶中的顶层对象和文件夹
aws s3 ls s3://your-bucket-name/# 列出存储桶中指定前缀下的所有对象
aws s3 ls s3://your-bucket-name/some-prefix/ --recursive

aws s3 rm删除S3存储桶中的对象。

# 删除单个对象
aws s3 rm s3://your-bucket-name/file.txt# 递归删除整个目录中的对象
aws s3 rm s3://your-bucket-name/some-prefix/ --recursive

第一个命令删除 your-bucket-name 存储桶中的单个对象 file.txt。第二个命令递归删除 some-prefix 目录下的所有对象。

过去,QNAP 提供 Connect to Cloud Drive 挂载云端功能,可将公有云空间挂载至 File Station。云端空间挂载的目的是让云端空间纳入 File Station 的管理服务,可让 File Station 同时管理多个公有云和远程 NAS (私有云) 空间并存取其中的档案。云端空间挂载并无云网关的中介功能,也就是说,云端空间挂载无法处理公/私有云的存取协议转换、不支持启用本地端 SSD 加速云端数据存取,且云端档案访问速度取决于因特网速度。

在这里插入图片描述
我先尝试了左边的HybridMount
在这里插入图片描述

在连接对象储存这个方面,这个软件的设置和Storage Gateway和很类似,可以选择缓存或者不使用缓存,然后把基于S3的对象存储转化成NAS的本地存储,这样也就等于转换成了。除此之外还可以连接远程的SMB,NFS和FTP,就可以满足我们日常的使用要求了。
在这里插入图片描述

在这里插入图片描述

Storage Gateway的功能

Amazon Storage Gateway是一种混合云存储服务,允许本地应用程序无缝地将数据存储在Amazon S3中。它可以将S3协议转换为NFS或SMB协议:

  • NFS(网络文件系统):适合Linux/Unix环境,提供免认证的文件共享。
  • SMB(服务器消息块):通常用于Windows环境,需要通过身份验证机制,如一次性guest密码或与Active Directory(AD)集成使用域的密码。

Storage Gateway实际上启动了一个缓存盘,定期将S3中的文件同步到该缓存盘中。上传到缓存盘的数据会立即传输到S3,而从S3下载的数据则是定时进行的。选择较短的同步间隔可以获取最新数据,但会增加费用;反之,选择较长的间隔可以降低费用。对于多用户环境,建议使用NFS协议,以减少直接从S3上传文件的开销。

Amazon Transfer Family

Amazon Transfer Family支持使用FTP、SFTP和FTPS协议将文件传输到S3:

  • FTP(文件传输协议):传统的文件传输协议,不加密,适用于低安全需求的环境。
  • SFTP(安全文件传输协议):基于SSH的文件传输协议,提供加密传输,适合高安全需求。
  • FTPS(FTP安全扩展):通过TLS加密的FTP协议,同样提供安全的文件传输。

S3F3(S3 File, Folder, and Fun)

S3F3 是一个轻量级的Java程序,用于高效地浏览和管理Amazon S3上的文件和文件夹。它提供了一个直观的界面,使用户可以轻松地进行以下操作:

  • 浏览和导航:轻松浏览S3存储桶中的文件和文件夹,支持多级文件夹结构。
  • 上传和下载:支持大文件的上传和下载,使用多线程技术来提高速度和效率。
  • 文件管理:支持复制、移动、删除和重命名文件及文件夹的操作。

S3 Mount

S3 Mount 允许用户将Amazon S3存储桶挂载为本地文件系统,从而直接在操作系统的文件管理器中访问S3存储。这种方式使得S3的使用变得更加直观和方便。以下是S3 Mount的主要功能:

  • 挂载为文件系统:通过工具如s3fs或rclone,可以将S3存储桶挂载到本地文件系统中,从而使用户可以像使用本地磁盘一样访问S3中的文件。
  • 文件操作:支持标准文件操作,如读取、写入、删除和列表文件。用户可以使用任何文件系统工具(如文本编辑器、脚本等)直接访问S3存储的数据。
  • 自动同步:部分工具支持双向同步,即本地文件更改会自动同步到S3,反之亦然。这对于需要保持本地和云端数据一致性的应用场景非常有用。

NAS设备的同步套件

许多NAS设备配备了同步套件,支持多种存储协议和平台,包括:

  • 云存储:支持兼容S3协议的对象存储、OneDrive、Google Drive等云存储服务。
  • 远程存储:支持NFS、SMB、FTP、CIFS等协议,适应不同的网络环境和存储需求。

由于“永恒之蓝”事件后,445端口被严格管控,使用公网访问SMB几乎不可行。建议使用专线或代理服务器来建立安全的连接。

这些同步套件通常也支持缓存功能,用户可以选择是否启用。启用缓存可以提高访问速度,而不启用缓存则避免了额外的本地存储费用。

应用场景

以下是一些具体的应用场景:

  1. 异地备份:使用Storage Gateway或Transfer Family将NAS中的数据备份到S3,实现数据的异地存储和灾难恢复。
  2. 文件共享和协作:通过设置NFS或SMB协议,多个用户可以访问同一个数据集,提高协作效率。
  3. 自动同步:使用NAS同步套件,将本地和云端的数据保持同步,确保数据的一致性和可用性。

这些方案帮助用户充分利用Amazon S3的弹性和可靠性,结合本地NAS的便利性,实现更高效、安全的数据管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“手撕”MySQL的索引

目录 二、索引的作用 三、索引的缺点 四、如何使用索引 查看索引: 创建索引: ​编辑 删除索引: 五、索引的底层原理 那什么是B树,什么是B树呢? B树的好处: 总结: 一、什么是索引 索…

C语言的周末小练习(贰)

周末小练习&#xff1a; 5、输入身高和体重&#xff0c;计算BMI指数(BMI w/(h*h))。 #include <stdio.h>int main() {float w,h,BMI;/*printf("请输入体重\n");scanf("%f",&w);printf("请输入身高\n");scanf("%f",&h…

vue3 快速入门 (五) : Flex布局

1. 如何变成Flex布局 变成Flex容器&#xff0c;只需在容器布局的节点的CSS中&#xff0c;增加display : flex .mylayout {/* 省略了其他代码 */display: flex; }2. flex direction : 方向 row : 以行排列 row-reverse &#xff1a; 以行反向排列 column &#xff1a;以列排列…

Matlab编程资源库(11)多项式计算

一、多项式的四则运算 1&#xff0e;多项式的加减运算 2&#xff0e;多项式乘法运算 函数conv(P1,P2)用于求多项式P1和P2的乘积。 这里&#xff0c;P1、P2是两个多项式系数向量。 3&#xff0e;多项式除法 函数[Q,r]deconv(P1,P2)用于对多项式P1和P2作除法运算。其中Q返回多项…

【前端 09】JavaScript中的对象与JSON

JavaScript中的对象与JSON 在JavaScript中&#xff0c;对象和JSON&#xff08;JavaScript Object Notation&#xff09;是两个紧密相连但又有区别的概念。它们都在数据处理和交换中扮演着重要角色。本文将详细讲解JavaScript中的自定义对象以及JSON对象的基本概念、格式、用法…

基于微信小程序+SpringBoot+Vue的教务管理系统(带1w+文档)

基于微信小程序SpringBootVue的教务管理系统(带1w文档) 基于微信小程序SpringBootVue的教务管理系统(带1w文档) 在目前的情况下&#xff0c;可以引进一款基于web的高校教务管理系统这样的现代化管理工具&#xff0c;这个工具就是解决上述问题的最好的解决方案。它不仅可以实时完…

python拼接字符串方法

文章目录 1. 使用加号&#xff08;&#xff09;2. 使用str.join()方法3. 使用格式化字符串&#xff08;f-strings, % 操作符, .format() 方法&#xff09;4. 使用列表推导式和join()结合 性能对比 在Python中&#xff0c;字符串拼接是将两个或多个字符串合并成一个新字符串的过…

生成RSA公钥的n值

简介&#xff1a;RSA算法是一种非对称加密算法&#xff0c;与对称加密算法不同的是,RSA算法有两个不同的密钥,一个是公钥,一个是私钥。 原理是&#xff1a;根据数论&#xff0c;寻求两个大素数比较简单&#xff0c;而将它们的乘积进行因式分解却极其困难&#xff0c;因此可以将…

【leetcode 详解】生成特殊数字的最少操作【中等】(C++思路精析)

题目见下&#xff1a; 测试数据: 解题思路笔记&#xff1a; 最初拿到这道题是很蒙的&#xff0c;联想不到什么数据结构的模型&#xff08;肯定是笔者积累太少了&#xff09;&#xff0c;甚至惯性地想怎么实现“删除数字”的操作&#xff1a;在原字符串中抽出一个字符然后将剩…

VS code 与Pycharm 的使用区别(个人)

注明&#xff1a;本文从这开始VS code简称VS&#xff0c;Pycharm简称PY 安装包大小 VS:PY 1:0 安装后实际大小 vs py VS:PY 2:0 界面ui&#xff08;简易&#xff09; vs py VS:PY 2:1 启动速度 VS:PY 3:1 注&#xff1a;以上为个人测评&#xff0c;无特殊意图

为什么AI会一本正经地胡说八道

泛泛地说&#xff0c;AI一本正经地胡说八道的原因可以归结为&#xff1a;AI的理解能力受到其训练数据和算法的限制&#xff0c;如果问题表达不清晰或者背景信息不足&#xff0c;AI可能会产生错误的推理或输出&#xff1b;AI语言模型本质上是基于统计学习和模式匹配的&#xff0…

第一个设计模式——单例模式

目录 一、特点&#xff1a; 二、实现单例模式步骤 三、饿汉式 四、懒汉式 五、双重检查锁 六、静态内部类 七、枚举 八、可能被反序列化和反射破坏什么意思&#xff1f; 九、如何解决呢&#xff1f; 一、特点&#xff1a; 唯一性&#xff0c;单例模式确保程序中只有一…

数据结构 -- 算法的时间复杂度和空间复杂度

数据结构 -- 算法的时间复杂度和空间复杂度 1.算法效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度 2.时间复杂度2.1 时间复杂度的概念2.2 大O的渐进表示法2.3常见时间复杂度计算举例 3.空间复杂度4. 常见复杂度对比 1.算法效率 1.1 如何衡量一个算法的好坏 如何衡量一个算法…

我在高职教STM32——EXTI之外部按键中断(1)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助CSDN平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分…

人工智能学习①

LLM背景知识介绍 大语言模型 (LLM) 背景 用于理解和生成人类语言&#xff0c;能够处理诸如文本分类、问答、翻译和对话等多种自然语言任务。 语言模型 (Language Model, LM) &#xff1a;给定一个短语&#xff08;一个词组或者一句话&#xff09;语言模型可以生成&#xff0…

Oat++ 后端实现跨域

这里记录在官方的例子中&#xff0c;加入跨域。Oat Example-CRUD 在官方的例子中&#xff0c;加入跨域。 Oat Example-CRUD 修改AppComponent.hpp文件中的代码&#xff0c;如下&#xff1a; #include "AppComponent.hpp"#include "controller/UserController…

idea-springboot后端所有@注释含义汇总-持续更新!

&#xff08;1&#xff09;启动类 ①SpringBootApplication 出现这个代表这个就是整个程序的入口&#xff0c;是运行的开始位置 &#xff08;2&#xff09;Dao层 ①Repository 作用就是声明自己这个为bean文件&#xff08;每一个controller都是一个bean文件&#xff09;&am…

blender顶点乱飞的问题解决

初学blender&#xff0c;编辑模式下移动某些顶点&#xff0c;不管是移动还是滑动都会出现定点乱飞的问题&#xff0c;后来才发现是开了吸附工具的原因&#xff01;&#xff01;&#xff01;&#xff01; 像下面这样&#xff0c;其实我只是在Z轴上移动&#xff0c;但是就跑的很…

Anaconda目录

安装目录 Anaconda 在默认情况下会安装到 C:\ProgramData\Anaconda3&#xff0c;而 conda 环境和包会安装在 C:\Users\username\.conda\ 目录下。 备注&#xff1a;我是在windows下安装 的Anaconda。我的安装目录是C:\Program Files\Anaconda3 pkgs目录 在以上两个目录下都有…

CH571F基于官方模版创建工程

直接使用MounRiver创建的工程只有最简单的串口和GPIO功能&#xff0c;其他PWM和SPI等驱动基本上都有&#xff0c;但蓝牙和USB只有参考官方的示例来&#xff0c;全部自己写属实有点麻烦了&#xff0c;而且还需要添加BLE的库。下面就简单基于官方的示例工程创建我们自己的工程。 …