Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| drafts:2026-07-10-kb-czech-fixes:navody:vps:api [2026/07/10 18:16] – Create Czech vpsAdmin localization draft aither | drafts:2026-07-10-kb-czech-fixes:navody:vps:api [2026/07/12 12:50] (aktuální) – Remove obsolete localization review draft aither | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| - | <note warning> | ||
| - | |||
| - | ====== API ====== | ||
| - | |||
| - | Naše API běží na adrese https:// | ||
| - | co jde naklikat ve webovém rozhraní, a více. Ve skutečnosti webové rozhraní | ||
| - | běžící na https:// | ||
| - | |||
| - | ===== Dokumentace API ===== | ||
| - | Dokumentace API, tzn. seznam zdrojů, možných akcí, vstupních a výstupních | ||
| - | parametrů je k vidění na https:// | ||
| - | |||
| - | Bez přihlášení se zobrazuje seznam všech zdrojů, tj. i těch, se kterými můžou | ||
| - | pracovat pouze administrátoři. Vpravo nahoře se lze přihlásit stejnými údaji | ||
| - | jako do vpsAdminu a poté se zobrazí pouze objekty, akce a parametry, se | ||
| - | kterými může aktuálně přihlášený uživatel pracovat. | ||
| - | |||
| - | ===== Práce s API ===== | ||
| - | API je postaveno na námi vyvinutém frameworku | ||
| - | [[https:// | ||
| - | [[https:// | ||
| - | se API, což znamená, že lze využít předpřipravené generické | ||
| - | klienty: | ||
| - | |||
| - | * Ruby - https:// | ||
| - | * PHP - https:// | ||
| - | * JavaScript - https:// | ||
| - | * Go - https:// | ||
| - | * Webové rozhraní z HaveAPI - https:// | ||
| - | * Souborový systém založený na FUSE - https:// | ||
| - | |||
| - | Ukázka použití je vždy v '' | ||
| - | předá URL k API, poté si sám stáhne dokumentaci a podle ní se nastaví. | ||
| - | |||
| - | API je [[wp> | ||
| - | úkony lze využít i libovolný REST klient. Popis vlastního protokolu pro přenos | ||
| - | dat, který HaveAPI klienti abstrahují, | ||
| - | [[https:// | ||
| - | |||
| - | **poznámka** Pokud API vpsfree vrací http kód 500, ujistěte se, že váš REST klient posílá http hlavičku `User-Agent: | ||
| - | |||
| - | |||
| - | |||
| - | ===== Autentizace ===== | ||
| - | API podporuje dva způsoby autentizace: | ||
| - | |||
| - | * [[# | ||
| - | * [[# | ||
| - | |||
| - | Konkrétní ukázky autentizace pro podporované programovací jazyky a CLI najdete | ||
| - | v [[https:// | ||
| - | |||
| - | ==== HTTP Basic ==== | ||
| - | S každým požadavkem na API se musí zaslat jméno a heslo v HTTP hlavičce " | ||
| - | Je to dobrá volba pro jednorázové akce, pokud je ale potřeba API volat vícekrát nebo | ||
| - | automatizovaně, | ||
| - | nelze použít, pokud máte aktivované dvoufaktorové ověřování. | ||
| - | |||
| - | ==== Tokeny ==== | ||
| - | Klient nejprve požádá o vytvoření tokenu, k tomu potřebuje jméno, heslo a připadně i TOTP. | ||
| - | Jakmile klient dostane token, může jméno a heslo zapomenout a dále se autentizuje | ||
| - | získaným tokenem. | ||
| - | |||
| - | Tokeny mohou být několika typů s různě dlouhou životností: | ||
| - | |||
| - | * //fixed// - platnost tokenu je pevně dána | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | |||
| - | Typ tokenu a časový interval, o který se prodlužuje, | ||
| - | |||
| - | ===== Scopes ===== | ||
| - | U autentizačních tokenů si můžeme zvolit, jaké akce bude token mít k dispozici. | ||
| - | To se může hodit u tokenů s dlouhou nebo permanentní platností. Každá akce | ||
| - | má svůj //scope//, jehož název najdeme v dokumentaci. Dostupné scope se nastavuje, | ||
| - | když žádáme o nový token, tj. zasílá se společně s přihlašovacími údaji. | ||
| - | |||
| - | Ukázky možných scopes: | ||
| - | |||
| - | * '' | ||
| - | * prázdný scope, přístup je povolen jen k akci '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | Scope může obsahovat globy pro název resource a akce. Akce je od resource oddělena křížkem (''#'' | ||
| - | |||
| - | ===== Instalace klienta ===== | ||
| - | [[https:// | ||
| - | (rozhraní pro příkazovou řádku) a knihovnu pro použití v Ruby skriptech. | ||
| - | Pro správnou funkci vyžaduje Ruby >= 2.7, nainstalované hlavičkové soubory | ||
| - | Ruby a ncurses (většinou balíčky s příponou '' | ||
| - | Poté klienta nainstalujeme pomocí Ruby gems: | ||
| - | |||
| - | <code bash> | ||
| - | gem install vpsfree-client | ||
| - | </ | ||
| - | |||
| - | Konkrétní postupy instalace podle platformy: | ||
| - | |||
| - | * Linux | ||
| - | * [[navody: | ||
| - | * [[navody: | ||
| - | * [[navody: | ||
| - | * [[navody: | ||
| - | * [[navody: | ||
| - | |||
| - | Po instalaci by v '' | ||
| - | není, lze to jednoduše napravit: | ||
| - | |||
| - | <code bash> | ||
| - | $ gem env | grep " | ||
| - | </ | ||
| - | |||
| - | Tento příkaz vypíše, kde jsou uloženy spustitelné soubory instalované přes | ||
| - | '' | ||
| - | |||
| - | <code bash> | ||
| - | $ PATH=" | ||
| - | </ | ||
| - | |||
| - | ===== Použití CLI ===== | ||
| - | |||
| - | < | ||
| - | $ vpsfreectl --help | ||
| - | Usage: vpsfreectl [options] < | ||
| - | -u, --api URL API URL | ||
| - | -a, --auth METHOD | ||
| - | --list-versions | ||
| - | --list-auth-methods [VERSION] | ||
| - | List available authentication methods | ||
| - | --list-resources [VERSION] | ||
| - | --list-actions [VERSION] | ||
| - | --version VERSION | ||
| - | -c, --columns | ||
| - | -H, --no-header | ||
| - | -L, --list-parameters | ||
| - | -o, --output PARAMETERS | ||
| - | -r, --rows | ||
| - | -s, --sort PARAMETER | ||
| - | --save | ||
| - | --raw Print raw response as is | ||
| - | --timestamp | ||
| - | --utc Display Datetime parameters in UTC | ||
| - | --localtime | ||
| - | --date-format FORMAT | ||
| - | --[no-]block | ||
| - | --timeout SEC Fail when the action does not finish within the timeout | ||
| - | -v, --[no-]verbose | ||
| - | --client-version | ||
| - | --protocol-version | ||
| - | --check-compatibility | ||
| - | -h, --help | ||
| - | |||
| - | Commands: | ||
| - | action_state wait <STATE ID> | ||
| - | vps remote_console VPS_ID | ||
| - | vps migrate_many VPS_ID... | ||
| - | snapshot download [SNAPSHOT_ID] | ||
| - | snapshot send SNAPSHOT_ID | ||
| - | backup dataset [DATASET_ID] FILESYSTEM Backup dataset locally | ||
| - | backup vps [VPS_ID] FILESYSTEM | ||
| - | ip_traffic top Live IP traffic monitor | ||
| - | |||
| - | Available resources: | ||
| - | cluster | ||
| - | cluster_resource | ||
| - | cluster_resource_package | ||
| - | cluster_resource_package.item | ||
| - | dataset | ||
| - | dataset.snapshot | ||
| - | dataset.plan | ||
| - | dataset.property_history | ||
| - | dataset_plan | ||
| - | dns_resolver | ||
| - | environment | ||
| - | environment.config_chain | ||
| - | environment.dataset_plan | ||
| - | host_ip_address | ||
| - | integrity_check | ||
| - | integrity_fact | ||
| - | integrity_object | ||
| - | ip_address | ||
| - | ip_traffic | ||
| - | ip_traffic_monitor | ||
| - | language | ||
| - | location | ||
| - | mail_log | ||
| - | mail_recipient | ||
| - | mail_template | ||
| - | mail_template.recipient | ||
| - | mail_template.translation | ||
| - | migration_plan | ||
| - | migration_plan.vps_migration | ||
| - | network | ||
| - | network_interface | ||
| - | node | ||
| - | node.status | ||
| - | object_history | ||
| - | os_template | ||
| - | pool | ||
| - | session_token | ||
| - | snapshot_download | ||
| - | system_config | ||
| - | transaction | ||
| - | transaction_chain | ||
| - | user | ||
| - | user.environment_config | ||
| - | user.cluster_resource | ||
| - | user.public_key | ||
| - | user.mail_role_recipient | ||
| - | user.mail_template_recipient | ||
| - | user.state_log | ||
| - | user_cluster_resource_package | ||
| - | user_cluster_resource_package.item | ||
| - | user_namespace | ||
| - | user_namespace_map | ||
| - | user_namespace_map.entry | ||
| - | user_session | ||
| - | vps | ||
| - | vps.state_log | ||
| - | vps.config | ||
| - | vps.feature | ||
| - | vps.mount | ||
| - | vps.outage_window | ||
| - | vps.console_token | ||
| - | vps.status | ||
| - | vps_config | ||
| - | monitored_event | ||
| - | monitored_event.log | ||
| - | outage | ||
| - | outage.entity | ||
| - | outage.handler | ||
| - | outage_update | ||
| - | user_outage | ||
| - | vps_outage | ||
| - | vps_outage_mount | ||
| - | help_box | ||
| - | news_log | ||
| - | incoming_payment | ||
| - | payment_stats | ||
| - | user_account | ||
| - | user_payment | ||
| - | user_request | ||
| - | user_request.registration | ||
| - | user_request.change | ||
| - | action_state | ||
| - | </ | ||
| - | |||
| - | Výběrem autentizační metody nebo objektu či akce se v nápovědě přibydou | ||
| - | další možné přepínače: | ||
| - | |||
| - | <code bash> | ||
| - | $ vpsfreectl --auth basic --help | ||
| - | $ vpsfreectl vps --help | ||
| - | $ vpsfreectl vps list --help | ||
| - | </ | ||
| - | |||
| - | ==== Autentizace ==== | ||
| - | === HTTP basic === | ||
| - | Jméno a heslo buď předáme parametry '' | ||
| - | parametry vynecháme a program k zadání údajů uživatele vybídne. | ||
| - | < | ||
| - | $ vpsfreectl --auth basic user current | ||
| - | </ | ||
| - | |||
| - | === Tokeny === | ||
| - | Autentizace přes tokeny zavádí několik nových přepínačů: | ||
| - | |||
| - | < | ||
| - | $ vpsfreectl --auth token --help | ||
| - | ... | ||
| - | -a, --auth METHOD | ||
| - | -s, --save | ||
| - | --user USER User name | ||
| - | --password PASSWORD | ||
| - | --scope [SCOPE] | ||
| - | --token TOKEN Token | ||
| - | --token-lifetime LIFETIME | ||
| - | --token-interval SECONDS | ||
| - | --new-token | ||
| - | --token-via VIA Send token as a query parameter or in HTTP header (query_param, | ||
| - | ... | ||
| - | </ | ||
| - | |||
| - | Jméno a heslo opět nemusíme předávat jako parametry, program se na ně zeptá. | ||
| - | |||
| - | Jednorázový token: | ||
| - | <code bash> | ||
| - | $ vpsfreectl --auth token user current | ||
| - | </ | ||
| - | Po ukončení je token zapomenut a příště je nutné vyžádat další. Token pro | ||
| - | takové použití postráda smysl. | ||
| - | |||
| - | Uložení tokenu: | ||
| - | <code bash> | ||
| - | $ vpsfreectl --auth token --save user current | ||
| - | </ | ||
| - | |||
| - | Token se uložil do souboru '' | ||
| - | automaticky načten: | ||
| - | <code bash> | ||
| - | $ vpsfreectl user current | ||
| - | </ | ||
| - | |||
| - | Takový token ale do 20 minut expiruje a je nutné vyžádat si nový. Je možné si | ||
| - | rovnou udělat token s delší platností: | ||
| - | |||
| - | <code bash> | ||
| - | $ vpsfreectl --auth token --save --token-interval $((24*60*60)) user current # 1 den | ||
| - | </ | ||
| - | |||
| - | Nebo rovnou token s platností neomezenou: | ||
| - | <code bash> | ||
| - | $ vpsfreectl --auth token --save --token-lifetime permanent user current | ||
| - | </ | ||
| - | |||
| - | <note warning> | ||
| - | Na token s neomezenou platností je třeba dávat pozor, protože kdokoli s | ||
| - | přístupem k '' | ||
| - | </ | ||
| - | |||
| - | Při vytváření tokenu můžeme specifikovat scope: | ||
| - | <code bash> | ||
| - | $ vpsfreectl --auth token --scope ' | ||
| - | </ | ||
| - | |||
| - | Příkaz výše vytvoří autentizační token, který bude omezen na volání akcí nad resource '' | ||
| - | |||
| - | ==== Akce a parametry ==== | ||
| - | Objekty a akce mají názvy stejné jako v dokumentaci, | ||
| - | místo mezer se píší podtržítka. Každá akce má svoje vstupní a výstupní parametry. | ||
| - | Zobrazí se přepínačem '' | ||
| - | |||
| - | < | ||
| - | $ vpsfreectl vps list --help | ||
| - | ... | ||
| - | Action description: | ||
| - | List VPS | ||
| - | |||
| - | Input parameters: | ||
| - | --offset OFFSET | ||
| - | --limit LIMIT The number of objects to retrieve | ||
| - | --node NODE Filter by node | ||
| - | --location LOCATION | ||
| - | --environment ENVIRONMENT | ||
| - | --os-template OS_TEMPLATE | ||
| - | --object-state OBJECT_STATE | ||
| - | -h, --help | ||
| - | |||
| - | Output parameters: | ||
| - | id | ||
| - | user VPS owner | ||
| - | hostname | ||
| - | os_template | ||
| - | dns_resolver | ||
| - | node Node VPS will run on | ||
| - | dataset | ||
| - | created_at | ||
| - | memory | ||
| - | swap | ||
| - | cpu Minimally 1, maximally 8, step size is 1 | ||
| - | maintenance_lock | ||
| - | maintenance_lock_reason | ||
| - | object_state | ||
| - | expiration_date | ||
| - | running | ||
| - | process_count | ||
| - | used_memory | ||
| - | used_disk | ||
| - | ... | ||
| - | </ | ||
| - | |||
| - | Můžeme tedy VPS filtrovat dle serveru, lokace, prostředí, | ||
| - | a omezit počet zobrazených položek či stránkovat. | ||
| - | |||
| - | Parametry akcí jsou od parametrů klienta odděleny dvěmi pomlčkami '' | ||
| - | Následující příkaz vypíše první tři VPS: | ||
| - | |||
| - | <code bash> | ||
| - | $ vpsfreectl vps list -- --limit 3 | ||
| - | </ | ||
| - | |||
| - | Pokud bychom chtěli filtrovat např. dle lokace, nejdříve si je vypíšeme: | ||
| - | |||
| - | <code bash> | ||
| - | $ vpsfreectl location list | ||
| - | | ||
| - | 3 Praha | ||
| - | 4 Brno | ||
| - | 5 Playground | ||
| - | </ | ||
| - | |||
| - | Nyní zobrazíme VPS nacházející se v lokaci Praha: | ||
| - | |||
| - | <code bash> | ||
| - | $ vpsfreectl vps list -- --location 3 | ||
| - | </ | ||
| - | |||
| - | ==== Formátování výstupu ==== | ||
| - | Výstup lze formátovat buď to sloupců, nebo řádků. Ve výchozím stavu se pro | ||
| - | zobrazení vícero objektů použijí sloupce a pro jeden objekt řádky. Formát se | ||
| - | vybírá přepínači '' | ||
| - | pro řádky. | ||
| - | |||
| - | Ukázka výpisu do sloupců (v tomto případě je přepínač '' | ||
| - | nadbytečný -- jelikož výstup obsahuje více objektů, zvolí se automaticky): | ||
| - | <code bash> | ||
| - | $ vpsfreectl vps list --columns | ||
| - | | ||
| - | 3 Praha | ||
| - | 4 Brno | ||
| - | 5 Playground | ||
| - | </ | ||
| - | |||
| - | Ukázka výpisu do řádků: | ||
| - | <code bash> | ||
| - | $ vpsfreectl location list --rows | ||
| - | ID: 3 | ||
| - | | ||
| - | |||
| - | ID: 4 | ||
| - | | ||
| - | |||
| - | ID: 5 | ||
| - | | ||
| - | </ | ||
| - | |||
| - | Při použití ve skriptech by při formátování do sloupců mohla vadit hlavička | ||
| - | s názvy parametrů. Její výpis můžeme potlačit přepínačem '' | ||
| - | '' | ||
| - | |||
| - | ==== Výběr parametrů k zobrazení ==== | ||
| - | Přepínačem '' | ||
| - | a v jakém pořadí budou vypsány. Názvy parametrů se oddělují čárkou. | ||
| - | |||
| - | < | ||
| - | $ vpsfreectl vps list -o id, | ||
| - | VPS id: 4710 | ||
| - | Hostname: | ||
| - | Node: node7.prg (#108) | ||
| - | OS template: | ||
| - | </ | ||
| - | |||
| - | ==== Řazení ==== | ||
| - | Přepínačem '' | ||
| - | parametru (na straně klienta). | ||
| - | |||
| - | < | ||
| - | $ vpsfreectl os_template list --sort label | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | </ | ||
| - | |||
| - | ==== Formát času a data ==== | ||
| - | Klient obsahuje několik přepínačů, | ||
| - | vrací-li akce parametr typu '' | ||
| - | |||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | ==== Blokující mód ==== | ||
| - | Volání akcí jako vytvoření VPS, reinstalace, | ||
| - | trvat delší dobu. '' | ||
| - | se hned ukončit a nečekat. Informace o dokončení akce je však důležitá, | ||
| - | nad jedním objektem (tedy třeba VPS) lze vykonávat v jednom čase jen jednu | ||
| - | akci, ostatní skončí s chybou „Zdroj je uzamčen. Zkuste to prosím později.“ | ||
| - | |||
| - | Ve výchozím stavu '' | ||
| - | |||
| - | < | ||
| - | $ vpsfreectl vps start 3438 | ||
| - | |||
| - | Waiting for the action to complete (hit Ctrl+C to skip)... | ||
| - | Executing: [==========================================================================] 1/1 transactions | ||
| - | </ | ||
| - | |||
| - | Pokud nechceme čekat, můžeme použít přepínač '' | ||
| - | |||
| - | < | ||
| - | $ vpsfreectl vps start 3438 --no-block | ||
| - | |||
| - | Run | ||
| - | vpsfreectl action_state show 653411 | ||
| - | or | ||
| - | vpsfreectl action_state wait 653411 | ||
| - | to check the action' | ||
| - | </ | ||
| - | |||
| - | Pokud bychom chtěli zkontrolovat stav akce, můžeme využít příkazy, které nám | ||
| - | '' | ||
| - | ukončí se, '' | ||
| - | |||
| - | < | ||
| - | $ vpsfreectl action_state show 653411 | ||
| - | | ||
| - | Label: | ||
| - | | ||
| - | | ||
| - | | ||
| - | Total: | ||
| - | | ||
| - | Can cancel: | ||
| - | | ||
| - | | ||
| - | </ | ||
| - | |||
| - | ===== Aktualizace ===== | ||
| - | |||
| - | Pro využití nových vlastností je potřeba klienta občas aktualizovat, | ||
| - | provede příkazem | ||
| - | |||
| - | <code bash> | ||
| - | $ gem update vpsfree-client | ||
| - | </ | ||
| - | |||
| - | Následně můžeme odstranit starou verzi: | ||
| - | |||
| - | <code bash> | ||
| - | $ gem cleanup vpsfree-client | ||
| - | </ | ||
| - | |||
| - | Tento příkaz odstraní pouze staré verze gemu '' | ||
| - | závislosti zůstanou. Pro odstranění všech starých gemů použijte příkaz | ||
| - | |||
| - | <code bash> | ||
| - | $ gem cleanup -n # vypíše, které gemy by smazal | ||
| - | $ gem cleanup | ||
| - | </ | ||
| - | |||
| - | ===== Souborový systém ====== | ||
| - | '' | ||
| - | API jako souborový systém z userspace. Objekty, akce a jejich parametry můžeme | ||
| - | procházet jako adresáře a soubory v libovolném programu. Instaluje se stejným způsobem | ||
| - | jako CLI, má jen jiný název: | ||
| - | |||
| - | <code bash> | ||
| - | $ gem install haveapi-fs | ||
| - | </ | ||
| - | |||
| - | ==== Použití ==== | ||
| - | Použití '' | ||
| - | [[https:// | ||
| - | zkratce. | ||
| - | |||
| - | < | ||
| - | $ haveapi-fs https:// | ||
| - | Username: mujlogin | ||
| - | Password: | ||
| - | |||
| - | $ cd / | ||
| - | $ ls -1 | ||
| - | auth_token | ||
| - | cluster | ||
| - | cluster_resource | ||
| - | dataset | ||
| - | dataset_plan | ||
| - | dns_resolver | ||
| - | environment | ||
| - | help.html | ||
| - | help.man | ||
| - | help.md | ||
| - | help.txt | ||
| - | ip_address | ||
| - | language | ||
| - | location | ||
| - | mail_template | ||
| - | migration_plan | ||
| - | node | ||
| - | object_history | ||
| - | os_template | ||
| - | snapshot_download | ||
| - | transaction | ||
| - | transaction_chain | ||
| - | user | ||
| - | user_session | ||
| - | vps | ||
| - | vps_config | ||
| - | </ | ||
| - | |||
| - | V každém adresáři se nachází soubory '' | ||
| - | aktuální adresář obsahuje. | ||
| - | |||
| - | < | ||
| - | $ cat vps/ | ||
| - | moje-vps | ||
| - | |||
| - | $ echo lepsi-hostname > vps/ | ||
| - | $ echo 1 > vps/ | ||
| - | $ cat vps/ | ||
| - | 1 | ||
| - | $ cat vps/ | ||
| - | lepsi-hostname | ||
| - | </ | ||
| - | |||
| - | Z ukázky výše lze vidět, že jednotlivé atributy objektů lze měnit jednoduše | ||
| - | zapsáním do souboru. Akce uložení se vyvolá zapsáním jedničky, případně je to | ||
| - | i spustitelný soubor, takže jej můžeme spustit. | ||
| - | |||
| - | Pro přehlednější vytváření/ | ||
| - | '' | ||
| - | hash a po uložení a uzavření souboru se příslušná akce provede. | ||
| - | |||
| - | Tímto způsobem lze provést jakoukoli operaci v API. | ||
| - | |||
| - | ===== Ukázky použití ===== | ||
| - | Následují skripty demonstrují možnosti využití API. Tyto skripty lze | ||
| - | spouštět odkudkoli -- manuálně, z cronu, apod. | ||
| - | |||
| - | < | ||
| - | Ač jsou tyto ukázky stále validní, klient v CLI už obsahuje | ||
| - | [[navody: | ||
| - | ještě jednodušší. | ||
| - | </ | ||
| - | |||
| - | ==== Každodenní stahování záloh VPS ==== | ||
| - | <code ruby> | ||
| - | # | ||
| - | # Stažení poslední (nejnovější) zálohy všech VPS. | ||
| - | require ' | ||
| - | |||
| - | api = VpsFree:: | ||
| - | api.authenticate(: | ||
| - | |||
| - | api.dataset.list(role: | ||
| - | last_snapshot = ds.snapshot.list.last | ||
| - | |||
| - | # Volání této akce může trvat i několik hodin | ||
| - | dl = api.snapshot_download.create(snapshot: | ||
| - | | ||
| - | unless dl.api_response.ok? | ||
| - | warn "# | ||
| - | next | ||
| - | end | ||
| - | | ||
| - | # Soubor je připraven ke stažení | ||
| - | puts " | ||
| - | `wget #{dl.url}` | ||
| - | |||
| - | # Nakonec smažeme soubor ze serveru | ||
| - | dl.delete | ||
| - | end | ||
| - | |||
| - | puts " | ||
| - | </ | ||
| - | |||
| - | ==== Denní zálohování NASu s týdenní historií ==== | ||
| - | <code ruby> | ||
| - | # | ||
| - | # Denní snapshotovaní NASu se 7 denní historií | ||
| - | require ' | ||
| - | |||
| - | api = VpsFree:: | ||
| - | api.authenticate(: | ||
| - | |||
| - | api.dataset.list(role: | ||
| - | # Vytvoření nového snapshotu | ||
| - | ds.snapshot.create | ||
| - | |||
| - | # Smazání starších snapshotů | ||
| - | t = Time.now - 7 * 24 * 60 * 60 | ||
| - | snapshots = ds.snapshot.list(meta: | ||
| - | deleted = 0 | ||
| - | | ||
| - | snapshots.each do |snap| | ||
| - | # Necháme si nejméně 7 snapshotů | ||
| - | break if snapshots.total_count - deleted < 7 | ||
| - | | ||
| - | # Smazaní přebytečných snapshotů staršich než 7 dní | ||
| - | if snap.created_at < t | ||
| - | puts " | ||
| - | snap.delete | ||
| - | deleted += 1 | ||
| - | end | ||
| - | end | ||
| - | end | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | aither | ||
| - | </ | ||