Bash + rclone · OneDrive ↔ Google Drive · Open source provozní příručka

Cloudový přenos v Bashi s rclone určený pouze ke kopírování

rclone již podporuje stránkování v cloudu, opakování pokusů, obnovitelné přenosy a kontrolní součty poskytovatelů. Technickým úkolem je tyto základní funkce zapojit do provozního postupu, který při chybě bezpečně skončí a zohledňuje dostupnou kapacitu.

Aktualizováno ; 20 min čtení.

Stručná odpověď

FileArk je jednodušší spravovanou volbou pro rozsáhlé migrace nebo migrace bez obsluhy: přenos provádí online, byl otestován se zátěží v řádu několika terabajtů a před dokončením kontroluje každý výsledek. Pro provozovatele, kteří chtějí datový tok řídit shellem, tento obálkový skript v Bashi s licencí MIT kopíruje omezené dávky přes místní pracovní oblast, ověřuje obě části přenosu bajt po bajtu a nikdy neodstraňuje zdrojové soubory.

Proč vytvořit obálkový skript pro rclone namísto nových klientů pro každého poskytovatele

rclone poskytuje shellovému pracovnímu postupu vyspělou abstrakci poskytovatelů, konfiguraci OAuth, stránkování, opakování pokusů, obnovitelné přenosy, řízení souběžnosti a příkazy pro inventář i ověřování. Obálkový skript se proto může soustředit na neměnné zásady migrace: výhradně kopírovací příkazy, omezenou pracovní oblast, kapacitní rezervy, deterministické seznamy souborů a trvalé zaznamenávání průběhu.

To však neznamená, že je úloha automatická. Provozovatel stále odpovídá za konfiguraci vzdálených úložišť, zabezpečení tokenů, dostupnost sítě, dohled nad procesem, místní disk, protokoly, limity poskytovatelů, kontrolu neúspěšných objektů a schválení cíle. FileArk je určen uživatelům, kteří chtějí tento postup provozovat jako spravovaný online pracovní proces, a ne na své pracovní stanici či serveru.

Skript výslovně nikdy nespouští rclone move, sync, delete, purge ani rmdirs. Pro zjišťování používá lsf a about, pro každou část přenosu copy a k úplnému ověření všech bajtů check --download. Odstraní pouze ověřený soubor z místní pracovní oblasti.

Stáhněte si verzi v Bashi a licenci MIT

Stáhnout přenosový program v Bashi s rclone
Obálkový skript určený pouze ke kopírování s limity dávek, rezervami v místním i cílovém úložišti, úplným ověřením všech bajtů, kontrolními body, řízením opakovaných pokusů a ukázkou bez připojení k síti.
fileark-cloud-transfer.sh · Bash 4+ · rclone · jq · licence MIT

Stáhnout licenci MIT
Licenční ujednání vztahující se na oba skripty FileArk pro ruční přenos.
LICENSE-fileark-cloud-transfer.txt · MIT · prostý text

Spusťte ukázku pro správce bez připojení k síti

Terminál se skriptem FileArk pro cloudový přenos v Bashi s rclone spuštěným v ukázkovém režimu
Ukázka předvádí průchod jedné kapacitně omezené dávky přes obě hranice ověření. Nekontroluje konfiguraci rclone, nekontaktuje cloud ani nezapisuje vzdálená data.

Ukázku lze bezpečně spustit ještě před instalací nástrojů rclone nebo jq, protože zpracování argumentů skončí dříve, než se zkontrolují závislosti. Výstup uvádí názvy zakázaných destruktivních operací, zobrazuje obě kapacitní rezervy a končí počtem odstranění ze zdroje.

Zkontrolujte stažené soubory a proveďte rychlý základní test
chmod +x fileark-cloud-transfer.sh
bash -n fileark-cloud-transfer.sh
./fileark-cloud-transfer.sh --demo
./fileark-cloud-transfer.sh --help

Nainstalujte a nakonfigurujte závislosti pro správce

Podle oficiálních pokynů nainstalujte aktuální verzi rclone a nástroj jq nainstalujte pomocí správce balíčků svého operačního systému. Je vyžadován Bash 4 nebo novější, protože obalový skript používá striktní zpracování chyb a moderní podmíněné výrazy.

