Dela via


Överföra data med AzCopy v7 i Linux

AzCopy är ett kommandoradsverktyg som har utformats för att kopiera data till och från Microsoft Azure Blob- och File-lagring med enkla kommandon för optimala prestanda. Du kan kopiera data mellan ett filsystem och ett lagringskonto, eller mellan lagringskonton.

Viktigt!

Den här artikeln beskriver en äldre version av AzCopy. Information om hur du installerar den senaste versionen av AzCopy finns i AzCopy v10.

Kommentar

Från och med AzCopy 7.2-versionen paketeras .NET Core-beroendena med AzCopy-paketet. Om du använder version 7.2 eller senare behöver du inte längre installera .NET Core som en förutsättning.

Ladda ned och installera AzCopy

Installation på Linux

Kommentar

Du kan behöva installera .NET Core 2.1-beroenden som är markerade i den här artikeln om .NET Core-förutsättningar beroende på din distribution.

Installera ICU- och libunwind-beroenden för RHEL 7-distributioner: yum install -y libunwind icu

Det är lika enkelt att installera AzCopy på Linux (v7.2 eller senare) som att extrahera ett tjärpaket och köra installationsskriptet.

RHEL 6-baserade distributioner: nedladdningslänk

wget -O azcopy.tar.gz https://aka.ms/downloadazcopylinuxrhel6
tar -xf azcopy.tar.gz
sudo ./install.sh

Alla andra Linux-distributioner: nedladdningslänk

wget -O azcopy.tar.gz https://aka.ms/downloadazcopylinux64
tar -xf azcopy.tar.gz
sudo ./install.sh

Du kan ta bort de extraherade filerna när AzCopy på Linux har installerats. Om du inte har superanvändarbehörighet kan du också köra azcopy med hjälp av shell-skriptet azcopy i den extraherade mappen.

Alternativ installation på Ubuntu

Ubuntu 14.04

Lägg till apt-källa för Microsoft Linux-produktlagringsplatsen och installera AzCopy:

sudo echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod/ trusty main" > azure.list
sudo cp ./azure.list /etc/apt/sources.list.d/
sudo apt-key adv --keyserver packages.microsoft.com --recv-keys EB3E94ADBE1229CF
sudo apt-get update
sudo apt-get install azcopy

Ubuntu 16.04

Lägg till apt-källa för Microsoft Linux-produktlagringsplatsen och installera AzCopy:

echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod/ xenial main" > azure.list
sudo cp ./azure.list /etc/apt/sources.list.d/
sudo apt-key adv --keyserver packages.microsoft.com --recv-keys EB3E94ADBE1229CF
sudo apt-get update
sudo apt-get install azcopy

Skriva ditt första AzCopy-kommando

Den grundläggande syntaxen för AzCopy-kommandon är:

azcopy --source <source> --destination <destination> [Options]

I följande exempel visas olika scenarier för att kopiera data till och från Microsoft Azure Blobs and Files. azcopy --help Se menyn för en detaljerad förklaring av de parametrar som används i varje exempel.

Blob: Ladda ned

Ladda ned en enskild blob

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer/abc.txt \
    --destination /mnt/myfiles/abc.txt \
    --source-key <key> 

Om mappen /mnt/myfiles inte finns skapar AzCopy den och laddar ned abc.txt den till den nya mappen.

Ladda ned en enskild blob från en sekundär region

azcopy \
    --source https://myaccount-secondary.blob.core.windows.net/mynewcontainer/abc.txt \
    --destination /mnt/myfiles/abc.txt \
    --source-key <key>

Observera att du måste ha geo-redundant lagring med läsåtkomst aktiverat.

Ladda ned alla blobar

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer \
    --destination /mnt/myfiles \
    --source-key <key> \
    --recursive

Anta att följande blobar finns i den angivna containern:

abc.txt
abc1.txt
abc2.txt
vd1/a.txt
vd1/abcd.txt

Efter nedladdningsåtgärden innehåller katalogen /mnt/myfiles följande filer:

/mnt/myfiles/abc.txt
/mnt/myfiles/abc1.txt
/mnt/myfiles/abc2.txt
/mnt/myfiles/vd1/a.txt
/mnt/myfiles/vd1/abcd.txt

Om du inte anger alternativet --recursiveladdas ingen blob ned.

Ladda ned blobar med angivet prefix

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer \
    --destination /mnt/myfiles \
    --source-key <key> \
    --include "a" \
    --recursive

Anta att följande blobar finns i den angivna containern. Alla blobar som börjar med prefixet a laddas ned.

abc.txt
abc1.txt
abc2.txt
xyz.txt
vd1\a.txt
vd1\abcd.txt

Efter nedladdningsåtgärden innehåller mappen /mnt/myfiles följande filer:

/mnt/myfiles/abc.txt
/mnt/myfiles/abc1.txt
/mnt/myfiles/abc2.txt

Prefixet gäller för den virtuella katalogen, som utgör den första delen av blobnamnet. I exemplet ovan matchar inte den virtuella katalogen det angivna prefixet, så ingen blob hämtas. Om alternativet --recursive inte har angetts laddar AzCopy dessutom inte ned några blobar.

Ange att den senast ändrade tiden för exporterade filer ska vara samma som källblobbarna

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer \
    --destination "/mnt/myfiles" \
    --source-key <key> \
    --preserve-last-modified-time

Du kan också undanta blobar från nedladdningsåtgärden baserat på deras senaste ändringstid. Om du till exempel vill exkludera blobar vars senaste ändringstid är samma eller senare än målfilen lägger du till --exclude-newer alternativet:

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer \
    --destination /mnt/myfiles \
    --source-key <key> \
    --preserve-last-modified-time \
    --exclude-newer

Eller om du vill exkludera blobar vars senaste ändringstid är samma eller äldre än målfilen lägger du till alternativet --exclude-older :

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer \
    --destination /mnt/myfiles \
    --source-key <key> \
    --preserve-last-modified-time \
    --exclude-older

Blob: Ladda upp

Ladda upp en enskild fil

azcopy \
    --source /mnt/myfiles/abc.txt \
    --destination https://myaccount.blob.core.windows.net/mycontainer/abc.txt \
    --dest-key <key>

Om den angivna målcontainern inte finns, så skapar AzCopy den och överför filen till den.

Ladda upp en enskild fil till en virtuell katalog

azcopy \
    --source /mnt/myfiles/abc.txt \
    --destination https://myaccount.blob.core.windows.net/mycontainer/vd/abc.txt \
    --dest-key <key>

Om den angivna virtuella katalogen inte finns laddar AzCopy upp filen för att inkludera den virtuella katalogen i blobnamnet (t.ex.vd/abc.txt i exemplet ovan).

Omdirigering från stdin

gzip myarchive.tar -c | azcopy \
    --destination https://myaccount.blob.core.windows.net/mycontainer/mydir/myarchive.tar.gz \
    --dest-key <key>

Ladda upp alla filer

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/mycontainer \
    --dest-key <key> \
    --recursive

Om du anger alternativet --recursive överförs innehållet i den angivna katalogen till Blob Storage rekursivt, vilket innebär att även alla undermappar och deras filer laddas upp. Anta till exempel att följande filer finns i mappen /mnt/myfiles:

/mnt/myfiles/abc.txt
/mnt/myfiles/abc1.txt
/mnt/myfiles/abc2.txt
/mnt/myfiles/subfolder/a.txt
/mnt/myfiles/subfolder/abcd.txt

Efter uppladdningen innehåller containern följande filer:

abc.txt
abc1.txt
abc2.txt
subfolder/a.txt
subfolder/abcd.txt

När alternativet --recursive inte har angetts laddas endast följande tre filer upp:

abc.txt
abc1.txt
abc2.txt

Ladda upp filer som matchar angivet mönster

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/mycontainer \
    --dest-key <key> \
    --include "a*" \
    --recursive

Anta att följande filer finns i mappen /mnt/myfiles:

/mnt/myfiles/abc.txt
/mnt/myfiles/abc1.txt
/mnt/myfiles/abc2.txt
/mnt/myfiles/xyz.txt
/mnt/myfiles/subfolder/a.txt
/mnt/myfiles/subfolder/abcd.txt

Efter uppladdningen innehåller containern följande filer:

abc.txt
abc1.txt
abc2.txt
subfolder/a.txt
subfolder/abcd.txt

När alternativet --recursive inte har angetts hoppar AzCopy över filer som finns i underkataloger:

abc.txt
abc1.txt
abc2.txt

Ange MIME-innehållstypen för en målblob

Som standard anger AzCopy innehållstypen för en målblob till application/octet-stream. Du kan dock uttryckligen ange innehållstypen via alternativet --set-content-type [content-type]. Den här syntaxen anger innehållstypen för alla blobar i en uppladdningsåtgärd.

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/myContainer/ \
    --dest-key <key> \
    --include "ab" \
    --set-content-type "video/mp4"

Om alternativet --set-content-type anges utan ett värde anger AzCopy varje blob eller fils innehållstyp enligt filnamnstillägget.

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/myContainer/ \
    --dest-key <key> \
    --include "ab" \
    --set-content-type

Anpassa MIME-innehållstypens mappning

AzCopy använder en konfigurationsfil som innehåller en mappning av filnamnstillägget till innehållstypen. Du kan anpassa den här mappningen och lägga till nya par efter behov. Mappningen finns på /usr/lib/azcopy/AzCopyConfig.json

Blob: Kopiera

Kopiera en enskild blob i lagringskontot

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer1/abc.txt \
    --destination https://myaccount.blob.core.windows.net/mycontainer2/abc.txt \
    --source-key <key> \
    --dest-key <key>

När du kopierar en blob utan alternativet --sync-copy utförs en kopieringsåtgärd på serversidan.

Kopiera en enskild blob mellan lagringskonton

azcopy \
    --source https://sourceaccount.blob.core.windows.net/mycontainer1/abc.txt \
    --destination https://destaccount.blob.core.windows.net/mycontainer2/abc.txt \
    --source-key <key1> \
    --dest-key <key2>

När du kopierar en blob utan alternativet --sync-copy utförs en kopieringsåtgärd på serversidan.

Kopiera en enskild blob från sekundär region till primär region

azcopy \
    --source https://myaccount1-secondary.blob.core.windows.net/mynewcontainer1/abc.txt \
    --destination https://myaccount2.blob.core.windows.net/mynewcontainer2/abc.txt \
    --source-key <key1> \
    --dest-key <key2>

Observera att du måste ha geo-redundant lagring med läsåtkomst aktiverat.

Kopiera en enskild blob och dess ögonblicksbilder mellan lagringskonton

azcopy \
    --source https://sourceaccount.blob.core.windows.net/mycontainer1/ \
    --destination https://destaccount.blob.core.windows.net/mycontainer2/ \
    --source-key <key1> \
    --dest-key <key2> \
    --include "abc.txt" \
    --include-snapshot

Efter kopieringsåtgärden innehåller målcontainern bloben och dess ögonblicksbilder. Containern innehåller följande blob och dess ögonblicksbilder:

abc.txt
abc (2013-02-25 080757).txt
abc (2014-02-21 150331).txt

Kopiera blobar synkront mellan lagringskonton

AzCopy kopierar som standard data mellan två lagringsslutpunkter asynkront. Därför körs kopieringsåtgärden i bakgrunden med outnyttjad bandbreddskapacitet som inte har något serviceavtal när det gäller hur snabbt en blob kopieras.

Alternativet --sync-copy säkerställer att kopieringsåtgärden får konsekvent hastighet. AzCopy utför den synkrona kopian genom att ladda ned blobarna som ska kopieras från den angivna källan till det lokala minnet och sedan ladda upp dem till bloblagringsmålet.

