Bash + rclone · OneDrive ↔ Google Drive · Przewodnik operacyjny typu open source
Transfer między chmurami wyłącznie przez kopiowanie w Bash z rclone
rclone obsługuje już stronicowanie w chmurze, ponawianie prób, wznawialne transfery i skróty dostawców. Zadanie inżynieryjne polega na ujęciu tych mechanizmów w procedurę operacyjną, która w razie błędu bezpiecznie przerywa działanie i uwzględnia dostępną pojemność.
Zaktualizowano ; 20 min czytania.
Krótka odpowiedź
FileArk to prostsze, zarządzane rozwiązanie do dużych lub nienadzorowanych migracji: przeprowadza transfer online, został przetestowany z obciążeniami obejmującymi wiele terabajtów i sprawdza każdy wynik przed zakończeniem. Operatorom, którzy chcą kontrolować przepływ danych z poziomu powłoki, ten objęty licencją MIT skrypt opakowujący Bash umożliwia kopiowanie ograniczonych partii przez lokalny obszar przejściowy, weryfikuje oba etapy bajt po bajcie i nigdy nie usuwa plików źródłowych.
Dlaczego warto użyć skryptu opakowującego rclone zamiast odtwarzać klienta każdego dostawcy
rclone zapewnia skryptom powłoki dojrzałą warstwę abstrakcji dostawców, konfigurację OAuth, stronicowanie, mechanizmy ponawiania prób, wznawialne transfery, kontrolę współbieżności oraz polecenia do tworzenia spisów i weryfikacji. Dzięki temu skrypt opakowujący może skupić się na niezmiennych zasadach migracji: poleceniach wyłącznie kopiujących, ograniczonym obszarze przejściowym, rezerwach pojemności, deterministycznych listach plików i trwałym zapisie postępu.
Nie oznacza to, że zadanie jest automatyczne. Operator nadal odpowiada za konfigurację zdalnych magazynów, bezpieczeństwo tokenów, dostępność sieci, nadzorowanie procesu, dysk lokalny, dzienniki, limity dostawców, przegląd obiektów zakończonych błędem oraz odbiór miejsca docelowego. FileArk jest przeznaczony dla użytkowników, którzy wolą, aby ta procedura działała jako zarządzany proces online, a nie na ich stacji roboczej lub serwerze.
Skrypt nigdy nie wywołuje poleceń rclone move, sync, delete, purge ani rmdirs. Do wykrywania danych używa lsf i about, do każdego etapu — copy, a do pełnej weryfikacji bajt po bajcie — check --download. Usuwany jest wyłącznie zweryfikowany plik z lokalnego katalogu przejściowego.
Pobierz wersję Bash i licencję MIT
Pobierz program do transferu oparty na Bash i rclone
Skrypt opakowujący wyłącznie do kopiowania, z limitami partii, rezerwami miejsca lokalnego i docelowego, pełną weryfikacją bajt po bajcie, punktami kontrolnymi, kontrolą ponawiania prób oraz trybem demonstracyjnym niewymagającym sieci.fileark-cloud-transfer.sh · Bash 4+ · rclone · jq · licencja MIT
Pobierz licencję MIT
Informacja o licencji obejmująca oba skrypty FileArk do ręcznego transferu.LICENSE-fileark-cloud-transfer.txt · MIT · zwykły tekst
Uruchom demonstrację dla operatora bez dostępu do sieci

Tryb demonstracyjny można bezpiecznie uruchomić przed zainstalowaniem rclone lub jq, ponieważ po przeanalizowaniu argumentów program kończy działanie przed sprawdzeniem zależności. Dane wyjściowe wymieniają zabronione operacje destrukcyjne, pokazują obie rezerwy pojemności, a na końcu podają liczbę usunięć ze źródła.
chmod +x fileark-cloud-transfer.sh
bash -n fileark-cloud-transfer.sh
./fileark-cloud-transfer.sh --demo
./fileark-cloud-transfer.sh --helpZainstaluj i skonfiguruj zależności wymagane przez operatora
Zainstaluj aktualną wersję rclone zgodnie z oficjalnymi instrukcjami, a jq — za pomocą menedżera pakietów systemu operacyjnego. Wymagany jest Bash 4 lub nowszy, ponieważ skrypt opakowujący korzysta z rygorystycznej obsługi błędów i nowoczesnych wyrażeń warunkowych.
Uruchom rclone config i utwórz dwa zdalne magazyny o niezależnych nazwach, na przykład onedrive: i gdrive:. Jeśli zasady lub limity szybkości wymagają osobnych aplikacji OAuth, wprowadź własny identyfikator klienta i klucz tajny dostawcy. rclone przechowuje tokeny OAuth w swoim pliku konfiguracyjnym. Zabezpiecz ten plik restrykcyjnymi uprawnieniami i nigdy nie dołączaj go do skryptu.
Przed uruchomieniem skryptu opakowującego sprawdź każdy zdalny magazyn za pomocą polecenia wyświetlającego listę tylko do odczytu oraz polecenia sprawdzającego limit. Jeśli zakres obejmuje tylko część drzewa, użyj ścieżek takich jak onedrive:Department/Archive.
rclone version
rclone config
rclone lsd onedrive:
rclone lsd gdrive:
rclone about onedrive: --json | jq
rclone about gdrive: --json | jqUtwórz niezmienny, deterministyczny spis przed rozpoczęciem przesyłania danych
Skrypt opakowujący rekurencyjnie używa polecenia rclone lsf z jawnym separatorem tabulacji i formatem sp, co daje rozmiar, a po nim ścieżkę. Sprawdza, czy każdy rozmiar jest liczbą, a każda ścieżka jest względna, po czym wyklucza ścieżki już obecne w zweryfikowanym punkcie kontrolnym.
Wersja Bash odrzuca nazwy plików zawierające tabulatory, znaki powrotu karetki lub znaki nowego wiersza, ponieważ rozdzielane znakami nowego wiersza listy --files-from-raw nie mogą ich jednoznacznie reprezentować. Jeśli takie nazwy występują, użyj wersji Python lub specjalnie zaprojektowanego formatu spisu.
Punkt kontrolny oparty na ścieżkach jest celowo prosty i łatwy do sprawdzenia. Zakłada, że ścieżki źródłowe pozostają niezmienne podczas działania programu. Jeśli to możliwe, wstrzymaj zapisy w źródle. Gdy spodziewasz się równoczesnych zmian, ponownie wygeneruj spis i uzgodnij różnice.
rclone lsf "$SOURCE" \
--recursive \
--files-only \
--format "sp" \
--separator