Chcę przedstawić prosty sposób na kopiowanie danych pomiędzy różnymi Storage account (albo innym miejscem). Nie ma znaczenia w jakim regionie i w jakiej subskrypcji znajdują się Azure Storage Accounts.
Na początku należy wygenerować SAS-Tokeny w źródłowym i docelowym Storage Accounts:
- Ustawiamy ‘allowed service’ i ‘allowed resource type’ w zależności od tego jakie zasoby chcemy kopiować.
- Dodajemy tylko prawa odczytu w źródłowym Storage account.
- Dodajemy tylko prawa zapisu i tworzenia w docelowym Storage account.
- Ustawiamy datę kiedy token ma być ważny, godzinę najlepiej ustawić 30-60 minut wcześniej przed planowaną operacją bo może nie zadziałać. Ważne by zwrócić uwagę na strefę czasową.
- Dobrze jest określić jeszcze dozwolony zakres IP.
- Zezwalamy tylko na HTTPS.
- Na samym końcu wybieramy na podstawie którego klucza ma zostać utworzony token i możemy kliknąć ‘Generate SAS and connection string’
Takie same czynności powtarzamy w drugim Storage account zwracając uwagę by nadać odpowiednie uprawnienia.
Jak mamy wygenerowane tokeny to możemy zalogować się do CLI:
azcopy login
Po uwierzytelnieniu należy uruchomić następujące polecenie:
azcopy cp "<a href="https://source_storage_account.file.core.windows.net/SKOPIOWANY_TOKEN">https://source_storage_account.file.core.windows.net/SKOPIOWANY_TOKEN</a>" "<a href="https://destination_storage_account.file.core.windows.net/%20SKOPIOWANY_TOKEN%20">https://destination_storage_account.file.core.windows.net/ SKOPIOWANY_TOKEN </a>" --recursive=true
Zapis blokowy polecenia wygląda tak:
azcopy cp [source] [destination] [flags]
Włączenie flag –overwrite=true –recursive=true pozwoli na nadpisywanie i kopiowanie podfolderów.
Ważna informacja i trochę smutna, że jeśli jakiś folder jest pusty, to nie zostanie skopiowany.
Jeśli mamy już skopiowane pliki i chcemy je tylko zsynchronizować to używamy „sync” a nie „cp„.
Dodatkowo synchronizację można dołożyć do jakiegoś crona dzięki czemu utrzymamy aktualną wersję plików w 2 miejscach.
Miejsce źródłowe/docelowe nie musi być zawsze tego samego typu możemy np. kopiować pliki do nas lokalnie na komputer/server. Albo Traktować Storage account jako backup naszych lokalnych plików wywoływany z crona co jakiś czas np. :
azcopy cp "C:\local\path" "https://destination_storage_account.file.core.windows.net/mycontainer1/ SKOPIOWANY_TOKEN" --recursive=true
Więcej informacji znajdziecie na stronach microsoftu
Więcej artykułów dotyczących Microsoft Azure na moim blogu znajdziesz w kategorii Azure https://lepczynski.it/category/azure/