azcopy \
    --source https://myaccount1.blob.core.windows.net/myContainer/ \
    --destination https://myaccount2.blob.core.windows.net/myContainer/ \
    --source-key <key1> \
    --dest-key <key2> \
    --include "ab" \
    --sync-copy

--sync-copy kan generera ytterligare utgående kostnad jämfört med asynkron kopia. Den rekommenderade metoden är att använda det här alternativet på en virtuell Azure-dator, som finns i samma region som ditt källlagringskonto för att undvika utgående kostnader.

Fil: Ladda ned

Ladda ned en enskild fil

azcopy \
    --source https://myaccount.file.core.windows.net/myfileshare/myfolder1/abc.txt \
    --destination /mnt/myfiles/abc.txt \
    --source-key <key>

Om den angivna källan är en Azure-filresurs måste du antingen ange det exakta filnamnet (t.ex. abc.txt) för att ladda ned en enskild fil eller ange alternativet --recursive att ladda ned alla filer i resursen rekursivt. Försök att ange både ett filmönster och ett alternativ --recursive tillsammans resulterar i ett fel.

Ladda ned alla filer

azcopy \
    --source https://myaccount.file.core.windows.net/myfileshare/ \
    --destination /mnt/myfiles \
    --source-key <key> \
    --recursive

Observera att tomma mappar inte laddas ned.

Fil: Ladda upp

Ladda upp en enskild fil

azcopy \
    --source /mnt/myfiles/abc.txt \
    --destination https://myaccount.file.core.windows.net/myfileshare/abc.txt \
    --dest-key <key>

Ladda upp alla filer

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.file.core.windows.net/myfileshare/ \
    --dest-key <key> \
    --recursive

Observera att tomma mappar inte laddas upp.

Ladda upp filer som matchar angivet mönster

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.file.core.windows.net/myfileshare/ \
    --dest-key <key> \
    --include "ab*" \
    --recursive

Fil: Kopiera

Kopiera mellan filresurser

azcopy \
    --source https://myaccount1.file.core.windows.net/myfileshare1/ \
    --destination https://myaccount2.file.core.windows.net/myfileshare2/ \
    --source-key <key1> \
    --dest-key <key2> \
    --recursive

När du kopierar en fil mellan filresurser utförs en kopieringsåtgärd på serversidan.

Kopiera från filresurs till blob

azcopy \ 
    --source https://myaccount1.file.core.windows.net/myfileshare/ \
    --destination https://myaccount2.blob.core.windows.net/mycontainer/ \
    --source-key <key1> \
    --dest-key <key2> \
    --recursive

När du kopierar en fil från filresurs till blob utförs en kopieringsåtgärd på serversidan.

Kopiera från blob till filresurs

azcopy \
    --source https://myaccount1.blob.core.windows.net/mycontainer/ \
    --destination https://myaccount2.file.core.windows.net/myfileshare/ \
    --source-key <key1> \
    --dest-key <key2> \
    --recursive

När du kopierar en fil från blob till filresurs utförs en kopieringsåtgärd på serversidan.

Kopiera filer synkront

Du kan ange --sync-copy alternativet för att kopiera data från Fillagring till Fillagring, från Fillagring till Blob Storage och från Blob Storage till Fillagring synkront. AzCopy kör den här åtgärden genom att ladda ned källdata till det lokala minnet och sedan ladda upp dem till målet. I det här fallet gäller standardkostnaden för utgående trafik.

azcopy \
    --source https://myaccount1.file.core.windows.net/myfileshare1/ \
    --destination https://myaccount2.file.core.windows.net/myfileshare2/ \
    --source-key <key1> \
    --dest-key <key2> \
    --recursive \
    --sync-copy

När du kopierar från Fillagring till Blob Storage är standardblobtypen blockblob, användaren kan ange alternativ --blob-type page för att ändra målblobtypen. Tillgängliga typer är page | block | append.

Observera att --sync-copy kan generera ytterligare utgående kostnad jämfört med asynkron kopia. Den rekommenderade metoden är att använda det här alternativet på en virtuell Azure-dator, som finns i samma region som ditt källlagringskonto för att undvika utgående kostnader.

