Ana içeriğe atla

AWS S3 cp: AWS S3 Dosya Aktarımlarına Eksiksiz Rehber

aws s3 cp komutunu kullanarak S3'e ve S3'ten dosya kopyalamayı öğrenin. Temel aktarımlar ve yinelemeli kopyalamadan otomasyon betiklerine ve yaygın hataların giderilmesine kadar her şeyi; pratik, gerçek dünya örnekleriyle keşfedin.
Güncel 3 Eki 2026  · 15 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

AWS depolamaya dosyaları elle kopyalamak zahmetli, hataya açık ve verimsiz olabilir - özellikle büyük veri hacimleriyle uğraşırken. Bunu istemezsiniz.

AWS Komut Satırı Arayüzü (CLI), bu süreci basitleştiren aws s3 cp adlı kullanışlı bir araç sunar. Bu komut, tüm işletim sistemlerinde çalışan basit ve betiklenebilir komutlarla Amazon S3 kovalarına dosya kopyalamanıza ve kovalardan dosya çekmenize olanak tanır. AWS CLI kullanmak yalnızca zaman kazandırmaz, aynı zamanda rutin dosya aktarım görevlerini otomatikleştirmenizi de sağlar.

aws s3 cp komutu, karmaşık dosya aktarım senaryolarını yönetmek için birçok seçenek sunar. Tekil dosyaları kopyalayabilir, tüm dizinleri yinelemeli (recursive) olarak aktarabilir, kalıplara göre dosyaları filtreleyebilir ve maliyet optimizasyonu için farklı depolama sınıfları belirtebilirsiniz.

Bu eğitimde, aws s3 cp komutunu etkili şekilde kullanmak için bilmeniz gereken her şeyi; temel komutlardan gelişmiş tekniklere ve otomasyon stratejilerine kadar adım adım göstereceğim.

> AWS'ye yeni misiniz ve bulut depolama ile S3 hakkında emin değil misiniz? Ayrıntılı S3 ve EFS rehberimiz başlangıç için mükemmel bir nokta. Özellikle S3 ile ilgileniyorsanız, derinlemesine S3 rehberimize göz atın.

AWS S3 cp nedir?

aws s3 cp komutu, AWS Komut Satırı Arayüzü içinde yer alan ve yerel sisteminiz ile Amazon S3 depolaması arasında dosya kopyalamanıza olanak tanıyan bir yardımcı programdır. 

Özünde, standart Linux cp komutuna benzer tanıdık bir komut satırı deneyimi sunmak üzere tasarlanmıştır; ancak S3 kovalarıyla etkileşim kurmaya uyarlanmıştır.

Temel olarak aws s3 cp, yerel makineniz ile AWS'nin bulut depolama altyapısı arasında köprü görevi görür. Bir aws s3 cp komutu çalıştırdığınızda, AWS CLI büyük aktarımlar için kimlik doğrulamayı ve dosya parçalamayı yönetir ve kopyalama işlemi sırasında veri bütünlüğünü sağlar. Bu yardımcı program, tekil dosyaları, joker karakterlerle birden çok dosyayı ve yinelemeli işlemlerle tüm dizin yapılarını kopyalamayı destekler.

aws s3 cp birçok şeye muktedirdir, sadece birkaçını listeleyeceğim:

  • Çift yönlü aktarımlar (S3'e yükleme veya S3'ten indirme).
  • Tüm dizin yapılarını yinelemeli olarak kopyalama.
  • Çeşitli S3 depolama sınıfları desteği (Standard, Intelligent-Tiering, Glacier, vb.).
  • Dahil et/dışla kalıplarıyla dosya filtreleme.
  • Aktarımlar sırasında dosya meta verilerinin korunması.
  • Güvenlik için AWS Kimlik ve Erişim Yönetimi (IAM) ile entegrasyon.

Ancak aws s3 cp gücünü esnekliğinden ve AWS ekosistemiyle entegrasyonundan alır. Depolama sınıfı, şifreleme, meta veriler, erişim denetimi ve daha fazlası gibi unsurları kontrol etmek için farklı parametreler belirtebilirsiniz. Bu da komutu, basit tek seferlik dosya aktarımlarından karmaşık, otomatikleştirilmiş yedekleme çözümlerine kadar her şeye uygun hale getirir.

Komut, AWS Yönetim Konsolu'nu kullanmaktan farklıdır; konsolda elle gezinme ve tıklama gerekir. aws s3 cp komutunu doğrudan terminalinizden çalıştırabilir veya betiklere ve otomatik iş akışlarına entegre edebilirsiniz. S3'e bu programatik erişim, özellikle DevOps mühendisleri ve veri bilimcileri için kritiktir.

Özetle, aws s3 cp performansı korurken büyük aktarımları yönetebilen güvenilir ve betiklenebilir bir çözüm sunar. Yarıda kesilen yüklemeleri ve indirmeleri devam ettirebilir; bu da dengesiz ağ bağlantılarıyla çalışırken veya aşırı büyük dosyaları aktarırken özellikle kullanışlıdır.

Sırada sıkıcı kısım var - AWS CLI'ı sisteminizde kurmak.

AWS CLI ve AWS S3 Kurulumu

aws s3 cp komutuna geçmeden önce, sisteminizde AWS CLI'ın kurulu ve doğru yapılandırılmış olması gerekir. Daha önce AWS ile hiç çalışmadıysanız endişelenmeyin - kurulum kolaydır ve 10 dakikadan az sürer.

Bunu üç basit aşamaya böleceğim: AWS CLI aracını kurmak, kimlik bilgilerinizi yapılandırmak ve depolama için ilk S3 kovasını oluşturmak.

AWS CLI'ın kurulumu

Kurulum süreci, kullandığınız işletim sistemine göre biraz değişir.

Windows sistemleri için:

Linux sistemleri için:

Terminal üzerinden aşağıdaki üç komutu çalıştırın:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

macOS sistemleri için:

Homebrew kurulu olduğunu varsayarak, Terminal'den şu tek satırı çalıştırın:

brew install awscli

Homebrew yoksa, bunun yerine şu iki komutu kullanın:

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /

Başarılı bir kurulum doğrulaması için terminalinizde aws --version komutunu çalıştırın. Şuna benzer bir çıktı görmelisiniz:

Görsel 1 - AWS CLI sürümü

Görsel 1 - AWS CLI sürümü

AWS CLI'ın yapılandırılması

CLI kurulduktan sonra, kimlik doğrulama için AWS kimlik bilgilerinizi ayarlama zamanı.

Önce AWS hesabınıza erişin ve IAM servis panosuna gidin. Programatik erişime sahip yeni bir kullanıcı oluşturun ve uygun S3 izin politikasını iliştirin:

Görsel 2 - AWS IAM kullanıcısı

Görsel 2 - AWS IAM kullanıcısı

Ardından "Güvenlik kimlik bilgileri" sekmesine gidin ve yeni bir erişim anahtarı çifti oluşturun. Erişim anahtarı kimliğini (Access key ID) ve Gizli erişim anahtarını (Secret access key) güvenli bir yerde sakladığınızdan emin olun – Amazon bu ekrandan sonra gizli anahtarı tekrar göstermeyecektir:

Görsel 3 - AWS IAM kullanıcı kimlik bilgileri

Görsel 3 - AWS IAM kullanıcı kimlik bilgileri

Şimdi terminalinizi açın ve aws configure komutunu çalıştırın. Dört bilgi istenecektir: Erişim anahtarı kimliğiniz, Gizli erişim anahtarınız, varsayılan bölge (ben eu-central-1 kullanıyorum) ve tercih edilen çıktı formatı (genellikle json):

Görsel 4 - AWS CLI yapılandırması

Görsel 4 - AWS CLI yapılandırması

Her şeyin düzgün bağlandığından emin olmak için kimliğinizi aşağıdaki komutla doğrulayın:

aws sts get-caller-identity

Doğru yapılandırıldıysa, hesap ayrıntılarınızı göreceksiniz:

Görsel 5 - AWS CLI bağlantı testi komutu

Görsel 5 - AWS CLI bağlantı testi komutu

Bir S3 kovası oluşturma

Son olarak, kopyalayacağınız dosyaları depolamak için bir S3 kovası oluşturmanız gerekir.

AWS Konsolunuzda S3 servis bölümüne gidin ve "Create bucket"'a tıklayın. Kova adlarının AWS genelinde benzersiz olması gerektiğini unutmayın. Ayırt edici bir ad seçin, şimdilik varsayılan ayarları bırakın ve "Create"'e tıklayın:

Görsel 6 - AWS kova oluşturma

Görsel 6 - AWS kova oluşturma

Oluşturulduktan sonra yeni kovanız konsolda görünecektir. Varlığını komut satırından da doğrulayabilirsiniz:

aws s3 ls

Görsel 7 - Tüm mevcut S3 kovaları

Görsel 7 - Tüm mevcut S3 kovaları

Tüm S3 kovaları varsayılan olarak özel (private) yapılandırılır, bunu aklınızda bulundurun. Bu kovayı herkese açık dosyalar için kullanmayı düşünüyorsanız, kova ilkelerini buna göre değiştirmeniz gerekir.

aws s3 cp komutunu kullanarak dosya aktarmaya başlamak için artık tamamen hazırsınız. Hadi önce temellerle başlayalım.

Temel AWS S3 cp Komut Sözdizimi

Artık her şeyi yapılandırdığınıza göre, aws s3 cp komutunun temel kullanımına dalalım. AWS'de olduğu gibi, komut farklı dosya aktarım senaryolarını yönetebilse de güzellik sadeliktedir.

En temel haliyle, aws s3 cp komutu şu sözdizimini izler:

aws s3 cp <source> <destination> [options]

<source> ve <destination> yerel dosya yolları veya S3 URI'leri ( s3:// ile başlayan) olabilir. En yaygın üç kullanım durumunu inceleyelim.

Yerelden S3'e dosya kopyalama

Yerel sisteminizden bir S3 kovasına dosya kopyalamak için kaynak yerel bir yol, hedef ise bir S3 URI'si olacaktır:

aws s3 cp /Users/dradecic/Desktop/test_file.txt s3://testbucket-aws-cp-dradecic/test_file.txt

Bu komut, belirtilen dizindeki test_file.txt dosyasını ilgili S3 kovasına yükler. İşlem başarılı olursa, konsolda buna benzer bir çıktı görürsünüz:

Görsel 8 - Yerel dosya kopyalandıktan sonra konsol çıktısı

Görsel 8 - Yerel dosya kopyalandıktan sonra konsol çıktısı

Ve AWS yönetim konsolunda, dosyanızın yüklendiğini görürsünüz:

Görsel 9 - S3 kovası içeriği

Görsel 9 - S3 kovası içeriği

Benzer şekilde, yerel bir klasörü S3 kovanıza kopyalamak ve örneğin başka bir iç içe klasöre koymak isterseniz, buna benzer bir komut çalıştırın:

aws s3 cp /Users/dradecic/Desktop/test_folder s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder/ --recursive

Görsel 10 - Bir klasör yüklendikten sonra S3 kovası içeriği

Görsel 10 - Bir klasör yüklendikten sonra S3 kovası içeriği

--recursive bayrağı, klasör içindeki tüm dosya ve alt klasörlerin kopyalanmasını sağlar.

Şunu unutmayın - S3 aslında klasörlere sahip değildir – yol yapısı nesnenin anahtarının bir parçasıdır; ancak kavramsal olarak klasörler gibi çalışır.

S3'ten yerele dosya kopyalama

S3'ten yerel sisteminize dosya kopyalamak için sırayı tersine çevirin – kaynak S3 URI'si olur, hedef ise yerel yolunuz:

aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt /Users/dradecic/Documents/s3-data/downloaded_test_file.txt

Bu komut, S3 kovanızdan test_file.txt dosyasını indirir ve belirtilen dizinde downloaded_test_file.txt adıyla kaydeder. Yerel sisteminizde hemen göreceksiniz:

Görsel 11 - S3'ten tek bir dosya indirme

Görsel 11 - S3'ten tek bir dosya indirme

Hedef dosya adını belirtmezseniz, komut özgün dosya adını kullanır:

aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt .

Görsel 12 - İndirilen dosyanın içeriği

Görsel 12 - İndirilen dosyanın içeriği

Nokta (.) mevcut dizininizi temsil eder, dolayısıyla bu komut test_file.txt dosyasını mevcut konumunuza indirir.

Ve son olarak, tüm bir dizini indirmek için buna benzer bir komut kullanabilirsiniz:

aws s3 cp s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder /Users/dradecic/Documents/test_folder --recursive

Görsel 13 - İndirilen klasörün içeriği

Görsel 13 - İndirilen klasörün içeriği

--recursive bayrağının, birden çok dosyayla çalışırken zorunlu olduğunu unutmayın – olmadan, kaynak bir dizinse komut başarısız olur.

Bu temel komutlarla, ihtiyaç duyacağınız dosya aktarım görevlerinin çoğunu halledebilirsiniz. Ancak bir sonraki bölümde, kopyalama süreci üzerinde daha iyi kontrol sağlayan gelişmiş seçenekleri öğreneceksiniz.

Gelişmiş AWS S3 cp Seçenekleri ve Özellikleri

AWS, dosya kopyalama işlemlerini en üst düzeye çıkarmanıza olanak tanıyan birkaç gelişmiş seçenek sunar. Bu bölümde, günlük işlerinizde yardımcı olacak en yararlı bayrak ve parametrelerden bazılarını göstereceğim.

--exclude ve --include bayraklarını kullanma

Bazen yalnızca belirli kalıplarla eşleşen dosyaları kopyalamak istersiniz. --exclude ve --include bayrakları, kalıplara göre dosyaları filtrelemenize olanak tanır ve neyin kopyalanacağı üzerinde hassas kontrol sağlar.

Zemin hazırlamak için, üzerinde çalıştığım dizin yapısı şu şekilde:

Görsel 14 - Dizin yapısı

Görsel 14 - Dizin yapısı

Diyelim ki dizindeki .log dosyaları hariç tüm dosyaları kopyalamak istiyorsunuz:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*.log"

Bu komut, advanced_folder dizinindeki tüm dosyaları .log uzantılı olanlar hariç S3'e kopyalar:

Görsel 15 - Klasör kopyalama sonuçları

Görsel 15 - Klasör kopyalama sonuçları

Birden çok kalıbı da birleştirebilirsiniz. Diyelim ki projedeki yalnızca HTML ve CSS dosyalarını kopyalamak istiyorsunuz:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*" --include "*.html" --include "*.css"

Bu komut önce her şeyi dışlar (--exclude "*"), ardından yalnızca .html ve .css uzantılı dosyaları dahil eder. Sonuç şu şekildedir:

Görsel 16 - Klasör kopyalama sonuçları (2)

Görsel 16 - Klasör kopyalama sonuçları (2)

Bayrakların sırasının önemli olduğunu unutmayın - AWS CLI bu bayrakları sırasıyla işler, bu nedenle --include'ı --exclude'dan önce koyarsanız farklı sonuçlar alırsınız:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --include "*.html" --include "*.css" --exclude "*"

Bu kez kovaya hiçbir şey kopyalanmadı:

Görsel 17 - Klasör kopyalama sonuçları (3)

Görsel 17 - Klasör kopyalama sonuçları (3)

S3 depolama sınıfını belirtme

Amazon S3, her biri farklı maliyet ve erişim özelliklerine sahip farklı depolama sınıfları sunar. Varsayılan olarak, aws s3 cp dosyaları Standard depolama sınıfına yükler; ancak --storage-class bayrağıyla farklı bir sınıf belirtebilirsiniz:

aws s3 cp /Users/dradecic/Desktop/large-archive.zip s3://testbucket-aws-cp-dradecic/archives/ --storage-class GLACIER

Bu komut, large-archive.zip dosyasını Glacier depolama sınıfına yükler; bu sınıf önemli ölçüde daha ucuzdur ancak erişim maliyetleri daha yüksek ve erişim süreleri daha uzundur:

Görsel 18 - Farklı depolama sınıflarıyla S3'e dosya kopyalama

Görsel 18 - Farklı depolama sınıflarıyla S3'e dosya kopyalama

Mevcut depolama sınıfları şunları içerir:

  • STANDARD (varsayılan): Yüksek dayanıklılık ve erişilebilirliğe sahip genel amaçlı depolama.
  • REDUCED_REDUNDANCY (artık önerilmiyor): Daha düşük dayanıklılık, maliyet tasarruflu seçenek; artık kullanımdan kaldırılmıştır.
  • STANDARD_IA (Seyrek Erişim): Daha seyrek erişilen veriler için daha düşük maliyetli depolama.
  • ONEZONE_IA (Tek Bölge Seyrek Erişim): Tek bir AWS Kullanılabilirlik Bölgesinde daha düşük maliyetli, seyrek erişim depolama.
  • INTELLIGENT_TIERING: Erişim kalıplarına göre verileri otomatik olarak katmanlar arasında taşır.
  • GLACIER: Uzun süreli saklama için düşük maliyetli arşiv depolama; erişim dakikalar ila saatler içinde.
  • DEEP_ARCHIVE: En ucuz arşiv depolama; erişim saatler içinde; uzun dönem yedekleme için ideal.

Hemen erişmeniz gerekmeyen dosyaları yedekliyorsanız, GLACIER veya DEEP_ARCHIVE kullanmak depolama maliyetlerinde önemli tasarruf sağlayabilir.

--exact-timestamps ile dosyaları senkronize etme

S3'te zaten var olan dosyaları güncellerken, yalnızca değişen dosyaları kopyalamak isteyebilirsiniz. --exact-timestamps bayrağı, kaynak ve hedef arasındaki zaman damgalarını karşılaştırarak buna yardımcı olur.

Örnek:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exact-timestamps

Bu bayrakla, komut yalnızca zaman damgaları S3'teki dosyalardan farklıysa dosyaları kopyalar. Böylece büyük bir dosya kümesini düzenli olarak güncellerken aktarım süresini ve bant genişliği kullanımını azaltabilirsiniz.

Bu neden işe yarar? Uygulama dosyalarınızı değişmeyen varlıkları gereksiz yere aktarmadan güncellemek istediğiniz dağıtım senaryolarını hayal edin.

--exact-timestamps bir tür senkronizasyon yapmak için yararlı olsa da, daha gelişmiş bir çözüme ihtiyacınız varsa aws s3 cp yerine aws s3 sync kullanmayı düşünün. sync komutu dizinleri senkron tutmak için özel olarak tasarlanmıştır ve bu amaçla ek yeteneklere sahiptir. AWS S3 Sync eğitiminde sync komutu hakkında her şeyi yazdım.

Bu gelişmiş seçeneklerle artık S3 dosya işlemleriniz üzerinde çok daha ince ayar kontrolüne sahipsiniz. Belirli dosyaları hedefleyebilir, depolama maliyetlerini optimize edebilir ve dosyalarınızı verimli şekilde güncelleyebilirsiniz. Bir sonraki bölümde, bu işlemleri betikler ve zamanlanmış görevlerle nasıl otomatikleştireceğinizi öğreneceksiniz.

AWS S3 cp ile Dosya Aktarımlarını Otomatikleştirme

Şimdiye kadar, komut satırını kullanarak S3'e ve S3'ten dosyaları elle kopyalamayı öğrendiniz. aws s3 cp kullanmanın en büyük avantajlarından biri, bu aktarımları kolayca otomatikleştirebilmenizdir; bu da size ciddi zaman kazandırır.

aws s3 cp komutunu, müdahalesiz dosya aktarımları için betiklere ve zamanlanmış işlere nasıl entegre edebileceğinizi inceleyelim.

AWS S3 cp'yi betiklerde kullanma

İşte bir dizini S3'e yedekleyen, yedeğe zaman damgası ekleyen ve hata yönetimi ile dosyaya günlüğe kaydetmeyi uygulayan basit bir bash betiği örneği:

#!/bin/bash

# Set variables
SOURCE_DIR="/Users/dradecic/Desktop/advanced_folder"
BUCKET="s3://testbucket-aws-cp-dradecic/backups"
DATE=$(date +%Y-%m-%d-%H-%M)
BACKUP_NAME="backup-$DATE"
LOG_FILE="/Users/dradecic/logs/s3-backup-$DATE.log"

# Ensure the logs directory exists
mkdir -p "$(dirname "$LOG_FILE")"

# Create the backup and log the output
echo "Starting backup of $SOURCE_DIR to $BUCKET/$BACKUP_NAME" | tee -a $LOG_FILE
aws s3 cp $SOURCE_DIR $BUCKET/$BACKUP_NAME --recursive 2>&1 | tee -a $LOG_FILE

# Check if the backup was successful
if [ $? -eq 0 ]; then
    echo "Backup completed successfully on $DATE" | tee -a $LOG_FILE
else
    echo "Backup failed on $DATE" | tee -a $LOG_FILE
fi

Bunu backup.sh olarak kaydedin, chmod +x backup.sh ile çalıştırılabilir yapın ve yeniden kullanılabilir bir yedekleme betiğiniz olsun!

Ardından şu komutla çalıştırabilirsiniz:

./backup.sh

Görsel 19 - Terminalde betiğin çalışması

Görsel 19 - Terminalde betiğin çalışması

Hemen ardından, kovadaki backups klasörü dolacaktır:

Görsel 20 - S3 kovasında saklanan yedek

Görsel 20 - S3 kovasında saklanan yedek

Bunu bir adım ileri götürelim ve betiği bir zamanlamayla çalıştıralım.

Cron işleriyle dosya aktarımlarını zamanlama

Artık bir betiğiniz olduğuna göre, bir sonraki adım onu belirli zamanlarda otomatik olarak çalışacak şekilde planlamaktır.

Linux veya macOS kullanıyorsanız, yedeklerinizi zamanlamak için cron kullanabilirsiniz. İşte yedekleme betiğinizi her gece yarısı çalıştıracak bir cron işinin nasıl kurulacağı:

1. Crontab'i düzenlemek için açın:

crontab -e

2. Betiğinizi her gece yarısı çalıştırmak için aşağıdaki satırı ekleyin:

0 0 * * * /path/to/your/backup.sh

Görsel 21 - Betiği günlük çalıştırmak için cron işi

Cron işlerinin formatı minute hour day-of-month month day-of-week command şeklindedir. İşte birkaç örnek daha:

  • Her saat çalıştır: 0 * * * * /path/to/your/backup.sh
  • Her Pazartesi 09:00'da çalıştır: 0 9 * * 1 /path/to/your/backup.sh
  • Her ayın 1'inde çalıştır: 0 0 1 * * /path/to/your/backup.sh

Ve hepsi bu kadar! backup.sh betiği artık belirlenen aralıkta çalışacak.

S3 dosya aktarımlarınızı otomatikleştirmek doğru yaklaşımdır. Özellikle şu senaryolar için kullanışlıdır:

  • Önemli verilerin günlük yedekleri
  • Bir web sitesine ürün görsellerini senkronize etme
  • Günlük dosyalarını uzun süreli depolamaya taşıma
  • Güncellenmiş web sitesi dosyalarını yayımlama

Bu tür otomasyon teknikleri, elle müdahale olmadan dosya aktarımlarını yöneten güvenilir bir sistem kurmanıza yardımcı olur. Bir kez yazıp sonra unutabilirsiniz.

Bir sonraki bölümde, aws s3 cp işlemlerinizi daha güvenli ve verimli hale getirmek için en iyi uygulamalardan bahsedeceğim.

AWS S3 cp Kullanımı için En İyi Uygulamalar

aws s3 cp komutu kullanımı kolay olsa da, işler ters gidebilir.

En iyi uygulamaları takip ederseniz, yaygın tuzaklardan kaçınır, performansı optimize eder ve verilerinizi güvende tutarsınız. Dosya aktarım işlemlerinizi daha verimli hale getirmek için bu uygulamaları inceleyelim.

Verimli dosya yönetimi

S3 ile çalışırken, dosyalarınızı mantıksal olarak düzenlemek ileride size zaman ve zahmet kazandıracaktır.

Öncelikle, tutarlı bir kova ve önek (prefix) adlandırma kuralı belirleyin. Örneğin verilerinizi ortama, uygulamaya veya tarihe göre ayırabilirsiniz:

s3://company-backups/production/database/2023-03-13/
s3://company-backups/staging/uploads/2023-03/

