Adatok másolása az Amazon S3-ból az Azure Storage-ba az AzCopy használatával
Az AzCopy egy parancssori segédprogram, amellyel blobokat és fájlokat másolhat a tárfiókok között. Ez a cikk segít objektumokat, könyvtárakat és gyűjtőket másolni az Amazon Web Services (AWS) S3-ból az Azure Blob Storage-ba az AzCopy használatával.
Feljegyzés
Az AzCopy támogatja az AWS által definiált szabványos, virtuális üzemeltetésű vagy elérésiút-stílusú URL-címeket. Például: https://bucket.s3.amazonaws.com
vagy https://s3.amazonaws.com/bucket
.
Az engedélyezési hitelesítő adatok megadására szolgáló mód kiválasztása
Az Azure Storage-beli engedélyezéshez használja a Microsoft Entra-azonosítót vagy a közös hozzáférésű jogosultságkód (SAS) jogkivonatot.
Az AWS S3-nal való engedélyezéshez használjon AWS hozzáférési kulcsot és titkos hozzáférési kulcsot.
Engedélyezés az Azure Storage-ral
Az AzCopy letöltéséhez tekintse meg az AzCopy használatának első lépéseit ismertető cikket, és adja meg, hogyan adja meg az engedélyezési hitelesítő adatokat a tárolási szolgáltatásnak.
Feljegyzés
A cikkben szereplő példák feltételezik, hogy a parancs használatával hitelesítette az AzCopy login
identitását. Az AzCopy ezután a Microsoft Entra-fiókjával engedélyezi az adatokhoz való hozzáférést a Blob Storage-ban.
Ha inkább SAS-jogkivonatot használ a blobadatokhoz való hozzáférés engedélyezéséhez, akkor ezt a jogkivonatot az egyes AzCopy-parancsok erőforrás-URL-címéhez fűzheti.
Például: https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>
Engedélyezés az AWS S3 használatával
Gyűjtse össze az AWS hozzáférési kulcsát és titkos hozzáférési kulcsát, majd állítsa be az alábbi környezeti változókat:
Operációs rendszer | Parancs |
---|---|
Windows | Powershell:$env:AWS_ACCESS_KEY_ID=<access-key> $env:AWS_SECRET_ACCESS_KEY=<secret-access-key> Parancssorban használja a következőt: set AWS_ACCESS_KEY_ID=<access-key> set AWS_SECRET_ACCESS_KEY=<secret-access-key> |
Linux | export AWS_ACCESS_KEY_ID=<access-key> export AWS_SECRET_ACCESS_KEY=<secret-access-key> |
macOS | export AWS_ACCESS_KEY_ID=<access-key> export AWS_SECRET_ACCESS_KEY=<secret-access-key> |
Ezek a hitelesítő adatok az objektumok másolásához használt előre aláírt URL-címek létrehozására szolgálnak.
Objektumok, könyvtárak és gyűjtők másolása
Az AzCopy a Put Block From URL API-t használja, így az adatok közvetlenül az AWS S3 és a tárolókiszolgálók között lesznek másolva. Ezek a másolási műveletek nem használják a számítógép hálózati sávszélességét.
Tipp.
Az ebben a szakaszban szereplő példák az elérési utak argumentumait egyetlen idézőjelekkel ('' ) egészítik ki. A Windows parancshéj (cmd.exe) kivételével minden parancshéjban használjon egyetlen idézőjelet. Ha Windows Command Shellt (cmd.exe) használ, az elérésiút-argumentumokat idézőjelek ("") helyett dupla idézőjelekkel ("") foglalja össze.
Ezek a példák hierarchikus névtérrel rendelkező fiókokkal is működnek. A Data Lake Storage többprotokollos hozzáférése lehetővé teszi ugyanazon URL-szintaxis (blob.core.windows.net
) használatát ezeken a fiókokon.
Objektum másolása
Használja ugyanazt az URL-szintaxist (blob.core.windows.net
) a hierarchikus névtérrel rendelkező fiókokhoz.
Szintaxis
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'
Példa
azcopy copy 'https://s3.amazonaws.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'
Feljegyzés
A cikkben szereplő példák elérésiút-stílusú URL-címeket használnak az AWS S3 gyűjtőkhöz (például: http://s3.amazonaws.com/<bucket-name>
).
Virtuális üzemeltetett stílusú URL-címeket is használhat (például: http://bucket.s3.amazonaws.com
).
A gyűjtők virtuális üzemeltetéséről további információt a Gyűjtők virtuális üzemeltetése című témakörben talál.
Könyvtár másolása
Használja ugyanazt az URL-szintaxist (blob.core.windows.net
) a hierarchikus névtérrel rendelkező fiókokhoz.
Szintaxis
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
Példa
azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Feljegyzés
Ez a példa hozzáfűzi a jelölőt az --recursive
összes alkönyvtár fájljainak másolásához.
Könyvtár tartalmának másolása
A könyvtár tartalmát anélkül másolhatja, hogy magát a könyvtárat a helyettesítő karakter (*) használatával másolta.
Szintaxis
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
Példa
azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Gyűjtő másolása
Használja ugyanazt az URL-szintaxist (blob.core.windows.net
) a hierarchikus névtérrel rendelkező fiókokhoz.
Szintaxis
azcopy copy 'https://s3.amazonaws.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive=true
Példa
azcopy copy 'https://s3.amazonaws.com/mybucket' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive=true
Az összes gyűjtő másolása az összes régióban
Használja ugyanazt az URL-szintaxist (blob.core.windows.net
) a hierarchikus névtérrel rendelkező fiókokhoz.
Szintaxis
azcopy copy 'https://s3.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Példa
azcopy copy 'https://s3.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Egy adott S3 régió összes gyűjtőjének másolása
Használja ugyanazt az URL-szintaxist (blob.core.windows.net
) a hierarchikus névtérrel rendelkező fiókokhoz.
Szintaxis
azcopy copy 'https://s3-<region-name>.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Példa
azcopy copy 'https://s3-rds.eu-north-1.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Az objektumelnevezési szabályok különbségének kezelése
Az AWS S3 különböző elnevezési konvenciókkal rendelkezik a gyűjtőnevekhez az Azure Blob-tárolókhoz képest. Ezekről itt olvashat. Ha egy gyűjtőcsoportot egy Azure Storage-fiókba másol, az elnevezési különbségek miatt a másolási művelet meghiúsulhat.
Az AzCopy a két leggyakoribb problémát kezeli, amelyek felmerülhetnek; olyan gyűjtők, amelyek egymást követő kötőjeleket tartalmazó időszakokat és gyűjtőket tartalmaznak. Az AWS S3 gyűjtőnevek tartalmazhatnak pontokat és egymást követő kötőjeleket, de az Azure-beli tárolók nem. Az AzCopy az időszakokat kötőjelekre és egymást követő kötőjelekre cseréli egy olyan számra, amely az egymást követő kötőjelek számát jelöli (például egy elnevezett my----bucket
gyűjtő lesz my-4-bucket
.
Emellett, ahogy az AzCopy átmásolja a fájlokat, ellenőrzi az elnevezési ütközéseket, és megpróbálja feloldani őket. Ha például vannak olyan gyűjtők, amelyek a névvel bucket-name
vannak elnevezve, és bucket.name
az AzCopy először bucket-name
bucket-name-2
a következőre old fel egy gyűjtőtbucket.name
.
Az objektum metaadatai közötti különbségek kezelése
Az AWS S3 és az Azure különböző karakterkészleteket engedélyez az objektumkulcsok nevében. Az AWS S3 által használt karakterekről itt olvashat. Az Azure-oldalon a blobobjektum-kulcsok megfelelnek a C#-azonosítók elnevezési szabályainak.
Az AzCopy-parancs copy
részeként megadhat egy értéket a választható s2s-handle-invalid-metadata
jelzőhöz, amely meghatározza, hogyan szeretné kezelni azokat a fájlokat, amelyek metaadatai nem kompatibilis kulcsneveket tartalmaznak. Az alábbi táblázat az egyes jelölőértékeket ismerteti.
Jelölőérték | Leírás |
---|---|
ExcludeIfInvalid | (Alapértelmezett beállítás) A metaadatok nem szerepelnek az átvitt objektumban. Az AzCopy figyelmeztetést naplóz. |
FailIfInvalid | Az objektumok nem lesznek másolva. Az AzCopy naplóz egy hibát, és tartalmazza ezt a hibát az átviteli összegzésben megjelenő sikertelen számban. |
RenameIfInvalid | Az AzCopy feloldja az érvénytelen metaadatkulcsot, és a feloldott metaadatkulcs-érték pár használatával átmásolja az objektumot az Azure-ba. Ha tudni szeretné, hogy az AzCopy pontosan milyen lépéseket tesz az objektumkulcsok átnevezéséhez, tekintse meg az alábbi, Hogyan nevezi át az AzCopy az objektumkulcsokat ? Ha az AzCopy nem tudja átnevezni a kulcsot, akkor az objektum nem lesz másolva. |
Az AzCopy átnevezi az objektumkulcsokat
Az AzCopy a következő lépéseket hajtja végre:
Érvénytelen karaktereket a "_" karakterre cserél.
Hozzáadja a sztringet
rename_
egy új érvényes kulcs elejéhez.Ezzel a kulccsal mentheti az eredeti metaadat-értéket.
Hozzáadja a sztringet
rename_key_
egy új érvényes kulcs elejéhez. Ez a kulcs az eredeti metaadatok érvénytelen kulcsának mentésére szolgál. Ezzel a kulccsal megpróbálhatja helyreállítani a metaadatokat az Azure-beli oldalon, mivel a metaadatkulcs értékként megmarad a Blob Storage szolgáltatásban.
Következő lépések
További példákat az alábbi cikkekben talál:
- Példák: Feltöltés
- Példák: Letöltés
- Példák: Másolás fiókok között
- Példák: Szinkronizálás
- Példák: Google Cloud Storage
- Példák: Azure Files
- Oktatóanyag: Helyszíni adatok migrálása felhőbeli tárolóba az AzCopy használatával
A beállítások konfigurálásához, a teljesítmény optimalizálásához és a problémák elhárításához tekintse meg ezeket a cikkeket:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: