स्वचालित रूप से s3 बाल्टी से पुरानी वस्तुओं को हटा दें


15

क्या x3 से पुरानी फ़ाइलों को स्वचालित रूप से हटाने के लिए s3 में एक बाल्टी सेट करने का एक आसान तरीका है?

जवाबों:



19

अमेज़ॅन ने इस बीच S3 जीवन चक्र पेश किया है (परिचयात्मक ब्लॉग पोस्ट अमेज़ॅन S3 - ऑब्जेक्ट समाप्ति ) देखें, जहां आप एक बाल्टी में वस्तुओं के लिए दिनों में अधिकतम आयु निर्दिष्ट कर सकते हैं - S3 एपीआई या AWS प्रबंधन के माध्यम से इसके उपयोग के विवरण के लिए ऑब्जेक्ट समाप्ति देखें कंसोल।


इस पुरानी जानकारी के बारे में अपडेट प्रदान करने के लिए +1, धन्यवाद!
स्टेफेन ओपल

3

आप अपनी बाल्टी के माध्यम से चलाने और पूर्व शर्त के आधार पर फ़ाइलों को हटाने के लिए स्क्रिप्ट लिखने के लिए s3cmd का उपयोग कर सकते हैं।

आपको इसके ऊपर कुछ कोड (bash, python) लिखना होगा।

आप s3cmd को http://s3tools.org/s3cmd से डाउनलोड कर सकते हैं


3

शेल स्क्रिप्ट s3cmd उपयोगिता
स्रोत का उपयोग करके पुरानी बाल्टियाँ हटाने के लिए : http://shout.setfive.com/2011/12/05/de हटाना-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;

उपयोग: ./deleteOld "bucketname" "30 दिन" उदा। s3: // dir1 / dir2 / dir3 / bucketname = "dir1 / dir2 / dir3 /" कभी अनदेखा न करें "/"

क्या होगा अगर फ़ाइल नाम में जगह है और मुझे उसके बाद सभी कॉलम प्रिंट करने की आवश्यकता है, Video 1280x720 (2)13201781136780000000.mp4बस वीडियो को बाकी नहीं देता है।
रामरतन गुप्ता


1

नहीं, S3 सिर्फ एक डेटास्टोर है। आपको पुरानी फ़ाइलों को समय-समय पर हटाने के लिए कुछ बाहरी ग्राहक का उपयोग करना होगा।


5
यह अब सच नहीं है: docs.amazonwebservices.com/AmazonS3/latest/UG/…
Tabitha

1
आह, इससे चीजें बहुत आसान हो जाती हैं। हालाँकि, अपने बैकअप के लिए, मैं अभी भी अपनी स्क्रिप्ट से विलोपन करना पसंद करता हूं, यह सुनिश्चित करने के लिए कि पुराने बैकअप केवल तब ही शुद्ध किए जाते हैं जब कोई नया सफलतापूर्वक बनाया गया हो।
मार्टिज़न हेमेल्स

1

मुझे AWS क्ली का उपयोग करके बहुत तेजी से समाधान हटाने वाला बैच मिला

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

बैच हटाने के लिए संदर्भ /programming//a/41734090/1589444

100% पास मामले के साथ अंतरिक्ष के साथ फ़ाइल को संभालने के लिए संदर्भ /programming/36813327/how-to-display-only-files-from-aws-s3-ls-command

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.