如何在已安装AWS CLI的Windows服务器上实现本地文件夹新建文件/文件夹时自动同步至AWS S3
Windows服务器本地文件夹到AWS S3持续自动同步配置
前置检查
- 确认服务器已安装AWS CLI,并通过
aws configure完成访问凭证、目标区域的基础配置,执行aws s3 ls能正常列出当前账号下的存储桶,验证连通性 - 明确两个核心路径:本地需要持续同步的文件夹绝对路径(例如
D:\work\sync-to-s3)、目标S3存储桶的对应路径(例如s3://company-backup-bucket/server-files/)
触发式自动同步实现
- 采用系统内置的PowerShell文件事件监听机制实现同步,无需安装额外第三方工具,稳定性适配服务器长期运行场景
- 编写监听同步脚本,将以下内容按需修改路径后,保存为
s3-sync-script.ps1
# 基础配置项,按实际环境修改 $localFolder = "D:\work\sync-to-s3" $s3Target = "s3://company-backup-bucket/server-files/" # 初始化文件系统监听器 $fileWatcher = New-Object System.IO.FileSystemWatcher $fileWatcher.Path = $localFolder $fileWatcher.IncludeSubdirectories = $true $fileWatcher.EnableRaisingEvents = $true # 定义事件触发后的同步逻辑 $syncAction = { # 延迟2秒等待文件写入完成,避免同步不完整 Start-Sleep -Seconds 2 # 执行AWS CLI增量同步,过滤临时文件、Office锁文件 & aws s3 sync $using:localFolder $using:s3Target --exclude "*.tmp" --exclude "~*" --only-show-errors } # 绑定文件新建、内容修改、重命名三类事件 Register-ObjectEvent $fileWatcher "Created" -Action $syncAction Register-ObjectEvent $fileWatcher "Changed" -Action $syncAction Register-ObjectEvent $fileWatcher "Renamed" -Action $syncAction # 保持脚本常驻运行 while ($true) { Start-Sleep -Seconds 5 }
- 配置Windows任务计划程序,将上述脚本设置为系统开机时自动启动,勾选“不管用户是否登录都要运行”选项,确保服务器重启、无用户登录场景下同步服务不中断
- 同步逻辑说明:
aws s3 sync本身为增量对比同步逻辑,只会传输本地有新增、内容变更的文件,不会重复传输已同步的存量文件,带宽占用可控
配置注意事项
- 脚本文件不要存放到被监听的同步文件夹内部,避免脚本自身的变更触发无意义的循环同步
- 首次部署完成后,手动执行一次
aws s3 sync <本地路径> <S3路径>完成存量文件的初始全量同步,避免后续新文件触发时一次性传输大量内容导致的延迟 - 可按需在AWS CLI命令中增加
--delete参数,实现本地文件夹内删除的文件同步在S3对应路径删除(非必要不开启,避免误删本地文件导致S3端数据被同步删除)
内容的提问来源于stack exchange,提问作者Abhilash S
相关产品推荐
相关产品推荐

