Lewati ke konten utama

AWS S3 cp: Panduan Lengkap Transfer File AWS S3

Pelajari cara menyalin file ke dan dari S3 menggunakan perintah aws s3 cp. Jelajahi semuanya mulai dari transfer dasar dan penyalinan rekursif hingga skrip otomatisasi dan pemecahan masalah umum—dengan contoh praktis dunia nyata.
Diperbarui 28 Sep 2026  · 15 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Menyalin file ke penyimpanan AWS secara manual bisa melelahkan, rentan kesalahan, dan tidak efisien—terutama saat menangani data dalam jumlah besar. Anda tentu tidak menginginkannya.

AWS Command Line Interface (CLI) menyediakan alat praktis bernama aws s3 cp yang menyederhanakan proses ini. Perintah ini memungkinkan Anda menyalin file ke dan dari bucket Amazon S3 dengan perintah sederhana yang dapat diskrip dan berjalan di semua sistem operasi. Menggunakan AWS CLI tidak hanya menghemat waktu, tetapi juga memungkinkan otomatisasi tugas transfer file rutin.

Perintah aws s3 cp menawarkan banyak opsi untuk menangani skenario transfer file yang kompleks. Anda dapat menyalin file individual, mentransfer seluruh direktori secara rekursif, memfilter file berdasarkan pola, dan bahkan menentukan kelas penyimpanan berbeda untuk optimisasi biaya.

Dalam tutorial ini, saya akan memandu Anda melalui semua hal yang perlu diketahui untuk menggunakan aws s3 cp secara efektif, mulai dari perintah dasar hingga teknik lanjutan dan strategi otomatisasi.

> Baru di AWS dan belum yakin tentang penyimpanan cloud dan S3? Panduan kami yang terperinci tentang S3 dan EFS adalah tempat yang tepat untuk memulai. Jika Anda tertarik khusus pada S3, lihat panduan S3 mendalam kami.

Apa itu AWS S3 cp?

Perintah aws s3 cp adalah utilitas dalam AWS Command Line Interface yang memungkinkan Anda menyalin file antara sistem lokal dan penyimpanan Amazon S3. 

Intinya, perintah ini dirancang untuk memberikan pengalaman baris perintah yang familier seperti perintah Linux standar cp, tetapi disesuaikan untuk berinteraksi dengan bucket S3.

Pada dasarnya, aws s3 cp menghubungkan mesin lokal Anda dan infrastruktur penyimpanan cloud AWS. Saat Anda menjalankan perintah aws s3 cp, AWS CLI menangani autentikasi dan pembagian berkas (chunking) untuk transfer besar dan memastikan integritas data selama proses penyalinan. Utilitas ini mendukung penyalinan file individual, banyak file menggunakan wildcard, dan seluruh struktur direktori dengan operasi rekursif.

aws s3 cp mampu melakukan banyak hal, berikut beberapa di antaranya:

  • Transfer dua arah (unggah ke S3 atau unduh dari S3).
  • Penyalinan rekursif seluruh struktur direktori.
  • Dukungan berbagai kelas penyimpanan S3 (Standard, Intelligent-Tiering, Glacier, dan lain-lain).
  • Penyaringan file menggunakan pola include/exclude.
  • Pelestarian metadata file selama transfer.
  • Integrasi dengan AWS Identity and Access Management (IAM) untuk keamanan.

Namun, kekuatan aws s3 cp terletak pada fleksibilitas dan integrasinya dengan ekosistem AWS. Anda dapat menentukan parameter berbeda untuk mengontrol aspek seperti kelas penyimpanan, enkripsi, metadata, kontrol akses, dan lainnya. Ini membuatnya cocok untuk segala hal, dari transfer file sederhana sekali jalan hingga solusi pencadangan otomatis yang kompleks.

Perintah ini berbeda dengan menggunakan AWS Management Console, yang memerlukan navigasi dan klik manual. Perintah aws s3 cp dapat dijalankan langsung dari terminal Anda atau digabungkan ke dalam skrip dan alur kerja otomatis. Akses terprogram ke S3 ini sangat penting bagi banyak profesional teknologi, terutama engineer DevOps dan data scientist.

