Menyalin data dari Google Cloud Storage ke Azure Storage dengan menggunakan AzCopy

AzCopy adalah utilitas baris perintah yang dapat Anda gunakan untuk menyalin gumpalan atau file ke atau dari akun penyimpanan. Artikel ini membantu Anda menyalin objek, direktori, dan wadah dari Google Cloud Storage ke Azure Blob Storage menggunakan AzCopy.

Pilih bagaimana Anda akan memberikan kredensial otorisasi

  • Untuk mengotorisasi dengan Azure Storage, gunakan ID Microsoft Entra atau token Tanda Tangan Akses Bersama (SAS).

  • Untuk mengotorisasi dengan Google Cloud Storage, gunakan kunci akun layanan.

Otorisasi dengan Azure Storage

Lihat artikel Mulai menggunakan AzCopy untuk mengunduh AzCopy dan pelajari tentang cara memberikan informasi masuk otorisasi ke layanan penyimpanan.

Catatan

Contoh dalam artikel ini mengasumsikan bahwa Anda telah memberikan kredensial otorisasi dengan menggunakan ID Microsoft Entra.

Jika Anda lebih memilih menggunakan token SAS untuk otorisasi akses ke data blob, Anda dapat menambahkan token tersebut ke URL sumber daya di setiap perintah AzCopy. Sebagai contoh: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

Otorisasi dengan Google Cloud Storage

Untuk mengotorisasi dengan Google Cloud Storage, Anda akan menggunakan kunci akun layanan. Untuk informasi tentang cara membuat kunci akun layanan, lihat Membuat dan mengelola kunci akun layanan.

Setelah Anda mendapatkan kunci layanan, atur GOOGLE_APPLICATION_CREDENTIALS variabel lingkungan ke jalur absolut ke file kunci akun layanan:

Sistem operasi Perintah
Windows set GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key>
Linux export GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key>
macOS export GOOGLE_APPLICATION_CREDENTIALS=<path-to-service-account-key>

Menyalin objek, direktori, dan wadah

AzCopy menggunakan API Put Block From URL, sehingga data disalin langsung antara Google Cloud Storage dan server penyimpanan. Operasi salin ini tidak menggunakan bandwidth jaringan komputer Anda.

Tip

Contoh dalam bagian ini mengapit argumen jalur dengan tanda kutip tunggal (''). Gunakan tanda kutip tunggal di semua shell perintah kecuali Windows Command Shell (cmd.exe). Jika Anda menggunakan Windows Command Shell (cmd.exe), sertakan argumen jalur dengan tanda kutip ganda ("") dan bukan tanda kutip tunggal ('').

Contoh-contoh ini juga bekerja dengan akun yang memiliki namespace hierarkis. Akses multiprotokol pada Data Lake Storage memungkinkan Anda menggunakan sintaks URL yang sama (blob.core.windows.net) pada akun tersebut.

Menyalin objek

Menggunakan sintaks URL yang sama (blob.core.windows.net) untuk akun yang memiliki namespace hierarkis.

Sintaks

azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'

Contoh

azcopy copy 'https://storage.cloud.google.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'

Menyalin direktori

Menggunakan sintaks URL yang sama (blob.core.windows.net) untuk akun yang memiliki namespace hierarkis.

Sintaks

azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

Contoh

azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Catatan

Contoh ini menambahkan bendera --recursive untuk menyalin file di semua subdirektori.

Menyalin konten direktori

Anda dapat menyalin konten direktori tanpa menyalin direktori yang memuatnya dengan menggunakan simbol kartubebas (*).

Sintaks

azcopy copy 'https://storage.cloud.google.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true

Contoh

azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

Menyalin wadah Cloud Storage

Menggunakan sintaks URL yang sama (blob.core.windows.net) untuk akun yang memiliki namespace hierarkis.

Sintaks

azcopy copy 'https://storage.cloud.google.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

Contoh

azcopy copy 'https://storage.cloud.google.com/mybucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Menyalin semua wadah dalam project Google Cloud

Pertama, tetapkan GOOGLE_CLOUD_PROJECT ke ID project dari project Google Cloud.

Menggunakan sintaks URL yang sama (blob.core.windows.net) untuk akun yang memiliki namespace hierarkis.

Sintaks

azcopy copy 'https://storage.cloud.google.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

Contoh

azcopy copy 'https://storage.cloud.google.com/' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Menyalin subset wadah di project Google Cloud

Pertama, tetapkan GOOGLE_CLOUD_PROJECT ke ID project dari project Google Cloud.

