Secara otomatis menghapus item lama dari ember s3


15

Apakah ada cara mudah untuk menyiapkan bucket di s3 untuk secara otomatis menghapus file yang lebih lama dari x hari?

Jawaban:



19

Sementara itu Amazon telah memperkenalkan siklus hidup S3 (lihat posting blog pengantar Amazon S3 - Object Expiration ), di mana Anda dapat menentukan usia maksimum dalam beberapa hari untuk objek dalam ember - lihat Expiration Obyek untuk detail tentang penggunaannya melalui API S3 atau Manajemen AWS Menghibur.


+1 untuk memberikan pembaruan tentang informasi yang sudah usang ini, terima kasih!
Steffen Opel

3

Anda dapat menggunakan s3cmd untuk menulis skrip untuk dijalankan melalui bucket Anda dan menghapus file berdasarkan prasyarat.

Anda harus menulis beberapa kode (bash, python) di atasnya.

Anda dapat mengunduh s3cmd dari http://s3tools.org/s3cmd


3

skrip shell untuk menghapus ember lama menggunakan
sumber utilitas s3cmd : 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;

Penggunaan: ./deleteOld "bucketname" "30 days" misalnya. s3: // dir1 / dir2 / dir3 / bucketname = "dir1 / dir2 / dir3 /" jangan pernah abaikan yang terakhir "/"

bagaimana jika nama file memiliki ruang dan saya perlu mencetak semua kolom setelah itu, Video 1280x720 (2)13201781136780000000.mp4hanya memberikan Video bukan sisanya.
Ramratan Gupta



1

Saya menemukan solusi hapus batch yang lebih cepat menggunakan AWS cli

#!/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";
}

Referensi untuk penghapusan batch /programming//a/41734090/1589444

Referensi untuk menangani file dengan spasi dengan case pass 100% /programming/36813327/how-to-display-only-files-from-aws-s3-ls-command

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.