Sebagai penutup, aws s3 cp menyediakan solusi andal yang dapat diskrip dan mampu menangani transfer besar sambil menjaga kinerja. Perintah ini dapat melanjutkan unggahan dan unduhan yang terputus, yang sangat berguna saat menghadapi koneksi jaringan tidak stabil atau mentransfer file berukuran sangat besar.

Berikutnya, saya akan memandu Anda melalui hal-hal mendasar yang membosankan—menyiapkan AWS CLI di sistem Anda.

Menyiapkan AWS CLI dan AWS S3

Sebelum menyelami perintah aws s3 cp, Anda perlu menginstal dan mengonfigurasi AWS CLI dengan benar di sistem Anda. Jangan khawatir jika Anda belum pernah bekerja dengan AWS sebelumnya—proses penyiapannya mudah dan seharusnya memakan waktu kurang dari 10 menit.

Saya akan membaginya menjadi tiga tahap sederhana: memasang alat AWS CLI, mengonfigurasi kredensial Anda, dan membuat bucket S3 pertama untuk penyimpanan.

Menginstal AWS CLI

Proses instalasi sedikit berbeda tergantung sistem operasi yang Anda gunakan.

Untuk sistem Windows:

Untuk sistem Linux:

Jalankan tiga perintah berikut melalui Terminal:

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

Untuk sistem macOS:

Dengan asumsi Anda telah memasang Homebrew, jalankan satu baris berikut dari Terminal:

brew install awscli

Jika Anda tidak memiliki Homebrew, gunakan dua perintah ini sebagai gantinya:

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

Untuk memastikan instalasi berhasil, jalankan aws --version di terminal Anda. Anda akan melihat sesuatu seperti ini:

Gambar 1 - Versi AWS CLI

Gambar 1 - Versi AWS CLI

Mengonfigurasi AWS CLI

Setelah CLI terpasang, saatnya menyiapkan kredensial AWS Anda untuk autentikasi.

Pertama, akses akun AWS Anda dan buka dasbor layanan IAM. Buat pengguna baru dengan akses terprogram dan lampirkan kebijakan perizinan S3 yang sesuai:

Gambar 2 - Pengguna AWS IAM

Gambar 2 - Pengguna AWS IAM

Selanjutnya, kunjungi tab "Security credentials" dan buat pasangan kunci akses baru. Pastikan untuk menyimpan Access key ID dan Secret access key di tempat yang aman—Amazon tidak akan menampilkan secret key lagi setelah layar ini:

Gambar 3 - Kredensial pengguna AWS IAM

Gambar 3 - Kredensial pengguna AWS IAM

Sekarang buka terminal Anda dan jalankan perintah aws configure. Anda akan diminta empat informasi: Access key ID, Secret access key, region bawaan (saya menggunakan eu-central-1), dan format keluaran pilihan (biasanya json):

Gambar 4 - Konfigurasi AWS CLI

Gambar 4 - Konfigurasi AWS CLI

Untuk memastikan semuanya terhubung dengan benar, verifikasi identitas Anda dengan perintah berikut:

aws sts get-caller-identity

Jika dikonfigurasi dengan benar, Anda akan melihat detail akun Anda:

Gambar 5 - Perintah uji koneksi AWS CLI

Gambar 5 - Perintah uji koneksi AWS CLI

Membuat bucket S3

Terakhir, Anda perlu membuat bucket S3 untuk menyimpan file yang akan Anda salin.

Buka bagian layanan S3 di AWS Console Anda dan klik "Create bucket". Ingatlah bahwa nama bucket harus unik secara global di seluruh AWS. Pilih nama yang khas, biarkan pengaturan bawaan untuk saat ini, lalu klik "Create":

Gambar 6 - Pembuatan bucket AWS

Gambar 6 - Pembuatan bucket AWS

Setelah dibuat, bucket baru Anda akan muncul di konsol. Anda juga dapat mengonfirmasi keberadaannya melalui baris perintah:

aws s3 ls

Gambar 7 - Semua bucket S3 yang tersedia

Gambar 7 - Semua bucket S3 yang tersedia

Semua bucket S3 dikonfigurasi sebagai privat secara default, jadi ingatlah hal ini. Jika Anda bermaksud menggunakan bucket ini untuk file yang dapat diakses publik, Anda perlu mengubah kebijakan bucket sesuai kebutuhan.

Sekarang Anda siap sepenuhnya untuk mulai menggunakan perintah aws s3 cp untuk mentransfer file. Mari mulai dari dasar-dasarnya.

Sintaks Dasar Perintah AWS S3 cp

Sekarang setelah semuanya dikonfigurasi, mari masuk ke penggunaan dasar perintah aws s3 cp. Seperti biasa pada AWS, keindahannya terletak pada kesederhanaan, meskipun perintah ini dapat menangani berbagai skenario transfer file.

Dalam bentuk paling sederhana, perintah aws s3 cp mengikuti sintaks berikut:

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

Di mana <source> dan <destination> dapat berupa path file lokal atau URI S3 (yang dimulai dengan s3://). Mari jelajahi tiga kasus penggunaan paling umum.

Menyalin file dari lokal ke S3

Untuk menyalin file dari sistem lokal Anda ke bucket S3, sumbernya adalah path lokal dan tujuannya adalah URI S3:

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

Perintah ini mengunggah file test_file.txt dari direktori yang diberikan ke bucket S3 yang ditentukan. Jika operasi berhasil, Anda akan melihat keluaran konsol seperti ini:

Gambar 8 - Keluaran konsol setelah menyalin file lokal

Gambar 8 - Keluaran konsol setelah menyalin file lokal

Dan pada AWS Management Console, Anda akan melihat file Anda terunggah:

Gambar 9 - Isi bucket S3

Gambar 9 - Isi bucket S3

Demikian pula, jika Anda ingin menyalin folder lokal ke bucket S3 dan menempatkannya, katakanlah, di folder bertingkat lain, jalankan perintah serupa ini:

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

Gambar 10 - Isi bucket S3 setelah mengunggah folder

Gambar 10 - Isi bucket S3 setelah mengunggah folder

Flag --recursive akan memastikan semua file dan subfolder di dalam folder tersalin.

Perlu diingat—S3 sebenarnya tidak memiliki folder—struktur path hanyalah bagian dari key objek, namun secara konseptual bekerja seperti folder.

Menyalin file dari S3 ke lokal

Untuk menyalin file dari S3 ke sistem lokal Anda, cukup balik urutannya—sumber menjadi URI S3, dan tujuan adalah path lokal Anda:

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

Perintah ini mengunduh test_file.txt dari bucket S3 Anda dan menyimpannya sebagai downloaded_test_file.txt di direktori yang diberikan. Anda akan langsung melihatnya di sistem lokal Anda:

Gambar 11 - Mengunduh satu file dari S3

Gambar 11 - Mengunduh satu file dari S3

Jika Anda menghilangkan nama file tujuan, perintah akan menggunakan nama asli:

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

Gambar 12 - Isi file yang diunduh

Gambar 12 - Isi file yang diunduh

Titik (.) mewakili direktori Anda saat ini, jadi ini akan mengunduh test_file.txt ke lokasi Anda saat ini.

Terakhir, untuk mengunduh seluruh direktori, Anda dapat menggunakan perintah serupa ini:

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

Gambar 13 - Isi folder yang diunduh

Gambar 13 - Isi folder yang diunduh

Ingat bahwa flag --recursive sangat penting saat bekerja dengan banyak file—tanpanya, perintah akan gagal jika sumbernya adalah direktori.

Dengan perintah dasar ini, Anda sudah dapat menyelesaikan sebagian besar tugas transfer file yang diperlukan. Namun di bagian berikutnya, Anda akan mempelajari opsi lanjutan yang memberi kendali lebih baik atas proses penyalinan.

Opsi dan Fitur Lanjutan AWS S3 cp

AWS menawarkan beberapa opsi lanjutan yang memungkinkan Anda memaksimalkan operasi penyalinan file. Di bagian ini, saya akan menunjukkan beberapa flag dan parameter paling berguna yang akan membantu pekerjaan Anda sehari-hari.

Menggunakan flag --exclude dan --include

Terkadang Anda hanya ingin menyalin file tertentu yang cocok dengan pola spesifik. Flag --exclude dan --include memungkinkan Anda memfilter file berdasarkan pola, dan memberi kontrol presisi atas apa yang disalin.

Sebagai konteks, ini adalah struktur direktori yang saya gunakan:

Gambar 14 - Struktur direktori

Gambar 14 - Struktur direktori

Sekarang, misalkan Anda ingin menyalin semua file dari direktori kecuali file .log:

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

Perintah ini akan menyalin semua file dari direktori advanced_folder ke S3, mengecualikan semua file dengan ekstensi .log:

Gambar 15 - Hasil penyalinan folder

Gambar 15 - Hasil penyalinan folder

Anda juga dapat menggabungkan beberapa pola. Misalkan Anda ingin menyalin hanya file HTML dan CSS dari folder proyek:

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

Perintah ini pertama-tama mengecualikan semuanya (--exclude "*"), lalu hanya menyertakan file dengan ekstensi .html dan .css. Hasilnya terlihat seperti ini:

Gambar 16 - Hasil penyalinan folder (2)

Gambar 16 - Hasil penyalinan folder (2)

Perlu diingat bahwa urutan flag berpengaruh—AWS CLI memproses flag ini secara berurutan, jadi jika Anda meletakkan --include sebelum --exclude, hasilnya akan berbeda:

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

Kali ini, tidak ada yang disalin ke bucket:

Gambar 17 - Hasil penyalinan folder (3)

Gambar 17 - Hasil penyalinan folder (3)

Menentukan kelas penyimpanan S3

Amazon S3 menawarkan berbagai kelas penyimpanan, masing-masing dengan biaya dan karakteristik pengambilan yang berbeda. Secara default, aws s3 cp mengunggah file ke kelas Standard, tetapi Anda dapat menentukan kelas lain menggunakan flag --storage-class:

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

Perintah ini mengunggah large-archive.zip ke kelas penyimpanan Glacier, yang jauh lebih murah tetapi memiliki biaya dan waktu pengambilan yang lebih tinggi:

Gambar 18 - Menyalin file ke S3 dengan kelas penyimpanan berbeda

Gambar 18 - Menyalin file ke S3 dengan kelas penyimpanan berbeda

Kelas penyimpanan yang tersedia meliputi:

  • STANDARD (default): Penyimpanan tujuan umum dengan durabilitas dan ketersediaan tinggi.
  • REDUCED_REDUNDANCY (tidak direkomendasikan lagi): Durabilitas lebih rendah, opsi penghematan biaya, kini usang.
  • STANDARD_IA (Infrequent Access): Penyimpanan berbiaya lebih rendah untuk data yang jarang diakses.
  • ONEZONE_IA (Single Zone Infrequent Access): Biaya lebih rendah, akses jarang dalam satu Availability Zone AWS.
  • INTELLIGENT_TIERING: Secara otomatis memindahkan data antar tier berdasarkan pola akses.
  • GLACIER: Penyimpanan arsip berbiaya rendah untuk retensi jangka panjang, pengambilan dalam hitungan menit hingga jam.
  • DEEP_ARCHIVE: Penyimpanan arsip paling murah, pengambilan dalam hitungan jam, ideal untuk pencadangan jangka panjang.

Jika Anda mencadangkan file yang tidak perlu diakses segera, menggunakan GLACIER atau DEEP_ARCHIVE dapat menghemat biaya penyimpanan secara signifikan.

Sinkronisasi file dengan flag --exact-timestamps

Saat Anda memperbarui file di S3 yang sudah ada, Anda mungkin hanya ingin menyalin file yang berubah. Flag --exact-timestamps membantu dengan membandingkan cap waktu antara sumber dan tujuan.

Berikut contohnya:

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

Dengan flag ini, perintah hanya akan menyalin file jika cap waktunya berbeda dari file yang sudah ada di S3. Ini dapat mengurangi waktu transfer dan penggunaan bandwidth saat Anda rutin memperbarui sekumpulan besar file.

Mengapa ini berguna? Bayangkan skenario deployment di mana Anda ingin memperbarui file aplikasi tanpa perlu mentransfer aset yang tidak berubah.

Meskipun --exact-timestamps berguna untuk melakukan semacam sinkronisasi, jika Anda membutuhkan solusi yang lebih canggih, pertimbangkan menggunakan aws s3 sync alih-alih aws s3 cp. Perintah sync dirancang khusus untuk menjaga direktori tetap sinkron dan memiliki kapabilitas tambahan untuk tujuan ini. Saya membahas semuanya tentang perintah sync dalam tutorial AWS S3 Sync.

Dengan opsi lanjutan ini, kini Anda memiliki kontrol yang jauh lebih halus atas operasi file S3 Anda. Anda dapat menargetkan file tertentu, mengoptimalkan biaya penyimpanan, dan memperbarui file secara efisien. Di bagian berikutnya, Anda akan mempelajari cara mengotomatiskan operasi ini menggunakan skrip dan tugas terjadwal.

Mengotomatiskan Transfer File dengan AWS S3 cp

Sejauh ini, Anda telah mempelajari cara menyalin file secara manual ke dan dari S3 menggunakan baris perintah. Salah satu keunggulan terbesar menggunakan aws s3 cp adalah Anda dapat dengan mudah mengotomatiskan transfer ini, yang akan sangat menghemat waktu.

Mari kita lihat cara mengintegrasikan perintah aws s3 cp ke dalam skrip dan pekerjaan terjadwal untuk transfer file tanpa intervensi.

Menggunakan AWS S3 cp dalam skrip

Berikut contoh skrip bash sederhana yang mencadangkan direktori ke S3, menambahkan cap waktu ke cadangan, serta menerapkan penanganan kesalahan dan pencatatan ke berkas:

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

Simpan sebagai backup.sh, buat dapat dieksekusi dengan chmod +x backup.sh, dan Anda memiliki skrip cadangan yang dapat digunakan ulang!

Anda kemudian dapat menjalankannya dengan perintah berikut:

./backup.sh

Gambar 19 - Skrip berjalan di terminal

Gambar 19 - Skrip berjalan di terminal

Segera setelah itu, folder backups pada bucket akan terisi:

Gambar 20 - Cadangan tersimpan di bucket S3

Gambar 20 - Cadangan tersimpan di bucket S3

Mari tingkatkan lagi dengan menjalankan skrip sesuai jadwal.

Menjadwalkan transfer file dengan cron job

Sekarang setelah Anda memiliki skrip, langkah berikutnya adalah menjadwalkannya untuk berjalan otomatis pada waktu tertentu.

Jika Anda menggunakan Linux atau macOS, Anda dapat menggunakan cron untuk menjadwalkan cadangan. Berikut cara menyiapkan cron job untuk menjalankan skrip cadangan setiap hari pada tengah malam:

1. Buka crontab Anda untuk disunting:

crontab -e

2. Tambahkan baris berikut untuk menjalankan skrip setiap hari pada tengah malam:

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

Gambar 21 - Cron job untuk menjalankan skrip harian

Format untuk cron job adalah minute hour day-of-month month day-of-week command. Berikut beberapa contoh lainnya:

  • Jalankan setiap jam: 0 * * * * /path/to/your/backup.sh
  • Jalankan setiap Senin pukul 09.00: 0 9 * * 1 /path/to/your/backup.sh
  • Jalankan pada tanggal 1 setiap bulan: 0 0 1 * * /path/to/your/backup.sh

Dan selesai! Skrip backup.sh sekarang akan berjalan sesuai interval terjadwal.

Mengotomatiskan transfer file S3 adalah langkah yang tepat. Ini sangat berguna untuk skenario seperti:

  • Pencadangan harian data penting
  • Sinkronisasi gambar produk ke situs web
  • Memindahkan file log ke penyimpanan jangka panjang
  • Menyebarkan pembaruan file situs web

Teknik otomatisasi seperti ini akan membantu Anda menyiapkan sistem andal yang menangani transfer file tanpa intervensi manual. Anda cukup menulisnya sekali, lalu bisa melupakannya.

Di bagian berikutnya, saya akan membahas beberapa praktik terbaik agar operasi aws s3 cp Anda lebih aman dan efisien.

Praktik Terbaik Menggunakan AWS S3 cp

Meskipun perintah aws s3 cp mudah digunakan, tetap ada kemungkinan terjadi masalah.

Jika Anda mengikuti praktik terbaik, Anda akan terhindar dari jebakan umum, mengoptimalkan kinerja, dan menjaga data tetap aman. Mari bahas praktik-praktik ini untuk membuat operasi transfer file Anda lebih efisien.

Manajemen file yang efisien

Saat bekerja dengan S3, mengorganisasi file secara logis akan menghemat waktu dan kerepotan di kemudian hari.

Pertama, tetapkan konvensi penamaan bucket dan prefix yang konsisten. Misalnya, Anda dapat memisahkan data berdasarkan lingkungan, aplikasi, atau tanggal:

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

Organisasi seperti ini memudahkan untuk:

  • Menemukan file tertentu saat diperlukan.
  • Menerapkan kebijakan bucket dan izin pada tingkat yang tepat.
  • Menyiapkan aturan siklus hidup untuk mengarsipkan atau menghapus data lama.

Tips lain: Saat mentransfer kumpulan file besar, pertimbangkan untuk mengelompokkan file kecil terlebih dahulu (menggunakan zip atau tar) sebelum mengunggah. Ini mengurangi jumlah panggilan API ke S3, yang dapat menurunkan biaya dan mempercepat transfer.

# Alih-alih menyalin ribuan file log kecil
# kompres dulu, lalu unggah
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/

Menangani transfer data besar

Saat Anda menyalin file berukuran besar atau banyak file sekaligus, ada beberapa teknik untuk membuat prosesnya lebih andal dan efisien.

Anda dapat menggunakan flag --quiet untuk mengurangi keluaran saat berjalan dalam skrip:

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

Ini menekan informasi progres untuk setiap file, yang membuat log lebih mudah dikelola. Ini juga sedikit meningkatkan kinerja.

Untuk file yang sangat besar, pertimbangkan menggunakan multipart upload dengan flag --multipart-threshold:

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

Pengaturan di atas memberi tahu AWS CLI untuk membagi file yang lebih besar dari 100MB menjadi beberapa bagian untuk diunggah. Melakukannya memiliki beberapa manfaat:

  • Jika koneksi terputus, hanya bagian yang terdampak yang perlu diulang.
  • Bagian-bagian dapat diunggah paralel, berpotensi meningkatkan throughput.
  • Anda dapat menjeda dan melanjutkan unggahan besar.

Saat mentransfer data antar region, pertimbangkan menggunakan S3 Transfer Acceleration untuk unggahan yang lebih cepat:

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

Perintah di atas merutekan transfer Anda melalui jaringan edge Amazon, yang dapat mempercepat transfer lintas region secara signifikan.

Memastikan keamanan

Keamanan harus selalu menjadi prioritas utama saat bekerja dengan data Anda di cloud.

Pertama, pastikan izin IAM Anda mengikuti prinsip hak istimewa paling sedikit. Hanya berikan izin spesifik yang diperlukan untuk setiap tugas.

Berikut contoh kebijakan yang dapat Anda tetapkan ke pengguna:

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

Kebijakan ini memungkinkan penyalinan file ke dan dari hanya prefix "backups" di "my-bucket".

Cara tambahan untuk meningkatkan keamanan adalah dengan mengaktifkan enkripsi untuk data sensitif. Anda dapat menentukan enkripsi sisi server saat mengunggah:

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

Atau, untuk keamanan lebih, gunakan AWS Key Management Service (KMS):

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

Namun, untuk operasi yang sangat sensitif, pertimbangkan menggunakan endpoint VPC untuk S3. Ini menjaga lalu lintas Anda tetap dalam jaringan AWS dan sepenuhnya menghindari internet publik.

Di bagian berikutnya, Anda akan mempelajari cara memecahkan masalah umum yang mungkin Anda temui saat bekerja dengan perintah ini.

Memecahkan Masalah Error AWS S3 cp

Satu hal yang pasti—sesekali Anda akan menemui masalah saat bekerja dengan aws s3 cp. Namun, dengan memahami error umum dan solusinya, Anda akan menghemat waktu dan mengurangi frustrasi saat sesuatu tidak berjalan sesuai rencana.

Di bagian ini, saya akan menunjukkan masalah yang paling sering terjadi dan cara memperbaikinya.

Error umum dan solusinya

Error: "Access Denied"

Ini mungkin error paling umum yang akan Anda temui:

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

Biasanya ini berarti salah satu dari tiga hal berikut:

  • Pengguna IAM Anda tidak memiliki izin yang cukup untuk melakukan operasi tersebut.
  • Kebijakan bucket membatasi akses.
  • Kredensial AWS Anda telah kedaluwarsa.

Untuk menelusuri masalah:

  • Periksa izin IAM Anda untuk memastikan Anda memiliki izin s3:PutObject (untuk unggahan) atau s3:GetObject (untuk unduhan) yang diperlukan.
  • Verifikasi bahwa kebijakan bucket tidak membatasi tindakan Anda.
  • Jalankan aws configure untuk memperbarui kredensial jika telah kedaluwarsa.

Error: "No such file or directory"

Error ini terjadi saat file atau direktori lokal yang Anda coba salin tidak ada:

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

Solusinya sederhana—periksa path file Anda dengan saksama. Path bersifat case-sensitive, jadi ingat itu. Juga, pastikan Anda berada di direktori yang benar saat menggunakan path relatif.

Error: "The specified bucket does not exist"

Jika Anda melihat error ini:

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

Periksa:

  • Salah ketik pada nama bucket Anda.
  • Apakah Anda menggunakan region AWS yang benar.
  • Apakah bucket benar-benar ada (mungkin telah dihapus).

Anda dapat mencantumkan semua bucket Anda dengan aws s3 ls untuk memastikan nama yang benar.

Error: "Connection timed out"

Masalah jaringan dapat menyebabkan koneksi habis waktu:

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

Untuk mengatasinya:

  • Periksa koneksi internet Anda.
  • Coba gunakan file yang lebih kecil atau aktifkan multipart upload untuk file besar.
  • Pertimbangkan menggunakan AWS Transfer Acceleration untuk kinerja yang lebih baik.

Menangani kegagalan unggahan

Error lebih mungkin terjadi saat mentransfer file besar. Dalam kasus tersebut, coba tangani kegagalan dengan baik.

Misalnya, Anda dapat menggunakan flag --only-show-errors untuk memudahkan diagnosis error dalam skrip:

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

Ini menekan pesan transfer yang berhasil, hanya menampilkan error, sehingga pemecahan masalah transfer besar menjadi jauh lebih mudah.

Untuk menangani transfer yang terputus, perintah --recursive akan otomatis melewati file yang sudah ada di tujuan dengan ukuran yang sama. Namun, agar lebih menyeluruh, Anda dapat menggunakan retry bawaan AWS CLI untuk masalah jaringan dengan menyetel variabel lingkungan berikut:

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

Ini memberi tahu AWS CLI untuk otomatis mengulang operasi yang gagal hingga 5 kali.

Namun untuk dataset yang sangat besar, pertimbangkan menggunakan aws s3 sync alih-alih cp, karena perintah ini dirancang untuk menangani interupsi dengan lebih baik:

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

Perintah sync hanya akan mentransfer file yang berbeda dari yang sudah ada di tujuan, sehingga sangat cocok untuk melanjutkan transfer besar yang terputus.

Jika Anda memahami error umum ini dan menerapkan penanganan kesalahan yang tepat dalam skrip, Anda akan membuat operasi penyalinan S3 jauh lebih tangguh dan andal.

Ringkasan AWS S3 cp

Sebagai kesimpulan, perintah aws s3 cp adalah solusi satu pintu untuk menyalin file lokal ke S3 dan sebaliknya.

Anda telah mempelajarinya secara menyeluruh di artikel ini. Anda mulai dari dasar dan konfigurasi lingkungan, dan berakhir dengan menulis skrip terjadwal dan otomatis untuk menyalin file. Anda juga mempelajari cara mengatasi beberapa error dan tantangan umum saat memindahkan file, terutama yang berukuran besar.

Jadi, jika Anda seorang developer, profesional data, atau administrator sistem, saya rasa Anda akan menemukan perintah ini bermanfaat. Cara terbaik untuk terbiasa dengannya adalah dengan sering menggunakannya. Pastikan Anda memahami dasar-dasarnya, lalu luangkan waktu untuk mengotomatiskan bagian pekerjaan yang membosankan.

Untuk mempelajari lebih lanjut tentang AWS, ikuti kursus-kursus DataCamp berikut:

Anda bahkan dapat menggunakan DataCamp untuk mempersiapkan ujian sertifikasi AWS - AWS Cloud Practitioner (CLF-C02).

FAQs

Apa itu perintah aws s3 cp, dan untuk apa dapat digunakan?

Perintah aws s3 cp adalah utilitas dalam AWS Command Line Interface yang memungkinkan Anda menyalin file antara sistem lokal dan penyimpanan Amazon S3. Perintah ini dirancang untuk memberikan pengalaman baris perintah yang familier seperti perintah Linux standar cp, tetapi disesuaikan untuk berinteraksi dengan bucket S3. Anda dapat menggunakannya untuk transfer dua arah, penyalinan rekursif seluruh struktur direktori, memfilter file berdasarkan pola, dan bahkan menentukan kelas penyimpanan berbeda untuk optimisasi biaya. Perintah ini sangat berguna bagi engineer DevOps, data scientist, dan administrator sistem yang perlu mengelola data di bucket S3 secara efisien.

Bagaimana cara menyiapkan AWS CLI untuk menggunakan perintah aws s3 cp?

Menyiapkan AWS CLI untuk menggunakan perintah aws s3 cp melibatkan pemasangan AWS CLI di sistem Anda, mengonfigurasinya dengan kredensial AWS Anda, dan membuat bucket S3. Proses instalasi sedikit berbeda tergantung sistem operasi Anda (Windows, Linux, atau macOS). Setelah instalasi, Anda perlu menjalankan perintah aws configure dan memberikan Access key ID, Secret access key, region bawaan, dan format keluaran pilihan. Terakhir, Anda perlu membuat bucket S3 melalui AWS Management Console atau langsung menggunakan AWS CLI.

Apa sintaks dasar dan kasus penggunaan umum untuk aws s3 cp?

Sintaks dasar untuk aws s3 cp adalah aws s3 cp <source> <destination> [options], di mana source dan destination dapat berupa path file lokal atau URI S3 (diawali dengan s3://). Kasus penggunaan umum mencakup mengunggah file dari sistem lokal ke S3, mengunduh file dari S3 ke sistem lokal, dan menyalin seluruh direktori secara rekursif menggunakan flag --recursive. Anda juga dapat menggunakan perintah ini untuk menyalin file antar bucket S3 yang berbeda, menentukan nama berbeda untuk file tujuan, dan mengorganisasi file dalam struktur "folder" bertingkat di dalam bucket Anda.

Bagaimana cara menggunakan flag --exclude dan --include untuk memfilter file tertentu?

Flag --exclude dan --include memungkinkan Anda memfilter file berdasarkan pola saat menggunakan aws s3 cp, sehingga memberi kontrol presisi atas apa yang disalin. Misalnya, Anda dapat menyalin semua file dari direktori kecuali yang memiliki ekstensi tertentu (seperti --exclude "*.log"), atau Anda dapat menargetkan hanya tipe file tertentu (seperti --include "*.html" --include "*.css" setelah terlebih dahulu mengecualikan semuanya dengan --exclude "*"). Urutan flag ini sangat berpengaruh karena AWS CLI memprosesnya secara berurutan. Hal ini memungkinkan Anda membuat aturan pemfilteran yang canggih untuk skenario transfer file yang kompleks.

Apa perbedaan antara aws s3 cp dengan --exact-timestamps dan aws s3 sync?

Meskipun keduanya dapat digunakan untuk memperbarui file di S3, keduanya memiliki tujuan dan perilaku yang berbeda. Perintah aws s3 cp dengan flag --exact-timestamps hanya akan menyalin file jika cap waktunya berbeda dari yang sudah ada di S3, yang dapat mengurangi waktu transfer dan penggunaan bandwidth saat memperbarui file. Namun, aws s3 sync dirancang khusus untuk menjaga direktori tetap sinkron dan menawarkan kapabilitas sinkronisasi yang lebih canggih. Jika Anda perlu rutin memperbarui kumpulan file besar dan hanya ingin mentransfer yang berubah, aws s3 sync umumnya merupakan opsi yang lebih baik, meskipun aws s3 cp dengan --exact-timestamps dapat bekerja untuk kebutuhan sinkronisasi yang lebih sederhana.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist yang berbasis di Kroasia. Penulis Tekno Teratas dengan lebih dari 700 artikel yang telah diterbitkan, menghasilkan lebih dari 10 juta tayangan. Penulis buku Machine Learning Automation with TPOT.
Topik
AWS
Cloud

Pelajari lebih lanjut tentang AWS dengan kursus-kursus ini!

Kursus

Konsep AWS

2 jam
53.1K
Temukan dunia Amazon Web Services (AWS) dan pahami mengapa layanan ini berada di garis depan komputasi awan.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

Lihat SelengkapnyaLihat Selengkapnya