Milis S3tools / S3cmd:
S3cmd memerlukan Python 2.6 atau lebih baru. Python 3+ juga didukung mulai dari S3cmd versi 2.
Lihat petunjuk pemasangan.
S3cmd ( s3cmd
) adalah alat baris perintah dan klien gratis untuk mengunggah, mengambil, dan mengelola data di Amazon S3 dan penyedia layanan penyimpanan cloud lainnya yang menggunakan protokol S3, seperti Google Cloud Storage atau DreamHost DreamObjects. Ini paling cocok untuk pengguna tingkat lanjut yang terbiasa dengan program baris perintah. Ini juga ideal untuk skrip batch dan pencadangan otomatis ke S3, dipicu dari cron, dll.
S3cmd ditulis dengan Python. Ini adalah proyek sumber terbuka yang tersedia di bawah GNU Public License v2 (GPLv2) dan gratis untuk penggunaan komersial dan pribadi. Anda hanya perlu membayar Amazon untuk menggunakan penyimpanannya.
Banyak fitur dan opsi telah ditambahkan ke S3cmd, sejak rilis pertamanya pada tahun 2008.... baru-baru ini kami menghitung lebih dari 60 opsi baris perintah, termasuk unggahan multibagian, enkripsi, pencadangan tambahan, sinkronisasi s3, manajemen ACL dan Metadata, S3 ukuran bucket, kebijakan bucket, dan banyak lagi!
Amazon S3 menyediakan layanan penyimpanan terkelola yang dapat diakses melalui internet sehingga siapa pun dapat menyimpan data dalam jumlah berapa pun dan mengambilnya kembali nanti.
S3 adalah layanan berbayar yang dioperasikan oleh Amazon. Sebelum menyimpan apa pun ke S3, Anda harus mendaftar akun "AWS" (di mana AWS = Amazon Web Services) untuk mendapatkan sepasang pengidentifikasi: Kunci Akses dan Kunci Rahasia. Anda harus memberikan kunci ini ke S3cmd. Anggap saja itu adalah nama pengguna dan kata sandi untuk akun S3 Anda.
Pada saat penulisan ini, biaya penggunaan S3 adalah (dalam USD):
$0,023 per GB per bulan ruang penyimpanan yang digunakan
plus
$0,00 per GB - semua data diunggah
plus
$0,000 per GB - data 1 GB/bulan pertama diunduh $0,090 per GB - data diunduh hingga 10 TB/bulan $0,085 per GB - data 40 TB/bulan berikutnya diunduh $0,070 per GB - data diunduh 100 TB/bulan berikutnya $0,050 per GB - data diunduh / bulan lebih dari 150 TB
plus
$0,005 per 1.000 permintaan PUT atau COPY atau LIST $0,004 per 10.000 GET dan semua permintaan lainnya
Jika misalnya pada tanggal 1 Januari Anda mengunggah foto berukuran 2GB dalam format JPEG dari liburan Anda di Selandia Baru, pada akhir Januari Anda akan dikenakan biaya $0,05 untuk penggunaan ruang penyimpanan 2GB selama sebulan, $0,0 untuk mengunggah data sebesar 2GB, dan a beberapa sen untuk permintaan. Itu berarti sedikit di atas $0,06 untuk cadangan lengkap foto liburan berharga Anda.
Di bulan Februari Anda tidak menyentuhnya. Data Anda masih berada di server S3 sehingga Anda membayar $0,06 untuk dua gigabyte tersebut, namun tidak ada satu sen pun yang akan dikenakan untuk transfer apa pun. Jumlahnya adalah $0,05 sebagai biaya berkelanjutan untuk pencadangan Anda. Tidak terlalu buruk.
Pada bulan Maret, Anda mengizinkan akses baca anonim ke beberapa gambar Anda dan teman Anda mengunduh, katakanlah, 1500MB gambar tersebut. Karena file tersebut milik Anda, Anda bertanggung jawab atas biaya yang timbul. Itu berarti pada akhir bulan Maret Anda akan dikenakan biaya $0,05 untuk penyimpanan ditambah $0,045 untuk lalu lintas unduhan yang dihasilkan oleh teman Anda.
Tidak ada kontrak bulanan minimum atau biaya pengaturan. Apa yang Anda gunakan itulah yang Anda bayar. Awalnya tagihan saya seperti US$0,03 bahkan nihil.
Singkatnya, itulah model penetapan harga Amazon S3. Periksa beranda Amazon S3 untuk lebih jelasnya.
Tak perlu dikatakan bahwa semua uang ini dibebankan oleh Amazon sendiri, jelas tidak ada pembayaran untuk menggunakan S3cmd :-)
File yang disimpan di S3 disebut "objek" dan namanya secara resmi disebut "kunci". Karena hal ini terkadang membingungkan pengguna, kami sering menyebut objek sebagai "file" atau "file jarak jauh". Setiap objek termasuk dalam satu "ember".
Untuk mendeskripsikan objek dalam penyimpanan S3, kami menciptakan skema mirip URI dalam bentuk berikut:
s3://BUCKET
atau
s3://BUCKET/OBJECT
Bucket seperti direktori atau folder dengan beberapa batasan:
Sebaiknya gunakan nama bucket yang kompatibel dengan DNS. Misalnya saja, Anda tidak boleh menggunakan karakter huruf besar. Meskipun kepatuhan DNS tidak sepenuhnya diwajibkan, beberapa fitur yang dijelaskan di bawah ini tidak tersedia untuk bucket bernama yang tidak kompatibel dengan DNS. Satu langkah lagi adalah menggunakan nama domain yang sepenuhnya memenuhi syarat (FQDN) untuk sebuah bucket - yang memiliki lebih banyak manfaat.
Cari "Host Virtual" nanti di teks ini untuk detail lebih lanjut mengenai bucket bernama FQDN.
Berbeda dengan bucket, hampir tidak ada batasan pada nama objek. Ini bisa berupa string UTF-8 apa pun yang panjangnya hingga 1024 byte. Menariknya, nama objek dapat berisi karakter garis miring (/) sehingga my/funny/picture.jpg
adalah nama objek yang valid. Perhatikan bahwa tidak ada direktori atau keranjang yang disebut my
dan funny
- ini sebenarnya adalah nama objek tunggal yang disebut my/funny/picture.jpg
dan S3 tidak peduli sama sekali bahwa itu terlihat seperti struktur direktori.
URI lengkap dari gambar tersebut dapat berupa, misalnya:
s3://my-bucket/my/funny/picture.jpg
File yang disimpan di S3 dapat bersifat Pribadi atau Publik. Yang Pribadi hanya dapat dibaca oleh pengguna yang mengunggahnya sedangkan yang Publik dapat dibaca oleh siapa saja. Selain itu file Publik dapat diakses menggunakan protokol HTTP, tidak hanya menggunakan s3cmd
atau alat serupa.
ACL (Access Control List) suatu file dapat diatur pada saat pengunggahan menggunakan opsi --acl-public
atau --acl-private
dengan perintah s3cmd sync
s3cmd put
atau s3cmd (lihat di bawah).
Alternatifnya, ACL dapat diubah untuk file jarak jauh yang ada dengan perintah s3cmd setacl --acl-public
(atau --acl-private
).
Buka https://aws.amazon.com/s3, klik tombol "Daftar ke layanan web" di kolom kanan dan lakukan pendaftaran. Anda harus memberikan rincian Kartu Kredit Anda agar Amazon dapat menagih Anda untuk penggunaan S3. Pada akhirnya Anda harus memiliki Akses dan Kunci Rahasia Anda.
Jika Anda menyiapkan pengguna IAM terpisah, access key pengguna tersebut setidaknya harus memiliki izin berikut untuk melakukan apa pun:
Contoh kebijakan lainnya dapat ditemukan di https://docs.aws.amazon.com/AmazonS3/latest/dev/example-policies-s3.html
s3cmd --configure
Anda akan dimintai dua kunci - salin dan tempel dari email konfirmasi atau dari halaman akun Amazon Anda. Berhati-hatilah saat menyalinnya! Mereka peka huruf besar-kecil dan harus dimasukkan secara akurat atau Anda akan terus mendapatkan kesalahan tentang tanda tangan yang tidak valid atau sejenisnya.
Ingatlah untuk menambahkan izin s3:ListAllMyBuckets ke kunci atau Anda akan mendapatkan kesalahan AccessDenied saat menguji akses.
s3cmd ls
untuk mencantumkan semua keranjang Anda.Karena Anda baru saja mulai menggunakan S3, tidak ada bucket yang Anda miliki saat ini. Jadi outputnya akan kosong.
s3cmd mb s3://my-new-bucket-name
Seperti disebutkan di atas, nama bucket harus unik di antara semua pengguna S3. Itu berarti nama sederhana seperti "test" atau "asdf" sudah digunakan dan Anda harus membuat sesuatu yang lebih orisinal. Untuk mendemonstrasikan fitur sebanyak mungkin, mari buat bucket bernama FQDN s3://public.s3tools.org
:
$ s3cmd mb s3://public.s3tools.org
Bucket 's3://public.s3tools.org' created
s3cmd ls
Sekarang Anda akan melihat keranjang yang baru Anda buat:
$ s3cmd ls
2009-01-28 12:34 s3://public.s3tools.org
$ s3cmd ls s3://public.s3tools.org
$
Memang kosong.
$ s3cmd put some-file.xml s3://public.s3tools.org/somefile.xml
some-file.xml -> s3://public.s3tools.org/somefile.xml [1 of 1]
123456 of 123456 100% in 2s 51.75 kB/s done
Unggah pohon dua direktori ke 'direktori' virtual keranjang:
$ s3cmd put --recursive dir1 dir2 s3://public.s3tools.org/somewhere/
File 'dir1/file1-1.txt' stored as 's3://public.s3tools.org/somewhere/dir1/file1-1.txt' [1 of 5]
File 'dir1/file1-2.txt' stored as 's3://public.s3tools.org/somewhere/dir1/file1-2.txt' [2 of 5]
File 'dir1/file1-3.log' stored as 's3://public.s3tools.org/somewhere/dir1/file1-3.log' [3 of 5]
File 'dir2/file2-1.bin' stored as 's3://public.s3tools.org/somewhere/dir2/file2-1.bin' [4 of 5]
File 'dir2/file2-2.txt' stored as 's3://public.s3tools.org/somewhere/dir2/file2-2.txt' [5 of 5]
Seperti yang Anda lihat, kita tidak perlu membuat 'direktori' /somewhere
. Sebenarnya itu hanya awalan nama file, bukan direktori sebenarnya dan tidak harus dibuat dengan cara apa pun sebelumnya.
Daripada menggunakan put
dengan opsi --recursive
, Anda juga bisa menggunakan perintah sync
:
$ s3cmd sync dir1 dir2 s3://public.s3tools.org/somewhere/
$ s3cmd ls s3://public.s3tools.org
DIR s3://public.s3tools.org/somewhere/
2009-02-10 05:10 123456 s3://public.s3tools.org/somefile.xml
Gunakan --recursive (atau -r) untuk membuat daftar semua file jarak jauh:
$ s3cmd ls --recursive s3://public.s3tools.org
2009-02-10 05:10 123456 s3://public.s3tools.org/somefile.xml
2009-02-10 05:13 18 s3://public.s3tools.org/somewhere/dir1/file1-1.txt
2009-02-10 05:13 8 s3://public.s3tools.org/somewhere/dir1/file1-2.txt
2009-02-10 05:13 16 s3://public.s3tools.org/somewhere/dir1/file1-3.log
2009-02-10 05:13 11 s3://public.s3tools.org/somewhere/dir2/file2-1.bin
2009-02-10 05:13 8 s3://public.s3tools.org/somewhere/dir2/file2-2.txt
$ s3cmd get s3://public.s3tools.org/somefile.xml some-file-2.xml
s3://public.s3tools.org/somefile.xml -> some-file-2.xml [1 of 1]
123456 of 123456 100% in 3s 35.75 kB/s done
$ md5sum some-file.xml some-file-2.xml
39bcb6992e461b269b95b3bda303addf some-file.xml
39bcb6992e461b269b95b3bda303addf some-file-2.xml
Checksum dari file asli cocok dengan salah satu yang diambil. Sepertinya itu berhasil :-)
Untuk mengambil seluruh 'pohon direktori' dari S3 gunakan get rekursif:
$ s3cmd get --recursive s3://public.s3tools.org/somewhere
File s3://public.s3tools.org/somewhere/dir1/file1-1.txt saved as './somewhere/dir1/file1-1.txt'
File s3://public.s3tools.org/somewhere/dir1/file1-2.txt saved as './somewhere/dir1/file1-2.txt'
File s3://public.s3tools.org/somewhere/dir1/file1-3.log saved as './somewhere/dir1/file1-3.log'
File s3://public.s3tools.org/somewhere/dir2/file2-1.bin saved as './somewhere/dir2/file2-1.bin'
File s3://public.s3tools.org/somewhere/dir2/file2-2.txt saved as './somewhere/dir2/file2-2.txt'
Karena direktori tujuan tidak ditentukan, s3cmd
menyimpan struktur direktori dalam direktori kerja saat ini ('.').
Ada perbedaan penting antara:
get s3://public.s3tools.org/somewhere
Dan
get s3://public.s3tools.org/somewhere/
(perhatikan garis miring di belakangnya)
s3cmd
selalu menggunakan bagian path terakhir, yaitu kata setelah garis miring terakhir, untuk memberi nama file.
Dalam kasus s3://.../somewhere
bagian jalur terakhir adalah 'suatu tempat' dan oleh karena itu get rekursif memberi nama file lokal sebagai suatu tempat/dir1, suatu tempat/dir2, dll.
Di sisi lain di s3://.../somewhere/
bagian jalur terakhir kosong dan s3cmd hanya akan membuat 'dir1' dan 'dir2' tanpa awalan 'somewhere/':
$ s3cmd get --recursive s3://public.s3tools.org/somewhere/ ~/
File s3://public.s3tools.org/somewhere/dir1/file1-1.txt saved as '~/dir1/file1-1.txt'
File s3://public.s3tools.org/somewhere/dir1/file1-2.txt saved as '~/dir1/file1-2.txt'
File s3://public.s3tools.org/somewhere/dir1/file1-3.log saved as '~/dir1/file1-3.log'
File s3://public.s3tools.org/somewhere/dir2/file2-1.bin saved as '~/dir2/file2-1.bin'
Melihat? Ini ~/dir1
dan bukan ~/somewhere/dir1
seperti pada contoh sebelumnya.
Hapus semuanya di bawah s3://public.s3tools.org/somewhere/
$ s3cmd del --recursive s3://public.s3tools.org/somewhere/
File s3://public.s3tools.org/somewhere/dir1/file1-1.txt deleted
File s3://public.s3tools.org/somewhere/dir1/file1-2.txt deleted
...
Sekarang coba keluarkan embernya:
$ s3cmd rb s3://public.s3tools.org
ERROR: S3 error: 409 (BucketNotEmpty): The bucket you tried to delete is not empty
Aduh, kami lupa tentang s3://public.s3tools.org/somefile.xml
. Kami tetap dapat memaksa penghapusan bucket:
$ s3cmd rb --force s3://public.s3tools.org/
WARNING: Bucket is not empty. Removing all the objects from it first. This may take some time...
File s3://public.s3tools.org/somefile.xml deleted
Bucket 's3://public.s3tools.org/' removed
Penggunaan dasarnya sesederhana yang dijelaskan di bagian sebelumnya.
Anda dapat meningkatkan tingkat verbositas dengan opsi -v
dan jika Anda benar-benar ingin mengetahui apa yang dilakukan program di bawah kapnya, jalankan dengan -d
untuk melihat semua keluaran 'debugging'.
Setelah mengonfigurasinya dengan --configure
semua opsi yang tersedia dimasukkan ke dalam file ~/.s3cfg
Anda. Ini adalah file teks yang siap dimodifikasi di editor teks favorit Anda.
Perintah Transfer (put, get, cp, mv, dan sync) terus mentransfer meskipun objek gagal. Jika terjadi kegagalan, kegagalan tersebut dikeluarkan ke stderr dan status keluarnya adalah EX_PARTIAL (2). Jika opsi --stop-on-error
ditentukan, atau opsi konfigurasi stop_on_error benar, transfer akan berhenti dan kode kesalahan yang sesuai akan dikembalikan.
Untuk informasi lebih lanjut, lihat beranda S3cmd / S3tools.
Hak Cipta (C) 2007-2023 Perangkat Lunak TGRMN (https://www.tgrmn.com), Sodria SAS (https://www.sodria.com/) dan kontributor
Program ini adalah perangkat lunak bebas; Anda dapat mendistribusikan ulang dan/atau memodifikasinya berdasarkan ketentuan Lisensi Publik Umum GNU yang diterbitkan oleh Free Software Foundation; baik versi 2 Lisensi, atau (sesuai pilihan Anda) versi yang lebih baru.
Program ini disebarluaskan dengan harapan dapat bermanfaat, namun TANPA JAMINAN APA PUN; bahkan tanpa jaminan tersirat mengenai KELAYAKAN UNTUK DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat Lisensi Publik Umum GNU untuk lebih jelasnya.