Salin subset wadah menggunakan simbol kartubebas (*) dalam nama wadah. Menggunakan sintaks URL yang sama (blob.core.windows.net) untuk akun yang memiliki namespace hierarkis.

Sintaks

azcopy copy 'https://storage.cloud.google.com/<bucket*name>' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true

Contoh

azcopy copy 'https://storage.cloud.google.com/my*bucket' 'https://mystorageaccount.blob.core.windows.net' --recursive=true

Menangani perbedaan dalam aturan penamaan wadah

Google Cloud Storage memiliki serangkaian konvensi penamaan yang berbeda untuk nama wadah dibandingkan dengan kontainer blob Azure. Anda dapat membaca tentang semua itu di sini. Jika Anda memilih untuk menyalin sekelompok wadah ke akun penyimpanan Azure, operasi salin mungkin gagal karena perbedaan penamaan.

AzCopy menangani tiga masalah paling umum yang dapat muncul; wadah yang terdapat tanda titik, wadah yang terdapat tanda hubung berturut-turut, dan wadah yang terdapat garis bawah. Nama wadah Google Cloud Storage bisa terdapat tanda titik dan tanda hubung berturut-turut, tetapi kontainer di Azure tidak bisa. AzCopy mengganti tanda titik dengan tanda hubung dan tanda hubung berturut-turut dengan angka yang menunjukkan jumlah tanda hubung berturut-turut (Misalnya: wadah bernama my----bucket menjadi my-4-bucket. Jika nama wadah memiliki garis bawah (_), maka AzCopy mengganti garis bawah dengan tanda hubung. Contohnya, wadah bernama my_bucket menjadi my-bucket.

Menangani perbedaan dalam aturan penamaan objek

Google Cloud Storage memiliki serangkaian konvensi penamaan yang berbeda untuk nama objek dibandingkan dengan kontainer blob Azure. Anda dapat membaca tentang semua itu di sini.

Azure Storage tidak mengizinkan nama objek (atau segmen apa pun di jalur direktori virtual) berakhir dengan titik-titik berikutnya (Misalnya my-bucket...). Titik-titik berikutnya dipangkas saat dilakukan operasi salin.

Menangani perbedaan dalam metadata objek

Google Cloud Storage dan Azure mengizinkan set karakter yang berbeda dalam nama kunci objek. Anda dapat membaca metadata di Google Cloud Storage di sini. Di sisi Azure, kunci objek blob mematuhi aturan penamaan untuk pengidentifikasi C#.

Sebagai bagian dari perintah AzCopycopy, Anda dapat memberikan nilai untuk opsional s2s-handle-invalid-metadata bendera yang menentukan cara Anda ingin menangani file tempat metadata file berisi nama kunci yang tidak kompatibel. Tabel berikut ini menguraikan setiap nilai bendera.

Nilai bendera Deskripsi
ExcludeIfInvalid (Opsi default) Metadata tidak disertakan dalam objek yang ditransfer. AzCopy mencatat peringatan.
FailIfInvalid Objek tidak disalin. AzCopy mencatat kesalahan dan menyertakan kesalahan tersebut dalam hitungan gagal yang muncul dalam ringkasan transfer.
RenameIfInvalid AzCopy menyelesaikan kunci metadata yang tidak valid, dan menyalin objek ke Azure menggunakan pasangan nilai kunci metadata yang diselesaikan. Untuk mempelajari dengan tepat langkah apa yang digunakan oleh AzCopy untuk mengganti nama kunci objek, lihat bagian Bagaimana AzCopy mengganti nama kunci objek di bawah ini. Jika AzCopy tidak dapat mengganti nama kunci, maka objek tidak akan disalin.

Cara AzCopy mengganti nama kunci objek

AzCopy melakukan langkah-langkah berikut:

  1. Mengganti karakter yang tidak valid dengan '_'.

  2. Menambahkan string rename_ ke awal kunci baru yang valid.

    Kunci ini akan digunakan untuk menyimpan nilai metadata asli.

  3. Menambahkan string rename_key_ ke awal kunci baru yang valid. Kunci ini akan digunakan untuk menyimpan kunci metadata asli. Anda dapat menggunakan kunci ini untuk mencoba memulihkan metadata di sisi Azure karena kunci metadata dipertahankan sebagai nilai pada layanan penyimpanan Blob.

Langkah berikutnya

Temukan contoh lainnya dalam artikel ini:

Lihat artikel ini untuk mengonfigurasi pengaturan, mengoptimalkan performa, dan memecahkan masalah: