Powershell AWS S3,上传后从本地目录删除文件

Powershell AWS S3,上传后从本地目录删除文件,powershell,amazon-web-services,batch-file,amazon-s3,aws-cli,Powershell,Amazon Web Services,Batch File,Amazon S3,Aws Cli,我在一个驱动器的不同目录中有备份文件。这些目录中的文件可能相当大,高达800GB左右。因此,我有一个批处理文件,其中包含一组脚本,用于将文件上载/同步到S3 见下例: aws s3同步R:\DB\u Backups3\System s3://usa daily/System/--exclude“*”--include“*/*/Diff/*” 上传时间可能会有所不同,但目前为止还不错 我的问题是,如何编辑脚本或创建一个新脚本,在s3存储桶中检查文件是否已上载,并且仅当文件已上载,然后将其从本地驱动

我在一个驱动器的不同目录中有备份文件。这些目录中的文件可能相当大,高达800GB左右。因此,我有一个批处理文件,其中包含一组脚本,用于将文件上载/同步到S3

见下例:

aws s3同步R:\DB\u Backups3\System s3://usa daily/System/--exclude“*”--include“*/*/Diff/*”

上传时间可能会有所不同,但目前为止还不错

我的问题是,如何编辑脚本或创建一个新脚本,在s3存储桶中检查文件是否已上载,并且仅当文件已上载,然后将其从本地驱动器中删除,如果不将其保留在驱动器上

(理想情况下,它会检查每个文件)

我不熟悉aws s3,也不熟悉aws cli命令?如果我说得很清楚,或者你需要更多的细节,请告诉我


任何帮助都将不胜感激。

正如@ketan的回答所示,Amazon
aws
客户端无法进行批量移动

您可以改用WinSCP:

winscp.com/log=S3.log/ini=nul/command^
“打开s3://s3键:S3SECRET@s3.amazonaws.com/" ^
“放置-删除C:\local\path\*/bucket/”^
“退出”
你需要这样做。WinSCP GUI可以像上面一样为您提供

或者,由于WinSCP 5.18,您可以使用和开关,而不需要任何编码:

“打开s3://s3.amazonaws.com/-username=S3KEY-password=S3SECRET”^

(我是WinSCP的作者)

最好是对多个文件使用
mv
--recursive
参数

当使用参数
--recursive
传递时,以下
mv
命令将指定目录下的所有文件递归移动到指定的bucket和前缀,同时使用
--exclude
参数排除某些文件。在本例中,目录myDir包含文件test1.txt和test2.jpg:

aws s3 mv myDir s3://mybucket/ --recursive --exclude "*.jpg"
输出:

move: myDir/test1.txt to s3://mybucket2/test1.txt

希望这能有所帮助。

由于您有大量文件,可以安全地说您没有大量文件吗?(这样循环文件名是可行的)不完全是@Dennis Jaheruddin,在一个目录中我可以有40个文件,在另一个目录中我可能有10个,每个文件的大小从300GB以上变化,但是由于备份日期的关系,文件名每次都会变化。