এস 3 বালতি থেকে পুরানো আইটেমগুলি স্বয়ংক্রিয়ভাবে মুছুন


15

X দিনের চেয়ে পুরানো ফাইলগুলি স্বয়ংক্রিয়ভাবে মোছার জন্য এস 3-তে বালতি সেট আপ করার কোনও সহজ উপায় আছে কি?

উত্তর:



19

ইতিমধ্যে অ্যামাজন এস 3 লাইফাইসাইকেল চালু করেছে (সূচনা ব্লগ পোস্ট অ্যামাজন এস 3 - অবজেক্টের মেয়াদোত্তীর্ণতা দেখুন ), যেখানে আপনি বালতিতে বস্তুর জন্য সর্বাধিক বয়স নির্দিষ্ট করতে পারেন - এস 3 এপিআই বা এডাব্লুএস পরিচালনার মাধ্যমে তার ব্যবহারের বিশদগুলির জন্য অবজেক্টের সমাপ্তি দেখুন কনসোল।


এই পুরানো তথ্য সম্পর্কিত আপডেট দেওয়ার জন্য +1, ধন্যবাদ!
স্টিফেন ওপেল

3

আপনি নিজের বালতি দিয়ে চালানোর জন্য স্ক্রিপ্ট লিখতে s3cmd ব্যবহার করতে পারেন এবং পূর্ব শর্তের ভিত্তিতে ফাইলগুলি মুছতে পারেন।

এর উপরে আপনাকে কিছু কোড (বাশ, অজগর) লিখতে হবে।

আপনি http://s3tools.org/s3cmd থেকে s3cmd ডাউনলোড করতে পারেন


3

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;

ব্যবহার: ./deleteOld "বালতি নাম" "30 দিন" উদা। s3: // dir1 / dir2 / dir3 / bucketname = "dir1 / dir2 / dir3 /" কখনই শেষ উপেক্ষা করবেন না "/"

যদি ফাইলের নামের স্থান থাকে এবং এর পরে আমার সমস্ত কলাম মুদ্রণ করা দরকার Video 1280x720 (2)13201781136780000000.mp4তবে কেবল ভিডিওটি দেয় না।
রামরতন গুপ্ত 20'17

আমি থেকে সমাধান পেয়েছি stackoverflow.com/a/9745022/1589444
Ramratan গুপ্ত

1

না, এস 3 হ'ল একটি ডেটাস্টোর। পুরানো ফাইলগুলি পর্যায়ক্রমে মুছতে আপনার কিছু বাইরের ক্লায়েন্ট ব্যবহার করতে হবে।


5
এটি আর সত্য নয়: docs.amazonwebservices.com/AmamazS3/latest/UG/…
তাবিথা

1
আহ, যা বিষয়গুলিকে অনেক সহজ করে তোলে। যদিও, আমার ব্যাকআপগুলির জন্য আমি এখনও আমার স্ক্রিপ্ট থেকে মুছে ফেলা পছন্দ করি, পুরানো ব্যাকআপগুলি কেবল তখনই সাফ হয়ে যায় যখন কোনও নতুন সফলভাবে তৈরি করা হয়।
মার্টিজন হিমেলস

1

আমি খুব দ্রুত সমাধান পেয়েছি ডাব্লুএস ক্লিপ ব্যবহার করে ব্যাচ মুছুন

#!/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/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.