Bu tür bir düzenleme şunları kolaylaştırır:

  • İhtiyaç duyduğunuzda belirli dosyaları bulmak.
  • Kova ilkelerini ve izinlerini doğru düzeyde uygulamak.
  • Arşivleme veya eski verileri silme için yaşam döngüsü kuralları ayarlamak.

Bir başka ipucu: Büyük dosya kümelerini aktarırken, yüklemeden önce küçük dosyaları (zip veya tar kullanarak) bir araya getirmeyi düşünün. Bu, S3'e yapılan API çağrılarının sayısını azaltır; maliyetleri düşürür ve aktarımları hızlandırabilir.

# Instead of copying thousands of small log files
# tar them first, then upload
tar -czf example-logs-2025-03.tar.gz /var/log/application/
aws s3 cp example-logs-2025-03.tar.gz s3://testbucket-aws-cp-dradecic/logs/2025/03/

Büyük veri aktarımlarını yönetme

Büyük dosyaları veya aynı anda birçok dosyayı kopyalarken, süreci daha güvenilir ve verimli kılmak için birkaç teknik vardır.

--quiet bayrağını kullanarak betiklerde çıktıyı azaltabilirsiniz:

aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/backups/ --recursive --quiet

Bu, her dosya için ilerleme bilgisini bastırır; günlükleri daha yönetilebilir kılar. Ayrıca performansı da az da olsa iyileştirir.

Çok büyük dosyalar için, --multipart-threshold bayrağıyla çok parçalı yüklemeleri kullanmayı düşünün:

aws s3 cp huge-file.iso s3://testbucket-aws-cp-dradecic/backups/ --multipart-threshold 100MB

Yukarıdaki ayar, AWS CLI'a 100MB'den büyük dosyaları yükleme için birden çok parçaya bölmesini söyler. Bunun birkaç faydası vardır:

  • Bağlantı koparsa yalnızca etkilenen parça yeniden denenir.
  • Parçalar paralel yüklenebilir; bu da aktarım hızını artırabilir.
  • Büyük yüklemeleri duraklatıp sürdürebilirsiniz.

Bölgeler arası veri aktarırken daha hızlı yüklemeler için S3 Transfer Acceleration kullanmayı düşünün:

aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/backups/ --endpoint-url https://s3-accelerate.amazonaws.com

Bu, aktarımınızı Amazon'un uç (edge) ağı üzerinden yönlendirir ve bölgeler arası aktarımları önemli ölçüde hızlandırabilir.

Güvenliği sağlama

Buluttaki verilerinizle çalışırken güvenlik her zaman en öncelikli konu olmalıdır.

Öncelikle IAM izinlerinizin asgari ayrıcalık ilkesini takip ettiğinden emin olun. Her görev için yalnızca gerekli izinleri verin.