Spusťte rclone config a vytvořte dvě nezávisle pojmenovaná vzdálená úložiště, například onedrive: a gdrive:. Pokud zásady nebo omezení přenosové rychlosti vyžadují samostatné aplikace OAuth, zadejte vlastní ID klienta a tajný klíč od poskytovatele. rclone ukládá tokeny OAuth do svého konfiguračního souboru. Chraňte jej omezujícími oprávněními a nikdy jej nepřibalujte ke skriptu.

Před spuštěním obálkového skriptu ověřte každé vzdálené úložiště pomocí výpisu pouze pro čtení a příkazu pro kvótu. Pokud se má zpracovat pouze podstrom, použijte cesty jako onedrive:Department/Archive.

Nakonfigurujte a zkontrolujte obě vzdálená úložiště
rclone version
rclone config
rclone lsd onedrive:
rclone lsd gdrive:
rclone about onedrive: --json | jq
rclone about gdrive: --json | jq

Před přenosem bajtů zmrazte deterministický inventář

Obálkový skript používá rekurzivní příkaz rclone lsf s explicitně nastaveným tabulátorem jako oddělovačem a formátem sp, čímž vytvoří velikost následovanou cestou. Ověří, že každá velikost je číselná a každá cesta relativní, a poté vyloučí cesty, které již jsou v ověřeném kontrolním bodu.

Verze v Bashi odmítá názvy souborů obsahující tabulátory, návraty vozíku nebo konce řádků, protože seznamy --files-from-raw oddělené konci řádků je nedokážou jednoznačně reprezentovat. Pokud se takové názvy vyskytují, použijte verzi v Pythonu nebo formát inventáře navržený pro tento účel.

Kontrolní bod založený na cestách je záměrně jednoduchý a snadno kontrolovatelný. Předpokládá, že zdrojové cesty zůstanou během běhu stabilní. Pokud je to možné, pozastavte zápisy do zdroje. Očekáváte-li souběžné změny, inventář znovu vygenerujte a porovnejte.

Základní příkaz pro inventář používaný obálkovým skriptem
rclone lsf "$SOURCE" \
  --recursive \
  --files-only \
  --format "sp" \
  --separator 
    
  

\t' > "$inventory"

Ukončete přenos dříve, než dávka spotřebuje rezervu

Počet volných bajtů v místním úložišti se získává pomocí df v souborovém systému pracovní oblasti. Počet volných bajtů v cíli pochází z rclone about --json: pokud je k dispozici hodnota free, skript ji použije, jinak odečte used od total. Před zahájením práce zkontroluje celkový počet nevyřízených bajtů a před každou dávkou znovu zkontroluje místní i cílovou kapacitu.

Někteří poskytovatelé nebo některé typy účtů nezveřejňují prostřednictvím rclone konečnou kvótu. Obalový skript na toto omezení upozorní a pokračuje s limity vynucovanými poskytovatelem. Považujte to za požadavek na monitorování, nikoli za důkaz dostatku místa.

Limit dávky není pevným maximem pro jeden objekt. Jediný soubor větší než nakonfigurovaná dávka může vytvořit vlastní dávku, takže volné místo na místním disku musí pokrýt největší soubor a rezervu. Úplné ověření cíle čte bajty z cílového úložiště, ale ve verzi s rclone neuchovává druhou místní kopii.

Ověřte obě strany místního dočasného úložiště

Každá dávka prochází dvěma nezávislými částmi přenosu. Nejprve rclone zkopíruje vybrané zdrojové cesty do místní pracovní oblasti pomocí --ignore-existing. Poté check --download načte obě strany a porovná jejich skutečný obsah. Následně rclone zkopíruje tyto připravené cesty do cíle a zopakuje stejné úplné ověření všech bajtů.

Přepínač --ignore-existing zajišťuje, že přerušené běhy nebudou destruktivní: existující objekt se nepřepíše. Než lze cestu zapsat do kontrolního bodu, musí ověření přesto proběhnout úspěšně. Pokud se existující cílový objekt liší, rclone check selže a přísné zpracování chyb v Bashi běh zastaví.

Použití --download je pomalejší a spotřebovává odchozí datový přenos a operace čtení u poskytovatelů, ale nespoléhá pouze na to, zda oba poskytovatelé zpřístupňují společný hashovací algoritmus. Příkaz nemění data na žádné straně.

Dvě části kopírování a ověřování
rclone copy "$SOURCE" "$STAGING_DIR" \
  --files-from-raw "$batch_list" \
  --ignore-existing --retries 6 --low-level-retries 20

rclone check "$SOURCE" "$STAGING_DIR" \
  --files-from-raw "$batch_list" --one-way --download

rclone copy "$STAGING_DIR" "$DESTINATION_ROOT" \
  --files-from-raw "$batch_list" \
  --ignore-existing --retries 6 --low-level-retries 20

rclone check "$STAGING_DIR" "$DESTINATION_ROOT" \
  --files-from-raw "$batch_list" --one-way --download

Spusťte přenos z OneDrive na Google Drive s kapacitně omezeným dočasným úložištěm

Příklad ponechává 15 GiB místního disku nedotčených a 10 GiB volných na Google Drive, omezuje běžnou dávku na 8 GiB nebo 200 souborů a používá čtyři souběžné přenosy. Obsah se do cíle zapisuje v nové složce označené datem.

Nejprve použijte --dry-run. Provede soupis zdroje a předběžnou kontrolu kvóty cíle bez stahování či nahrávání. Obalový skript vypíše celkový počet bajtů čekajících na přenos, který byste před první skutečnou dávkou měli porovnat s rozsahem migrace.

Proveďte předběžnou kontrolu a poté spusťte stejný rozsah
./fileark-cloud-transfer.sh \
  --source onedrive: \
  --destination gdrive: \
  --destination-folder "OneDrive archive 2026-07-25" \
  --staging-dir /srv/fileark-staging \
  --state-file ./onedrive-to-google-verified.txt \
  --batch-gib 8 \
  --batch-files 200 \
  --local-reserve-gib 15 \
  --destination-reserve-gib 10 \
  --transfers 4 \
  --checkers 8 \
  --dry-run

# Remove only --dry-run after reviewing the preflight.

Obraťte směr bez opětovného použití stavu

Obálkový skript je nezávislý na poskytovateli, protože vzdálené adaptéry spravuje rclone. Chcete-li zkopírovat Google Drive do OneDrive, prohoďte argumenty vzdálených úložišť a pro toto spuštění zadejte novou cílovou složku, cestu pracovní oblasti a soubor kontrolních bodů.

Dokumenty, Tabulky, Prezentace a další virtuální formáty Google vyžadují konfiguraci exportu v rclone a pečlivou kontrolu. Na testovací sadě ověřte exportované přípony a způsob převodu. Kopírování pomocí shellu nezachová historii spolupráce Google, zástupce, oprávnění ani metadata specifická pro Microsoft.

Z Google Drivu do OneDrivu
./fileark-cloud-transfer.sh \
  --source gdrive: \
  --destination onedrive: \
  --destination-folder "Google archive 2026-07-25" \
  --staging-dir /srv/google-staging \
  --state-file ./google-to-onedrive-verified.txt \
  --batch-gib 8 \
  --local-reserve-gib 15

Kontrolní bod vytvořte až po ověření cíle

Po úspěšném dokončení kontroly cíle připojí obálkový skript každou relativní cestu do kontrolního bodu v prostém textu. Poté příslušný soubor odstraní z místní pracovní oblasti a odstraní prázdné místní adresáře. Vzdálený zdroj zůstane nedotčený.

Během běhu se do kontrolního bodu pouze přidává a lze jej snadno auditovat standardními nástroji. Uchovejte jej společně s příkazovým řádkem, verzí rclone, otiskem konfigurace, inventářem, protokoly, časovými razítky a poznámkami ke schválení. Neupravujte jej s cílem potlačit selhání, pokud cílový soubor nebyl nezávisle ověřen.

Kontrolní bod založený pouze na cestě nedokáže rozpoznat zdrojový objekt, jehož obsah se změnil, ale cesta nikoli. U proměnlivých datových sad pozastavte zápisy, samostatně zaznamenejte ID poskytovatele a metadata o změnách nebo použijte přísnější kontrolní bod podle ID a velikosti z verze v Pythonu. U regulovaných migrací nebo migrací dat pro spolupráci použijte spravovaný pracovní postup s výslovným řízením změn.

Každé ukončení s nenulovým kódem považujte za nevyřešenou dávku

  • Přísný režim ukončí běh při selhání příkazu či zřetězení příkazů nebo při použití nenastavené proměnné. Dočasný adresář inventáře se odstraní automaticky.
  • rclone opakuje dočasně neúspěšné přenosy, ale trvalé chyby oprávnění, kvóty, sítě, konfliktů nebo integrity dávku zastaví.
  • Připravené soubory dosud nezapsané do kontrolního bodu zůstávají k dispozici ke kontrole a při totožném opakovaném spuštění se před kontrolou jejich bajtů použije --ignore-existing.
  • Odlišný soubor v cíli se nikdy nepřepíše. Vyřešte konflikt nebo zvolte prázdný kořenový adresář cíle.
  • Neúspěšné kopírování neměňte na rclone sync ani move. Tyto příkazy používají jiné principy odstraňování.
  • Protokoly a kontrolní bod uchovejte až do dokončení ručního schválení cíle.

Zabezpečte hostitele, který se stane datovou rovinou

Dočasný hostitel obsahuje po omezenou dobu čitelné kopie zdrojových dat a obnovovací tokeny OAuth. Používejte šifrování celého disku, restriktivní oprávnění k souborům, vyhrazený účet operačního systému, aktualizované závislosti, řízený přístup správců a zásady šifrovaného zálohování, které nebudou neočekávaně uchovávat obsah dočasného úložiště.

Nezadávejte tajné údaje na příkazovém řádku, protože je mohou odhalit seznamy procesů a historie shellu. Chráněná konfigurace rclone může tokeny uložené na disku zakrýt, nenahrazuje však zabezpečení hostitele. Po schválení migrace odstraňte tokeny a pozůstatky pracovní oblasti podle svých zásad uchovávání dat.

Sledujte auditní protokoly poskytovatelů, odchozí síťový provoz, stav disku, dostupnost inode, stav procesu a výstup rclone. Otevřený terminál není dohled nad procesem. Použijte schváleného správce služeb nebo terminálový multiplexer a zajistěte trvalé ukládání protokolů.

Migraci uzavřete na základě důkazů, ne zeleného příkazu

  • Archivujte zmrazený inventář, přesný příkaz, kontrolní součet skriptu, verzi rclone, otisk konfigurace vzdálených úložišť a ověřený kontrolní bod.
  • Porovnejte počty souborů a známé objemy dat v bajtech po jednotlivých složkách, nejen celkově za celý disk.
  • Otevřete vzorek založený na riziku, který zahrnuje velké, malé, staré, nové, archivované a převedené dokumenty, dokumenty s názvy v Unicode a dokumenty z hluboce vnořených složek.
  • Otestujte přístup k cíli z reprezentativních uživatelských účtů a potřebná sdílení vytvořte samostatně.
  • Zkontrolujte přeskočené balíčky, zástupce, odkazy, nativní dokumenty, konflikty a upozornění poskytovatelů.
  • Po určitou dobu zachovejte data také ve zdroji a před jakýmkoli pozdějším rozhodnutím o uchování či odstranění si vyžádejte výslovný souhlas vlastníka.

Časté dotazy

Proč skript v Bashi používá rclone copy místo sync?

Kopírování neodstraňuje zdrojové objekty ani cílové objekty, které se ve zdroji nenacházejí. Synchronizace používá jiné principy porovnávání a odstraňování, proto do tohoto pracovního postupu záměrně nepatří.

Mění rclone check --download obsah některého z cloudů?

Ne. Čte a porovnává obsah souborů. Skript tuto kontrolu používá po každé etapě kopírování, takže se pro cestu vytvoří kontrolní bod až poté, co se bajty v cíli shodují s bajty v dočasném úložišti.

Co se stane, když už cíl obsahuje soubor?

Kopírování používá --ignore-existing a poté úplné ověření všech bajtů. Shodný objekt může kontrolou projít, odlišný objekt způsobí její selhání. Skript konfliktní objekt nikdy nepřepíše.

Dokáže skript zpracovat soubory větší než jedna dávka?

Ano. Jeden nadměrně velký soubor vytvoří vlastní dávku. Souborový systém dočasného úložiště musí mít místo pro tento soubor i nakonfigurovanou místní rezervu.

Migrují se tím oprávnění, verze nebo data cloudové spolupráce?

Ne. Prostřednictvím rclone se kopíruje obsah souborů a jejich cesty. Řízení přístupu, verze, štítky, komentáře, zástupci, odkazy, pravidla uchovávání a chování specifické pro poskytovatele vyžadují samostatné plánování a ověření.

Oficiální zdroje použité v tomto průvodci

Přečíst návod