aws s3 glacier
Amazon S3 Glacier, nadiren erişilen verilerin uzun süreli ve düşük maliyetli bir şekilde saklanması için tasarlanmış bir arşiv deposudur. Bu hizmet, veri erişimi genellikle 3–5 saat sürebilecek şekilde yapılandırılmıştır, bu nedenle kritik olmayan ve arşiv amaçlı veriler için idealdir. S3 Glacier, verilerinizi güvenli bir şekilde depolarken, aynı zamanda yedekleme ve arşivleme görevlerini S3'e kopyalar.
Verilerinizi organize etmek ve yönetmek için “Vault” adı verilen depolama alanları kullanılır. Vault, S3 Glacier’da verilerin saklandığı birim yeridir ve özellikle uzun vadeli saklama gerektiren IK, IT gibi departman verileri için uygundur. Vault oluşturma işlemi AWS Management Console üzerinden kolayca yapılabilir, geri kalan yönetim ve veri işlemleri ise AWS CLI (Komut Satırı Arayüzü) ile gerçekleştirilebilir. Bu sayede, hem veri güvenliği sağlanır hem de maliyetler optimize edilir.
Vault Oluşturma
Create vault > vault name > bildirim seçenekleri > create vault :))
CLI Komutları
Tüm komutları amazon’un kendi sitesinde bulabilirsiniz birebir aynılarını yapacağım ve açıklamalarını yazacağım ne işe yaradıklarına dair
terminal ekranında aws hesabımıza bağlanalım secret key ile bağlanıyor bunun bilgilerini iam servsinden secret key bölümünü indererek veriyoruz
# 1. Vault oluşturma
# AWS Glacier, uzun süreli arşivleme ve yedekleme için düşük maliyetli bir depolama hizmetidir.
# 'ibrahim-test-vault' adında bir vault oluşturuyoruz. Vault, verilerin depolandığı sanal bir kasadır.
# Bu komut ile belirttiğimiz isimde bir vault oluşturuyoruz.
aws glacier create-vault --account-id - --vault-name ibrahim-test-vault
# 2. Büyük bir dosya oluşturma
# 'dd' komutu, düşük seviyeli dosya kopyalama işlemleri için kullanılır.
# Bu komutla, rastgele verilerden oluşan 3 MB boyutunda bir dosya yaratıyoruz.
# 'if=/dev/urandom' girişi, rastgele veri üretir. 'of=largefile' ise bu veriyi 'largefile' isimli dosyaya yazar.
# 'bs=3145728' her seferinde 3 MB boyutunda veri yazılacağını, 'count=1' ise sadece bir kez yazılacağını belirtir.
dd if=/dev/urandom of=largefile bs=3145728 count=1
# 3. Dosyayı parçalama
# AWS Glacier'da büyük dosyalar genellikle daha küçük parçalara bölünerek yüklenir. Bu, verilerin daha yönetilebilir olmasını sağlar.
# 'split' komutu ile 'largefile' isimli dosyayı 1 MB'lik parçalara ayırıyoruz.
# '--bytes=1048576' parametresi, her bir parçanın boyutunu 1 MB (1048576 byte) olarak belirler.
# '--verbose' parametresi, split işlemi sırasında detaylı bilgi verir.
# Oluşan parça dosyaları 'chunkaa', 'chunkab', vb. olarak isimlendirilir.
split --bytes=1048576 --verbose largefile chunk
# MacOS kullanıcıları için alternatif komut:
# Bu komut, benzer şekilde dosyayı 1 MB'lik parçalara ayırır, ancak 'split' komutunun farklı bir sürümü için kullanılabilir.
# '-b 1048576' parametresi de 1 MB'lik parçalar oluşturur.
# '-a 2' parametresi, dosya adlarının sonuna eklenen harflerin uzunluğunu 2 karakterle sınırlar.
# Örneğin, 'chunkaa', 'chunkab', 'chunkac' gibi dosya adları oluşur.
# split -b 1048576 -a 2 largefile chunk
# 4. Multipart upload başlatma
# AWS Glacier'da büyük dosyalar parça parça yüklenir, bu işlemin adı 'Multipart Upload' olarak adlandırılır.
# 'aws glacier initiate-multipart-upload' komutu, multipart upload işlemini başlatır ve bir upload ID döndürür.
# Bu komutla, her bir parça 1 MB olarak ayarlanmıştır ('--part-size 1048576').
# 'egitimvault' isimli vault'a yükleme işlemi başlatılır ve işlem tanımı olarak "multipart upload test" verilir.
# Komutun sonucu olarak dönen JSON, yükleme işleminin detaylarını içerir (location, uploadId gibi).
UPLOAD_INFO=$(aws glacier initiate-multipart-upload --account-id - --archive-description "multipart upload test" --part-size 1048576 --vault-name ibrahim-test-vault)
# 5. UploadID'yi bir değişkene atama
# Multipart upload işlemi sırasında, yüklemeyi tanımlayan ve yönetmenizi sağlayan benzersiz bir 'uploadId' verilir.
# JSON çıktısından 'uploadId' bilgisini alıp, bu değeri 'UPLOADID' değişkenine atıyoruz.
# Bu ID, dosyaların hangi multipart upload işlemiyle ilişkili olduğunu belirtmek için kullanılır.
UPLOADID=$(echo $UPLOAD_INFO | jq -r '.uploadId')
# 6. Parçaları yükleme
# Parçalar, AWS Glacier'a yüklenirken, her parçanın hangi aralıkta olduğu belirtilmelidir.
# 'aws glacier upload-multipart-part' komutuyla her bir dosya parçası ayrı ayrı yüklenir.
# 'chunkaa' isimli ilk parça 'bytes 0-1048575' aralığında yüklenir. Diğer parçalar benzer şekilde farklı bayt aralıklarında yüklenir.
aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkaa --range 'bytes 0-1048575/*' --account-id - --vault-name ibrahim-test-vault
aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkab --range 'bytes 1048576-2097151/*' --account-id - --vault-name ibrahim-test-vault
aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkac --range 'bytes 2097152-3145727/*' --account-id - --vault-name ibrahim-test-vault
# 7. Hash değerlerini çıkarma
# Hash değerleri, dosyaların bütünlüğünü kontrol etmek için kullanılır.
# 'openssl dgst -sha256' komutu ile her bir dosya parçasının SHA256 hash değerini hesaplıyoruz.
# '-binary' parametresi, hash çıktısının ikili formatta olmasını sağlar ve bu değerler sırasıyla 'hash1', 'hash2' ve 'hash3' dosyalarına yazılır.
openssl dgst -sha256 -binary chunkaa > hash1
openssl dgst -sha256 -binary chunkab > hash2
openssl dgst -sha256 -binary chunkac > hash3
# 8. Hash değerlerini birleştirme
# Parçaların hash değerleri birleştirilerek nihai hash değeri (ağaç hash'i) hesaplanır.
# İlk iki hash değeri birleştirilir ve yeni bir hash dosyası ('hash12') oluşturulur.
# Bu yeni dosya tekrar hashlenir ve sonuç 'hash12hash' dosyasına yazılır.
# Sonrasında bu hash, üçüncü hash değeri ile birleştirilir ve nihai hash ('hash123') elde edilir.
# Nihai hash değeri, 'openssl dgst -sha256' komutuyla hesaplanır ve bu değeri 'TREEHASH' değişkenine atıyoruz.
cat hash1 hash2 > hash12
openssl dgst -sha256 -binary hash12 > hash12hash
cat hash12hash hash3 > hash123
TREEHASH=$(openssl dgst -sha256 hash123 | awk '{print $2}')
# 9. Multipart upload'u tamamlama
# Multipart upload işlemi tamamlanırken, AWS Glacier'a dosyanın toplam boyutu ve hesaplanan nihai hash değeri verilir.
# 'aws glacier complete-multipart-upload' komutu, bu işlemi tamamlamak için kullanılır.
# 'checksum' parametresi, dosyanın doğruluğunu kontrol etmek için kullanılır.
# 'archive-size' parametresi, dosyanın toplam boyutunu bayt cinsinden belirtir.
# Son olarak, daha önce tanımladığımız 'UPLOADID' kullanılarak yükleme tamamlanır ve dosya Glacier'a başarılı bir şekilde yüklenmiş olur.
aws glacier complete-multipart-upload --checksum $TREEHASH --archive-size 3145728 --upload-id $UPLOADID --account-id - --vault-name ibrahim-test-vault