Pat*_* B. 9 bash files amazon-s3 amazon aws
该目录/data/files/有数千个文件,例如:
1test
2test
3test
[...]
60000test
60001test
Run Code Online (Sandbox Code Playgroud)
我还将它们发送到 S3 存储桶 (AWS),使用AWS CLI. 但是,有时 S3 存储桶可能处于脱机状态,因此会跳过该文件。
如何检查存在的文件/data/files/是否也在 S3 存储桶中?如果没有将丢失的文件复制到 S3?
我更愿意使用 BASH 来做到这一点。此外,如果我需要为另一个更改 AWS CLI,也可以。
小智 15
如果您aws s3 ls对实际文件名进行操作。如果文件名存在,退出码为0并显示文件名,否则退出码不为0:
aws s3 ls s3://bucket/filname
if [[ $? -ne 0 ]]; then
echo "File does not exist"
fi
Run Code Online (Sandbox Code Playgroud)
我能够rclone按照 @derobert 的建议使用 [1] 来做到这一点。
命令非常简单:
rclone check sourcepath remote:s3bucketname
Run Code Online (Sandbox Code Playgroud)
例子:
假设您要检查 S3 存储桶(存储桶名称:tmp_data_test_bucket)是否包含该目录中的所有文件:/tmp/data/
命令:
rclone check /tmp/data/ remote:tmp_data_test_bucket
Run Code Online (Sandbox Code Playgroud)