无需DataSync,如何通过AWS会话管理器从EC2复制文件到EFS
将EC2实例文件复制到EFS(会话管理器环境,无需DataSync/SSH)
不存在名为AWS-copy的官方AWS工具,但你可以通过以下几种无需DataSync、仅在AWS会话管理器内操作的方法完成文件复制:
方法1:直接挂载EFS到EC2实例后本地复制
这是最直接高效的方式,步骤如下:
- 确认EC2实例所在VPC已为目标EFS创建挂载目标,且EC2的安全组允许出站访问EFS的NFS端口(2049)。
- 在EC2实例上安装NFS客户端:
- Amazon Linux/RHEL系统:
sudo yum install -y nfs-utils - Ubuntu/Debian系统:
sudo apt-get install -y nfs-common
- Amazon Linux/RHEL系统:
- 创建EFS挂载目录:
sudo mkdir /mnt/efs - 挂载EFS文件系统:
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport <EFS文件系统ID>.efs.<AWS区域>.amazonaws.com:/ /mnt/efs - 复制文件到EFS:
- 单文件:
sudo cp /path/to/your/file /mnt/efs/ - 目录(递归复制):
sudo cp -r /path/to/your/directory/* /mnt/efs/ - 更可靠的增量复制推荐用
rsync:sudo rsync -av /path/to/your/directory/ /mnt/efs/
- 单文件:
方法2:以S3为中转(适用于无法直接挂载EFS的场景)
如果因网络或权限限制无法直接挂载EFS,可借助S3作为临时中转:
- 确保EC2实例的IAM角色具备S3读写权限(若未配置,可通过会话管理器临时添加权限)。
- 将EC2上的文件上传到S3:
aws s3 cp /path/to/your/directory s3://your-bucket-name/temp-folder/ --recursive - 挂载EFS到EC2(步骤同方法1),再从S3拉取文件到EFS:
aws s3 cp s3://your-bucket-name/temp-folder/ /mnt/efs/ --recursive - 完成后可删除S3上的临时文件:
aws s3 rm s3://your-bucket-name/temp-folder/ --recursive
关于scp报错的说明
scp是基于SSH的文件传输工具,仅用于本地与EC2、EC2之间的文件传输,无法直接对接EFS(EFS是NFS协议的共享存储),因此你之前的操作报错是预期结果。
内容的提问来源于stack exchange,提问作者IvoryBlue55
相关产品推荐
相关产品推荐