Kullanıcıya atayabileceğiniz örnek bir ilke:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::testbucket-aws-cp-dradecic/backups/*"
        }
    ]
}

Bu ilke, yalnızca "my-bucket" içindeki "backups" önekine dosya kopyalamaya ve oradan dosya çekmeye izin verir.

Güvenliği artırmanın ek bir yolu da hassas veriler için şifrelemeyi etkinleştirmektir. Yüklerken sunucu tarafı şifrelemeyi belirtebilirsiniz:

aws s3 cp confidential.docx s3://testbucket-aws-cp-dradecic/ --sse AES256

Veya daha fazla güvenlik için AWS Key Management Service (KMS) kullanın:

aws s3 cp secret-data.json s3://testbucket-aws-cp-dradecic/ --sse aws:kms --sse-kms-key-id myKMSKeyId

Bununla birlikte, yüksek derecede hassas işlemler için S3 için VPC uç noktalarını kullanmayı düşünün. Bu, trafiğinizi AWS ağı içinde tutar ve tamamen genel internetten kaçınır.

Bir sonraki bölümde, bu komutla çalışırken karşılaşabileceğiniz yaygın sorunları nasıl çözeceğinizi öğreneceksiniz.

AWS S3 cp Hatalarını Giderme

Bir şey kesin - aws s3 cp ile çalışırken ara sıra sorunlarla karşılaşacaksınız. Ancak yaygın hataları ve çözümlerini anlarsanız, işler planlandığı gibi gitmediğinde zaman ve sinir tasarrufu sağlarsınız.

Bu bölümde, en sık rastlanan sorunları ve nasıl düzelteceğinizi göstereceğim.

Yaygın hatalar ve çözümleri

Hata: "Access Denied"

Muhtemelen en sık karşılaşacağınız hata budur:

upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

Genellikle üç şeyden birini ifade eder:

  • IAM kullanıcınızın işlemi gerçekleştirmek için yeterli izni yok.
  • Kova ilkesi erişimi kısıtlıyor.
  • AWS kimlik bilgilerinizin süresi dolmuş.

Sorun gidermek için:

  • Yüklemeler için s3:PutObject, indirmeler için s3:GetObject izinlerine sahip olduğunuzu doğrulamak üzere IAM izinlerinizi kontrol edin.
  • Kova ilkesinin eylemlerinizi kısıtlamadığını doğrulayın.
  • Kimlik bilgilerinizin süresi dolduysa güncellemek için aws configure komutunu çalıştırın.

Hata: "No such file or directory"

Bu hata, kopyalamaya çalıştığınız yerel dosya veya dizin mevcut olmadığında oluşur:

upload failed: ./missing-file.txt to s3://testbucket-aws-cp-dradecic/missing-file.txt An error occurred (404) when calling the PutObject operation: Not Found

Çözüm basit - dosya yollarınızı dikkatlice kontrol edin. Yollar büyük/küçük harfe duyarlıdır, bunu unutmayın. Ayrıca göreli yolları kullanırken doğru dizinde olduğunuzdan emin olun.

Hata: "The specified bucket does not exist"

Bu hatayı görürseniz:

upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist

Şunları kontrol edin:

  • Kova adınızda yazım hatası olup olmadığı.
  • Doğru AWS bölgesini kullanıp kullanmadığınız.
  • Kovanın gerçekten var olup olmadığı (silinmiş olabilir).

Doğru adı doğrulamak için tüm kovalarınızı aws s3 ls ile listeleyebilirsiniz.

Hata: "Connection timed out"

Ağ sorunları bağlantı zaman aşımına neden olabilir:

upload failed: ./largefile.zip to s3://testbucket-aws-cp-dradecic/largefile.zip An error occurred (RequestTimeout) when calling the PutObject operation: Request timeout

Bunu çözmek için:

  • İnternet bağlantınızı kontrol edin.
  • Daha küçük dosyalar kullanmayı deneyin veya büyük dosyalar için çok parçalı yüklemeleri etkinleştirin.
  • Daha iyi performans için AWS Transfer Acceleration kullanmayı düşünün.

Yükleme hatalarını yönetme

Büyük dosyaları aktarırken hatalarla karşılaşma olasılığı daha yüksektir. Bu durumda, hataları zarifçe ele almaya çalışın.

Örneğin, betiklerde hata teşhisini kolaylaştırmak için --only-show-errors bayrağını kullanabilirsiniz:

aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/ --recursive --only-show-errors

Bu, başarılı aktarım mesajlarını bastırır ve yalnızca hataları gösterir; böylece büyük aktarımlarda sorun gidermeyi çok daha kolay hale getirir.

Yarım kalan aktarımları ele almak için, --recursive komutu hedefte aynı boyutta zaten var olan dosyaları otomatik olarak atlar. Ancak daha kapsamlı olmak adına, bu ortam değişkenlerini ayarlayarak AWS CLI'ın yerleşik yeniden denemelerini ağ sorunları için kullanabilirsiniz:

export AWS_RETRY_MODE=standard
export AWS_MAX_ATTEMPTS=5
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/

Bu, AWS CLI'a başarısız işlemleri en fazla 5 kez otomatik olarak yeniden denemesini söyler.

Ancak çok büyük veri kümeleri için, cp yerine aws s3 sync kullanmayı düşünün; çünkü kesintileri daha iyi yönetmek üzere tasarlanmıştır:

aws s3 sync large-directory/ s3://testbucket-aws-cp-dradecic/large-directory/

sync komutu, hedefte zaten bulunanlardan farklı olan dosyaları yalnızca aktarır; bu da yarım kalan büyük aktarımları sürdürmek için mükemmeldir.

Bu yaygın hataları anlarsanız ve betiklerinize uygun hata yönetimi uygularsanız, S3 kopyalama işlemleriniz çok daha sağlam ve güvenilir hale gelir.

AWS S3 cp'yi özetlemek

Sonuç olarak, aws s3 cp komutu yerel dosyaları S3'e ve tersine kopyalamak için tek adresli bir çözümdür.

Bu yazıda bununla ilgili her şeyi öğrendiniz. Temellerden ve ortam yapılandırmasından başladınız, dosya kopyalama için zamanlanmış ve otomatikleştirilmiş betikler yazmaya kadar ilerlediniz. Ayrıca özellikle büyük dosyaları taşırken bazı yaygın hatalar ve zorluklarla nasıl başa çıkacağınızı da öğrendiniz.

Dolayısıyla bir geliştirici, veri profesyoneli veya sistem yöneticisiyseniz, bu komutun faydalı olduğunu göreceğinizi düşünüyorum. Komutla rahat etmenin en iyi yolu onu düzenli olarak kullanmaktır. Temelleri anladığınızdan emin olun ve ardından işinizin sıkıcı kısımlarını otomatikleştirmeye biraz zaman ayırın.

AWS hakkında daha fazla bilgi edinmek için DataCamp'in şu kurslarını takip edin:

DataCamp'i AWS sertifikasyon sınavlarına hazırlanmak için de kullanabilirsiniz - AWS Cloud Practitioner (CLF-C02).

SSS

aws s3 cp komutu nedir ve ne için kullanılabilir?

aws s3 cp komutu, AWS Komut Satırı Arayüzü içinde yer alan ve yerel sisteminiz ile Amazon S3 depolaması arasında dosya kopyalamanıza olanak tanıyan bir yardımcı programdır. Standart Linux cp komutuna benzer tanıdık bir komut satırı deneyimi sunmak üzere tasarlanmıştır; ancak S3 kovalarıyla etkileşime göre uyarlanmıştır. Çift yönlü aktarımlar, tüm dizinlerin yinelemeli kopyalanması, kalıplara göre dosya filtreleme ve hatta maliyet optimizasyonu için farklı depolama sınıflarının belirtilmesi gibi amaçlarla kullanabilirsiniz. S3 kovalarındaki verileri verimli şekilde yönetmesi gereken DevOps mühendisleri, veri bilimcileri ve sistem yöneticileri için özellikle kullanışlıdır.

aws s3 cp komutunu kullanmak için AWS CLI'ı nasıl kurarım?

aws s3 cp komutunu kullanmak için AWS CLI kurulumunu yapmak; sisteminize AWS CLI'ı kurmayı, AWS kimlik bilgilerinizle yapılandırmayı ve bir S3 kovası oluşturmayı içerir. Kurulum süreci işletim sisteminize (Windows, Linux veya macOS) göre biraz değişir. Kurulumdan sonra aws configure komutunu çalıştırmalı ve Erişim anahtarı kimliği (Access key ID), Gizli erişim anahtarı (Secret access key), varsayılan bölge ve tercih edilen çıktı formatını sağlamalısınız. Son olarak, bir S3 kovasını AWS Yönetim Konsolu üzerinden veya doğrudan AWS CLI kullanarak oluşturmanız gerekir.

aws s3 cp için temel sözdizimi ve yaygın kullanım durumları nelerdir?

aws s3 cp için temel sözdizimi aws s3 cp <source> <destination> [options] şeklindedir; burada kaynak ve hedef yerel dosya yolları veya S3 URI'leri ( s3:// ile başlayan) olabilir. Yaygın kullanım durumları arasında yerel sisteminizden S3'e dosya yükleme, S3'ten yerel sisteminize dosya indirme ve --recursive bayrağını kullanarak tüm dizinleri yinelemeli olarak kopyalama yer alır. Ayrıca komutla farklı S3 kovaları arasında dosya kopyalayabilir, hedef dosyalar için farklı adlar belirtebilir ve kovalarınız içinde iç içe "klasör" yapılarında dosyaları düzenleyebilirsiniz.

Belirli dosyaları filtrelemek için --exclude ve --include bayraklarını nasıl kullanabilirim?

--exclude ve --include bayrakları, aws s3 cp kullanırken kalıplara göre dosyaları filtrelemenizi sağlar ve kopyalanacaklar üzerinde hassas kontrol sunar. Örneğin, belirli uzantılara sahip olanlar hariç bir dizindeki tüm dosyaları kopyalayabilir (ör. --exclude "*.log") ya da önce her şeyi dışlayıp (--exclude "*"), yalnızca belirli dosya türlerini hedefleyebilirsiniz (ör. --include "*.html" --include "*.css"). Bu bayrakların sırası önemli ölçüde etkilidir; AWS CLI bunları sırasıyla işler. Bu sayede karmaşık dosya aktarım senaryoları için gelişmiş filtreleme kuralları oluşturabilirsiniz.

--exact-timestamps ile aws s3 cp ve aws s3 sync arasındaki fark nedir?

Her iki komut da S3'teki dosyaları güncellemek için kullanılabilse de amaç ve davranışları farklıdır. --exact-timestamps bayrağıyla aws s3 cp, yalnızca zaman damgaları S3'tekilerden farklı olan dosyaları kopyalar; bu da dosyaları güncellerken aktarım süresi ve bant genişliği kullanımını azaltabilir. Ancak aws s3 sync, dizinleri senkron tutmak için özel olarak tasarlanmıştır ve daha gelişmiş senkronizasyon yetenekleri sunar. Büyük dosya kümelerini düzenli olarak güncellemeniz ve yalnızca değişenleri aktarmanız gerekiyorsa, genellikle aws s3 sync daha iyi bir seçenektir; yine de basit senkronizasyon ihtiyaçları için --exact-timestamps ile aws s3 cp işe yarayabilir.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Hırvatistan merkezli Kıdemli Veri Bilimci. 700’ün üzerinde yayımlanmış makaleyle 10 M+ görüntüleme elde eden, önde gelen bir teknoloji yazarı. TPOT ile Makine Öğrenimi Otomasyonu kitabının yazarı.
Konular
AWS
Cloud

Bu kurslarla AWS hakkında daha fazlasını öğrenin!

Kurs

AWS Kavramları

2 sa
52.7K
Amazon Web Services (AWS) dünyasını keşfedin ve neden bulut bilişimin öncüsü olduğunu anlayın.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör