Aws-cli: sinkronisasi aws s3 tidak menyinkronkan struktur folder s3 secara lokal

Dibuat pada 12 Sep 2014  ·  100Komentar  ·  Sumber: aws/aws-cli

Sinkronisasi aws s3 tidak sepenuhnya menyinkronkan struktur folder S3 secara lokal bahkan jika saya menggunakannya dengan argumen --delete atau --recursive:

aws --versi
aws-cli / 1.4.3 Python / 2.7.6 Linux / 3.13.0-35-generic

$aws s3 ls s3: //s3.testbucket
$aws s3 ls s3: //s3.testbucket/
$mkdir s3.testfolder
$mkdir s3.testfolder / test1
$aws s3 sync ./s3.testfolder s3: //s3.testbucket/
$aws s3 ls s3: //s3.testbucket/
$ sentuh s3.testfolder / test1 / 1
$aws s3 sync ./s3.testfolder/ s3: //s3.testbucket/
unggah: s3.testfolder / test1 / 1 ke s3: //s3.testbucket/test1/1
$aws s3 sync ./s3.testfolder s3: //s3.testbucket/
$ mkdir ./s3.testfolder/test-to-delete
$aws s3 sync s3: //s3.testbucket/ ./s3.testfolder/ --delete --recursive
$aws s3 sync s3: //s3.testbucket/ ./s3.testfolder/ --delete
$ ls -lah ./s3.testfolder/
total 60K
drwxrwxr-x 4 tobi tobi 4.0K szept 12 15:24.
drwx ------ 71 tobi tobi 44K szept 12 15:22 ..
drwxrwxr-x 2 tobi tobi 4.0K szept 12 15:23 test1
drwxrwxr-x 2 tobi tobi 4.0K szept 12 15:24 tes-untuk-menghapus

$aws s3 ls s3: //s3.testbucket/
tes pra1 /

feature-request s3 s3sync

Komentar yang paling membantu

Berdasarkan umpan balik komunitas, kami telah memutuskan untuk mengembalikan permintaan fitur ke masalah GitHub.

Semua 100 komentar

Perilaku ini diketahui. Alasan mengapa perintah sync berperilaku seperti ini adalah karena s3 tidak menggunakan direktori secara fisik. Hanya ada ember dan benda. Objek memiliki awalan yang bertindak seperti direktori, tetapi s3 tidak menunjuk objek fisik tertentu untuk menjadi direktori.

Oleh karena itu, ketika sinkronisasi terjadi, hanya file yang ditransfer ke s3 karena s3 tidak memiliki direktori fisik. Jadi ketika Anda mencoba menyinkronkan direktori kosong, tidak ada yang diunggah karena tidak ada file di dalamnya. Setelah Anda meletakkan item di direktori, maka file (dengan awalan yang mewakili direktori) akan diunggah.

Terima kasih Kyle, sudah jelas. Saya tahu bagaimana S3 menyimpan file, tetapi terkadang kita memerlukan struktur direktori yang sama di beberapa tempat meskipun ada yang kosong atau hapus dari jika kita tidak membutuhkannya lagi.
Contoh yang bagus jika Anda memiliki struktur direktori yang kompleks dengan banyak konten lokal daripada yang Anda sinkronkan ke S3. Setelah itu mekanisme otomatis menyinkronkan struktur ini secara berkala ke beberapa instance yang sedang berjalan. Anda tetap up-to-date (menghapus) sebagian besar konten dari S3 kemudian otomatisme menyinkronkan ulang ke tempat-tempat yang Anda gunakan sebelumnya. Sayangnya Anda akan menemukan struktur direktori kompleks asli tetap selamanya pada target sinkronisasi yang dapat menyebabkan kebingungan jika Anda ingin memeriksanya atau program Anda mencoba menggunakan folder kosong ini karena Anda harus selalu sama di mana-mana. Selain itu orang-orang yang menggunakannya dengan --delete opsi mungkin menggunakan "rsync" yang setara sebelumnya di Linux yang membuat folder tetap disinkronkan sehingga mengandalkan operasi yang sama.
Saya pikir tidak akan sulit untuk menerapkan sakelar atau opsi untuk alat aws untuk mendeteksi entah bagaimana jika objek S3 adalah file atau folder (daftar, ukuran, dll.) dan membuat/menghapusnya secara lokal atau dalam ember S3 (mis. daftar(ember.daftar("", "/"))?

Itu masuk akal. Akan melihat untuk menambahkan fitur untuk itu.

Ini akan sangat berguna untuk situasi kita juga. Jika ditambahkan sebagai opsi (--sync-empty-directory) orang dapat memilih untuk menggunakannya saat diperlukan.

+1 Sangat membutuhkan fitur ini

+1. Ingin menggunakannya.

+1

Saya juga terkejut dengan perilaku ini, mengingat itu disebut "sinkronisasi".
Saya dapat mengatasi ini dalam kasus penggunaan khusus saya, tetapi pengguna masa depan dapat terhindar dari rasa sakit :)

+1 untuk dapat menyinkronkan struktur direktori! Jika Anda menghapus folder, itu hanya menghapus konten, tetapi meninggalkan folder di belakang...

+1. Saya memiliki kebutuhan yang sama.

+1 - terkejut karena belum diimplementasikan. Tentu, dalam kasus saya itu tidak terlalu penting, dan saya dapat mengatasinya (atau hanya menggunakan file placeholder saat membuat struktur), tetapi akan bermanfaat jika didukung oleh sinkronisasi s3 atau s3 cp.

+1

s3cmd sync mempertahankan struktur folder tetapi karena itu memiliki beberapa masalah saat memberikan akses saat menyinkronkan sehingga seseorang perlu menjalankan s3cmd setacl --recursive setelahnya…

+1

+1

+1

Terima kasih atas umpan balik semua orang. Saya pikir opsi terbaik yang pernah saya lihat adalah menambahkan opsi --sync-empty-directories . Mari kita lakukan itu.

@jamesls Saya mengharapkan fungsionalitas seperti rsync, tetapi s3 sebagai penyimpanan objek jelas tidak sama.

+1

+1

Adakah timeline untuk fitur ini?

Sebagai solusi sementara saya menambahkan file .s3keep kosong ke direktori kosong dan itu berfungsi untuk saya. Ini adalah peretasan yang biasanya saya gunakan untuk mengelabui git agar tidak memperlakukan direktori kosong sebagai direktori kosong :)

Apakah ini juga memungkinkan untuk "menghapus/menghapus" direktori kosong di S3?

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

_Masuk akal selama migrasi data ke s3._

+1

+1 Baru saja dihancurkan oleh ini... Arg....

+1

+10
Dimungkinkan untuk mengatasi ini dengan file dummy tetapi akan lebih bersih jika akan ada opsi untuk memaksa awalan kosong untuk disinkronkan.

+1. Kasus penggunaan: mencadangkan repositori svn.

Lebih umum:
hal sinkronisasi aws s3
sinkronisasi aws s3hal_copy

Saya berharap thing_copy cocok dengan persis.

+1

+1

+1

+1 perlu menghapus direktori kosong

Bagaimana kemajuan penambahan opsi ini --sync-empty-directories ?
ada tanggapan dari Tim AWS?
Terima kasih.

+1 akan menjadi fitur yang sangat berguna untuk alat yang sangat berguna

+1

+1 (Saya juga berharap fitur ini diterapkan dan berharap Github.com memiliki antarmuka seperti StackOverflow.com untuk "memilih" pada masalah/fitur).

+1

+1

+1

+1

+1

2+ tahun kemudian dan itu masih belum terjadi.. ? akankah itu pernah? =/

+1

+1

+1

+1

+1000

+1

Saya melakukan beberapa penggalian tentang bagaimana ini bisa diimplementasikan. Semua perintah s3 akhirnya menggunakan TransferManager dari perpustakaan s3transfer . ( dirujuk di sini )

Untuk mendukung penambahan folder dengan PutObject kita bisa mengirimkan string kosong di param Body. Saya tidak tahu apakah ini didukung secara resmi. Saya menerapkan ini di sini:
https://github.com/svleeuwen/s3transfer/commit/b7d3745a995a75c5262950bb798c8c57e481c2b3

Saya ingin beberapa umpan balik tentang ini dari pengelola sebelum melanjutkan.

+1

solusi saya adalah memasang ember saya dengan s3fs dan rsync dari s3 mount ke direktori di direktori home saya.

+1

+1 sangat membutuhkan ini ...

+1

Buka sejak 2014? Betulkah? :tidak senang:

+1

+1

+1

+1

+1

+1

+1

+1

+1

@thenetimp Solusi ini baik untuk ember kecil. Kami menggunakan ember dengan lebih dari 15TB. S3FS menjadi sangat lambat dengan ember yang lebih besar.

+1

Selamat pagi!

Kami menutup masalah ini di sini di GitHub, sebagai bagian dari migrasi kami ke UserVoice untuk permintaan fitur yang melibatkan AWS CLI.

Ini akan memungkinkan kami mendapatkan fitur yang paling penting bagi Anda, dengan mempermudah pencarian dan menunjukkan dukungan untuk fitur yang paling Anda pedulikan, tanpa mengurangi percakapan dengan laporan bug.

Sebagai primer UserVoice cepat (jika belum terbiasa): setelah sebuah ide diposting, orang dapat memilih ide tersebut, dan tim produk akan langsung menanggapi saran yang paling populer.

Kami telah mengimpor permintaan fitur yang ada dari GitHub - Cari masalah ini di sana!

Dan jangan khawatir, masalah ini akan tetap ada di GitHub demi anak cucu. Karena ini adalah impor teks saja dari posting asli ke UserVoice, kami akan tetap mengingat komentar dan diskusi yang sudah ada di sini pada masalah GitHub.

GitHub akan tetap menjadi saluran untuk melaporkan bug.

Sekali lagi, masalah ini sekarang dapat ditemukan dengan mencari judul di: https://aws.uservoice.com/forums/598381-aws-command-line-interface

-Tim Alat & SDK AWS

Entri ini secara khusus dapat ditemukan di UserVoice di: https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168436-aws-s3-sync-does-not-synchronize-s3- folder-struktur

bagus sekali Andre, tutup sebuah masalah dan beri kami tautan yang tidak terkait dengan masalah tersebut. Dari semua postingan yang tidak berguna

Boilerplate generik mengecewakan. Saya pikir garis antara permintaan fitur dan laporan bug bisa sangat kabur. Untuk menyelamatkan orang dari pencarian posting UserVoice untuk permintaan fitur ini tersedia di https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168436-aws-s3-sync-does-not -sinkronisasi-s3-folder-struktur

Berdasarkan umpan balik komunitas, kami telah memutuskan untuk mengembalikan permintaan fitur ke masalah GitHub.

+1

+1

+1

+1

+1

+1

+1. Akan menjadi fitur yang bagus untuk ditambahkan.

+1

+1

Masalah yang sama
awscli==1.16.74

+1

-1

Perintah sync aws s3 sudah rekursif, jadi tidak perlu opsi rekursif, Selain itu perintah sync hanya menyalin hal-hal yang belum ada di tujuan. Jika Anda mengarahkan ke folder, itu akan secara rekursif menyinkronkan semua yang ada di dalamnya yang belum ada di tujuan target Anda. Ini berbeda dengan perintah aws s3 cp. Perintah cp menyalin apa pun yang Anda perintahkan, terlepas dari itu sudah ada pada target. Perintah cp/mv/rb mengambil opsi --recursive untuk menyalin/memindahkan/menghapus folder/file secara rekursif. Terima kasih

@3ggaurav masalahnya berasal dari 2014 ketika saya ingat sync memiliki opsi --recursive .

Selain itu jika Anda akan mengutip jawaban stack overflow kata demi kata, umumnya praktik yang baik untuk merujuk/memberikan kredit padanya.

Jawaban stack overflow ada di sini.

Masih tidak ada kemajuan dalam hal ini?

+1

Apakah halaman ini membantu?
0 / 5 - 0 peringkat