Yanıtlar:
Amazon artık içeriği otomatik olarak sona erecek kova politikaları belirleyebiliyor:
http://docs.amazonwebservices.com/AmazonS3/latest/UG/ObjectExpiration.html
Amazon bu arada bir kovadaki nesneler için maksimum gün yaşını belirtebileceğiniz S3 yaşam döngülerini tanıttı (tanıtım blog yazısı Amazon S3 - Object Expiration'a bakın ) - S3 API veya AWS Yönetimi aracılığıyla kullanımıyla ilgili ayrıntılar için Object Expiration bölümüne bakın. Konsol.
Kovadan geçecek bir komut dosyası yazmak ve dosyaları bir ön koşula göre silmek için s3cmd kullanabilirsiniz.
Bunun üzerine bir kod (bash, python) yazmanız gerekir.
S3cmd'yi http://s3tools.org/s3cmd adresinden indirebilirsiniz.
s3cmd yardımcı programını kullanarak eski kovaları silmek için kabuk komut dosyası
:
http://shout.setfive.com/2011/12/05/deleting-files-older-than-specified-time-with-s3cmd-and-bash/
#!/bin/bash
# Usage: ./deleteOld "bucketname" "30 days"
s3cmd ls s3://$1 | while read -r line; do
createDate=`echo $line|awk {'print $1" "$2'}`
createDate=`date -d"$createDate" +%s`
olderThan=`date -d"-$2" +%s`
if [[ $createDate -lt $olderThan ]]
then
fileName=`echo $line|awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//'`
echo $fileName
if [[ $fileName != "" ]]
then
s3cmd del "$fileName"
fi
fi
done;
Video 1280x720 (2)13201781136780000000.mp4
sadece geri kalanını değil Video verir.
Hayır, S3 sadece bir veri mağazası. Eski dosyaları düzenli olarak silmek için dışarıdaki bazı istemcileri kullanmanız gerekir.
AWS CLI kullanarak çok daha hızlı bir çözüm toplu iş buldum
#!/usr/bin/env php
<?php
//remove files which were created 24 hrs ago
$fcmd = 'aws s3 ls s3://<bucket>/<prefix>/ | awk \'{$3=""; print $0}\'';//remove file size and handle file with spaces
exec($fcmd, $output, $return_var);
$seconds_24_hour = 24 * 60 * 60;
$file_deleted_count = 0;
if (!empty($output)) {
$deleted_keys = array();
foreach ($output as $file) {
$file_path = substr($file, 21);
$file_time_stamp = substr($file, 0, 19); //2017-09-19 07:59:41
if (time() - strtotime($file_time_stamp) > $seconds_24_hour) {
$deleted_keys[]["Key"] = "<prefix>/" . $file_path;
$file_deleted_count++;
}
}
if (!empty($deleted_keys)) {
$json_data_delete = array("Objects" => $deleted_keys);
echo $cmd = ("aws s3api delete-objects --bucket <bucket> --delete '" . json_encode($json_data_delete) . "'");
system($cmd);
}
echo "\n$file_deleted_count files deleted from content_media\n";
}
Toplu silme referansı /programming//a/41734090/1589444
% 100 geçiş vakasına sahip dosya içeren dosya işleme referansı /programming/36813327/how-to-display-only-files-from-aws-s3-ls-command