Andra AzCopy-funktioner

Kopiera endast data som inte finns i målet

Med --exclude-older parametrarna och --exclude-newer kan du undanta äldre eller nyare källresurser från att kopieras. Om du bara vill kopiera källresurser som inte finns i målet kan du ange båda parametrarna i Kommandot AzCopy:

--source http://myaccount.blob.core.windows.net/mycontainer --destination /mnt/myfiles --source-key <sourcekey> --recursive --exclude-older --exclude-newer

--source /mnt/myfiles --destination http://myaccount.file.core.windows.net/myfileshare --dest-key <destkey> --recursive --exclude-older --exclude-newer

--source http://myaccount.blob.core.windows.net/mycontainer --destination http://myaccount.blob.core.windows.net/mycontainer1 --source-key <sourcekey> --dest-key <destkey> --recursive --exclude-older --exclude-newer

Använd en konfigurationsfil för att ange kommandoradsparametrar

azcopy --config-file "azcopy-config.ini"

Du kan inkludera azcopy-kommandoradsparametrar i en konfigurationsfil. AzCopy bearbetar parametrarna i filen som om de hade angetts på kommandoraden och utför en direkt ersättning med innehållet i filen.

Anta att en konfigurationsfil med namnet copyoperation, som innehåller följande rader. Varje AzCopy-parameter kan anges på en enda rad.

--source http://myaccount.blob.core.windows.net/mycontainer --destination /mnt/myfiles --source-key <sourcekey> --recursive --quiet

eller på separata linjer:

--source http://myaccount.blob.core.windows.net/mycontainer
--destination /mnt/myfiles
--source-key<sourcekey>
--recursive
--quiet

AzCopy misslyckas om du delar parametern över två rader, vilket visas här för parametern --source-key :

http://myaccount.blob.core.windows.net/mycontainer
/mnt/myfiles
--sourcekey
<sourcekey>
--recursive
--quiet

Ange en signatur för delad åtkomst (SAS)

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer1/abc.txt \
    --destination https://myaccount.blob.core.windows.net/mycontainer2/abc.txt \
    --source-sas <SAS1> \
    --dest-sas <SAS2>

Du kan också ange en SAS på containerns URI:

azcopy \
    --source https://myaccount.blob.core.windows.net/mycontainer1/?SourceSASToken \
    --destination /mnt/myfiles \
    --recursive

Journalfilmapp

Varje gång du utfärdar ett kommando till AzCopy kontrollerar den om det finns en journalfil i standardmappen eller om den finns i en mapp som du har angett via det här alternativet. Om journalfilen inte finns på något ställe behandlar AzCopy åtgärden som ny och genererar en ny journalfil.

Om journalfilen finns kontrollerar AzCopy om kommandoraden som du anger matchar kommandoraden i journalfilen. Om de två kommandoraderna matchar återupptar AzCopy den ofullständiga åtgärden. Om de inte matchar uppmanar AzCopy användaren att antingen skriva över journalfilen för att starta en ny åtgärd eller avbryta den aktuella åtgärden.

Om du vill använda standardplatsen för journalfilen:

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/mycontainer \
    --dest-key <key> \
    --resume

Om du utelämnar alternativet --resumeeller anger alternativet --resume utan mappsökvägen, som du ser ovan, skapar AzCopy journalfilen på standardplatsen, som är ~\Microsoft\Azure\AzCopy. Om journalfilen redan finns återupptar AzCopy åtgärden baserat på journalfilen.

Om du vill ange en anpassad plats för journalfilen:

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/mycontainer \
    --dest-key key \
    --resume "/mnt/myjournal"

Det här exemplet skapar journalfilen om den inte redan finns. Om den finns återupptar AzCopy åtgärden baserat på journalfilen.

Om du vill återuppta en AzCopy-åtgärd upprepar du samma kommando. AzCopy i Linux uppmanar sedan till bekräftelse:

Incomplete operation with same command line detected at the journal directory "/home/myaccount/Microsoft/Azure/AzCopy", do you want to resume the operation? Choose Yes to resume, choose No to overwrite the journal to start a new operation. (Yes/No)

Utdata för utförliga loggar

azcopy \
    --source /mnt/myfiles \
    --destination https://myaccount.blob.core.windows.net/mycontainer \
    --dest-key <key> \
    --verbose

Ange antalet samtidiga åtgärder som ska startas

Alternativet --parallel-level anger antalet samtidiga kopieringsåtgärder. Som standard startar AzCopy ett visst antal samtidiga åtgärder för att öka dataöverföringens dataflöde. Antalet samtidiga åtgärder är lika med åtta gånger så många processorer som du har. Om du kör AzCopy i ett nätverk med låg bandbredd kan du ange ett lägre tal för --parallel-level för att undvika fel som orsakas av resurskonkurrens.

Dricks

Om du vill visa den fullständiga listan över AzCopy-parametrar kan du gå till menyn azcopy --help.

Installationssteg för AzCopy 7.1 och tidigare versioner

AzCopy på Linux (endast v7.1 och tidigare) kräver .NET Core-ramverket. Installationsinstruktioner finns på installationssidan för .NET Core.

Börja till exempel med att installera .NET Core på Ubuntu 16.10. Den senaste installationsguiden finns på installationssidan för .NET Core på Linux .

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ yakkety main" > /etc/apt/sources.list.d/dotnetdev.list' 
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893
sudo apt-get update
sudo apt-get install dotnet-sdk-2.0.0

När du har installerat .NET Core laddar du ned och installerar AzCopy.

wget -O azcopy.tar.gz https://aka.ms/downloadazcopyprlinux
tar -xf azcopy.tar.gz
sudo ./install.sh

Du kan ta bort de extraherade filerna när AzCopy på Linux har installerats. Om du inte har behörighet som superanvändare kan du också köra azcopy med hjälp av shell-skriptet azcopy i den extraherade mappen.

Kända problem och metodtips

Fel vid installation av AzCopy

Om du stöter på problem med AzCopy-installationen kan du försöka köra AzCopy med bash-skriptet i den extraherade azcopy mappen.

cd azcopy
./azcopy

Begränsa samtidiga skrivningar vid kopiering av data

När du kopierar blobar eller filer med AzCopy bör du tänka på att ett annat program kan ändra data medan du kopierar dem. Om möjligt kontrollerar du att de data som du kopierar inte ändras under kopieringsåtgärden. När du till exempel kopierar en virtuell hårddisk som är associerad med en virtuell Azure-dator kontrollerar du att inga andra program för närvarande skriver till den virtuella hårddisken. Ett bra sätt att göra detta är genom att hyra den resurs som ska kopieras. Alternativt kan du skapa en ögonblicksbild av den virtuella hårddisken först och sedan kopiera ögonblicksbilden.

Om du inte kan förhindra att andra program skriver till blobbar eller filer medan de kopieras, bör du tänka på att när jobbet är klart kanske de kopierade resurserna inte längre har fullständig paritet med källresurserna.

Köra flera AzCopy-processer

Du kan köra flera AzCopy-processer på en enda klient, förutsatt att du använder olika journalmappar. Det går inte att använda en enskild journalmapp för flera AzCopy-processer.

Första processen:

azcopy \
    --source /mnt/myfiles1 \
    --destination https://myaccount.blob.core.windows.net/mycontainer/myfiles1 \
    --dest-key <key> \
    --resume "/mnt/myazcopyjournal1"

Andra processen:

azcopy \
    --source /mnt/myfiles2 \
    --destination https://myaccount.blob.core.windows.net/mycontainer/myfiles2 \
    --dest-key <key> \
    --resume "/mnt/myazcopyjournal2"

Nästa steg

Mer information om Azure Storage och AzCopy finns i följande resurser:

Dokumentation om Azure Storage:

Blogginlägg om Azure Storage: