Saya ingin menggunakan AWS S3 cli untuk menyalin struktur direktori lengkap ke ember S3.
Sejauh ini, semua yang saya coba salin file ke ember, tetapi struktur direktori runtuh. (untuk mengatakannya dengan cara lain, setiap file disalin ke direktori root ember)
Perintah yang saya gunakan adalah:
aws s3 cp --recursive ./logdata/ s3://bucketname/
Saya juga telah mencoba meninggalkan garis miring pada penunjukan sumber saya (yaitu, salinan dari argumen). Saya juga menggunakan wildcard untuk menunjuk semua file ... setiap hal yang saya coba cukup menyalin file log ke direktori root ember.
aws s3 cp --recursive mylocalsrcdir s3://bucket/
kemudian hanya akan meletakkan file di repositori lokal Anda di "direktori root" ember Jika Anda melakukannyaaws s3 cp --recursive mydirectory s3://bucket/mydirectory
maka itu akan menciptakan kembali struktur direktori pada akhir target.Jawaban:
Saya percaya sinkronisasi adalah metode yang Anda inginkan. Coba ini sebagai gantinya:
sumber
aws s3 sync ./logdata s3://bucketname/logdata
Terima kasih atas petunjuknya. --- vSaya menghadapi kesalahan ini saat menggunakan salah satu dari perintah ini.
Saya bahkan berpikir untuk memasang bucket S3 secara lokal dan kemudian menjalankan rsync, bahkan yang gagal (atau macet selama beberapa jam) karena saya memiliki ribuan file.
Akhirnya, s3cmd bekerja seperti pesona.
Ini tidak hanya bekerja dengan baik dan menunjukkan output yang cukup jelas di konsol, tetapi juga mengunggah file besar di beberapa bagian.
sumber
Berikut ini bekerja untuk saya:
aws s3 cp ~/this_directory s3://bucketname/this_directory --recursive
AWS kemudian akan "membuat"
this_directory
dan menyalin semua konten lokal ke dalamnya.sumber
Gunakan skrip berikut untuk menyalin struktur folder:
sumber
Saya tidak bisa
s3 sync
ataus3 cp
bekerja pada folder 55 GB dengan ribuan file dan lebih dari 2 lusin subdirektori di dalamnya. Mencoba menyinkronkan seluruh folder hanya akan menyebabkan awscli gagal diam-diam tanpa mengunggah apa pun ke ember.Akhirnya melakukan ini untuk pertama-tama menyinkronkan semua subdirektori dan kontennya (struktur folder dipertahankan):
Lalu saya melakukan ini untuk mendapatkan 30.000 file di tingkat atas:
Pastikan untuk menonton beban di server (protip yang dapat Anda gunakan
w
untuk hanya menunjukkan beban) danctrl-z
untuk menunda perintah jika memuat terlalu tinggi. (fg
untuk melanjutkan lagi).Menempatkan ini di sini kalau-kalau itu membantu siapa pun dalam situasi yang sama.
Catatan:
-mindepth 1
tidak termasuk.
-maxdepth 1
mencegah menemukan dari daftar isi sub-direktori, karenas3 sync
menangani mereka dengan sukses.cut -c 3-
menghapus "./" dari awal setiap hasil dari find.sumber
Atau Anda juga dapat mencoba minio client alias mc
Semoga ini bisa membantu.
PS: Saya salah satu penyumbang proyek.
sumber
(Meningkatkan solusi Shishir )
s3Copy.sh
)/PATH/TO/s3Copy.sh /PATH/TO/ROOT/DIR/OF/SOURCE/FILESandDIRS PATH/OF/S3/BUCKET
Misalnya jika
s3Copy.sh
disimpan di direktori home dan saya ingin menyalin semua file dan direktori yang berada di direktori saat ini, maka saya menjalankan ini:~/s3Copy.sh . s3://XXX/myBucket
Anda dapat dengan mudah memodifikasi script untuk memungkinkan argumen lain
s3 cp
seperti--include
,--exclude
...sumber