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

news2025/2/22 3:48:59

作为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.coloradmin.cn/o/1955524.html

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

相关文章

使用 Docker Compose 部署 RabbitMQ 的一些经验与踩坑记录

前言 RabbitMQ 是一个功能强大的开源消息队列系统,它实现了高效的消息通信和异步处理。 本文主要介绍其基于 Docker-Compose 的部署安装和一些使用的经验。 特点 成熟,稳定消息持久化灵活的消息路由高性能,高可用性,可扩展性高支…

操作系统:进程1

一.进程 1.什么是进程 一个进程创建,他会生成几块: 代码段:进程执行的程序代码数据段:全局变量,静态变量,在进程生命周期中是动态可变的堆:动态分配的内存区域,malloc、calloc、real…

Ubuntu安装mysql,并使用IDEA连接mysql

一、安装Mysql 1.更新源 sudo apt-get update2.安装Mysql apt-get install mysql-server3.检查是否安装成功 mysql --version4.启动和关闭mysql的命令如下: #启动 sudo service mysql start #关闭 sudo service mysql stop #重启 sudo service mysql restart5.查看mysql运行…

JavaDS —— 二叉搜索树、哈希表、Map 与 Set

前言 我们将学习 Map 与 Set 这两个接口下的 TreeMap 与 TreeSet ,HashMap 与 HashSet ,在学习这四个类使用之前,我们需要先学习 二叉搜索树与 哈希表的知识。 二叉搜索树 在学习二叉树的时候,我们就已经了解过二叉搜索树的概念…

ctfshow-web入门-php特性(web142-web146)

目录 1、web142 2、web143 3、web144 4、web145 5、web146 1、web142 要求 v1 是数字,之后将 v1乘以 0x36d(即16进制的869)五次,然后将结果转换为整数并赋值给变量 $d,使用 sleep 函数使程序休眠 $d 秒&#xff0c…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 项目排期安排(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

CentOS7 yum报错Cannot find a valid baseurl for repo

问题 Loaded plugins: fastestmirror Determining fastest mirrors Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoos&infravag error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown…

基于多种机器学习算法的短信垃圾分类模型

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主导入第三方库读取数据数据预处理数据分析与可视化机器学习建模贝叶斯逻辑回归支持向量机随机森林XGBoost总结每文一语 有需要本项目的代码或文档以及全部资源,或者部署调试可以私…

阅读笔记2:董超底层视觉之美|底层视觉是什么?

原文链接:https://mp.weixin.qq.com/s/9EQNwXqCM6odwe5n9dOrmw 本文针对底层视觉给出了一个大致的定义,然后通过底层视觉与人工智能、计算机视觉、图像处理等相关概念的对比来对底层视觉做了进一步的界定。 1. 底层视觉是什么 以像素级图像为输入、处…

利用小爱同学与点灯科技+esp8266+舵机,制作智能关灯神器:小白也可制作,米家同步设备可实现多部手机进行控制。(亲测有用)

利用小爱同学与点灯科技,制作智能关灯神器:小白也可制作,米家同步设备可实现多部手机进行控制。 文章目录 利用小爱同学与点灯科技,制作智能关灯神器:小白也可制作,米家同步设备可实现多部手机进行控制。1.…

vue3 快速入门 (六) : vue中调用HTTP请求

1. 本文环境 Vue版本 : 3.4.29Node.js版本 : v20.15.0系统 : Windows11 64位IDE : VsCode 1.91.0 2. 访问HTTP 在Vue中,访问HTTP,可以使用axios第三方库。 axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js。 axios使用简…

一步步理清开源路径规划导航引擎GraphHopper

一步步理清开源路径规划导航引擎GraphHopper,学习应用 GraphHopper简介 源码用 Java 编写,开发人员可以通过 Maven 轻松上手。可以用作** Java 库**来计算两个或多个点之间路线的距离、时间、逐向指示和许多道路属性。可以用作独立的 Web 服务器来计算…

redis的学习

! 快速入门 安装 1.使用docker安装redis docker pull redisdocker run -d --name redis -p 6379:6379 --restart unless-stopped -v /etc/docker/Redis/data:/data -v /etc/docker/Redis/conf/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/e…

Python 百题(实战快速掌握语法)_2(链表)

目录 实现链表类 挑战介绍 挑战内容 挑战要求 示例代码 版权说明 参考答案 代码分析: Node 类 LinkedList 类 方法分析 总结 删除链表的重复项 挑战介绍 挑战内容 挑战要求 示例代码 版权说明 参考答案 代码分析: 寻找链表倒数第 k…

算法笔记--知识点记录2

enumerate函数 enumerate 是 Python 中的一个内置函数,它用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,通常用在 for 循环当中。 使用 enumerate 可以同时获得每个元…

什么是C++活锁?

听过太多的死锁(Deadlock),今天来聊聊什么是C活锁(Livelock)。 C中的活锁(Livelock)并非特指C语言本身的一个概念,而是并发编程和操作系统中可能遇到的一种现象。活锁指的是任务或者…

数据库 执行sql添加删除字段

添加字段: ALTER TABLE 表明 ADD COLUMN 字段名 类型 DEFAULT NULL COMMENT 注释 AFTER 哪个字段后面; 效果: 删除字段: ALTER TABLE 表明 DROP COLUMN 字段;

【C++】C++入门知识(上)

好久不见&#xff0c;本篇介绍一些C的基础&#xff0c;没有特别的主题&#xff0c;话不多说&#xff0c;直接开始。 1.C的第一个程序 C中需要把定义文件代码后缀改为 .cpp 我们在 test.cpp 中来看下面程序 #include <stdio.h> int main() {printf("hello world\n…

Linux文件与相关函数的知识点3

main函数参数 int main(int argc,char *argv[]) { return 0; } C语言规定了main函数的参数只能有两个&#xff0c;一个是argc,一个是argv并且&#xff0c;argc只能是整数&#xff0c;第二个必须是指向字符 串的指针数组。 argc: 参数表示命令行中参数的个数&#xff0…

【建议收藏】CTF网络安全夺旗赛刷题指南(非常详细)零基础入门到精通,收藏这一篇就够了

在数字化浪潮汹涌澎湃的今天&#xff0c;网络安全已成为国家、企业和个人无法忽视的重要议题。为了挖掘和培养网络安全人才&#xff0c;一场场紧张刺激、充满智慧的CTF&#xff08;Capture The Flag&#xff09;安全竞赛应运而生。 一、CTF安全竞赛简介 CTF安全竞赛&#xff0c…