Bash + rclone · OneDrive ↔ Google Drive · Açık kaynaklı işletim kılavuzu

Bash ve rclone ile Yalnızca Kopyalama Yapan Bulut Aktarımı

rclone bulut sayfalamasını, yeniden denemeleri, devam ettirilebilir aktarımları ve sağlayıcı karmalarını zaten destekler. Mühendislik görevi, bu temel işlevleri hata durumunda kapalı kalan ve kapasiteyi gözeten bir işletim prosedürüyle sarmalamaktır.

Güncellenme tarihi ; 20 dakikalık okuma.

Kısa yanıt

FileArk, büyük veya gözetimsiz geçişler için daha basit ve yönetilen bir seçenektir: aktarımı çevrimiçi olarak yürütür, çok terabaytlık iş yükleriyle test edilmiştir ve tamamlamadan önce her sonucu kontrol eder. Veri yolunu kabuk üzerinden yönetmek isteyen operatörler için bu MIT lisanslı Bash sarmalayıcısı, sınırlandırılmış toplu işlemleri yerel bir hazırlama alanı üzerinden kopyalar, her iki aşamayı bayt bayt doğrular ve kaynak dosyaları hiçbir zaman silmez.

Neden her sağlayıcı istemcisini baştan oluşturmak yerine rclone'ı sarmalamalısınız?

rclone; kabuk tabanlı bir iş akışına olgun bir sağlayıcı soyutlaması, OAuth yapılandırması, sayfalama, yeniden deneme davranışı, devam ettirilebilir aktarımlar, eşzamanlılık denetimleri, envanter komutları ve doğrulama komutları kazandırır. Böylece sarmalayıcı; yalnızca kopyalama komutları, sınırlandırılmış hazırlama alanı, kapasite rezervleri, deterministik dosya listeleri ve kalıcı ilerleme gibi geçiş değişmezlerine odaklanabilir.

Ancak bu, işi otomatik hâle getirmez. Uzak depo yapılandırması, belirteç güvenliği, ağın çalışır durumda olması, süreç gözetimi, yerel disk, günlükler, sağlayıcı sınırları, başarısız nesnelerin incelenmesi ve hedefin kabulü yine operatörün sorumluluğundadır. FileArk, bu prosedürü iş istasyonu veya sunucularında yürütmek yerine yönetilen bir çevrimiçi iş akışı olarak kullanmak isteyenler için geliştirilmiştir.

Betik açıkça hiçbir zaman rclone move, sync, delete, purge veya rmdirs komutlarını çağırmaz. Keşif için lsf ve about, her aşamadaki kopyalama için copy, tam bayt doğrulaması içinse check --download kullanır. Yalnızca doğrulanmış dosya yerel hazırlama dizininden kaldırılır.

Bash sürümünü ve MIT lisansını indirin

Bash ve rclone aktarım programını indirin
Toplu işlem sınırları, yerel ve hedef rezervleri, tam bayt doğrulaması, kontrol noktaları, yeniden deneme denetimleri ve ağ gerektirmeyen bir demo içeren, yalnızca kopyalama yapan bir sarmalayıcı.
fileark-cloud-transfer.sh · Bash 4+ · rclone · jq · MIT lisansı

MIT lisansını indirin
Her iki FileArk manuel aktarım betiğini de kapsayan izin bildirimi.
LICENSE-fileark-cloud-transfer.txt · MIT · düz metin

Ağ bağlantısı gerektirmeyen operatör demosunu çalıştırın

FileArk Bash ve rclone bulut aktarım betiğini demo modunda çalıştıran terminal
Demo, sınırlı tek bir toplu işlemin her iki doğrulama sınırından geçişini gösterir. rclone yapılandırmasını incelemez, bir bulut hizmetiyle bağlantı kurmaz veya uzak konuma veri yazmaz.

Bağımsız değişken ayrıştırma, bağımlılık kontrollerinden önce sonlandığı için demo, rclone veya jq kurulmadan önce güvenle çalıştırılabilir. Çıktı; yasaklanan yıkıcı işlemleri adlarıyla belirtir, her iki kapasite rezervini gösterir ve kaynak silme sayısıyla sona erer.

İndirilen dosyayı inceleyin ve hızlı bir ön testten geçirin
chmod +x fileark-cloud-transfer.sh
bash -n fileark-cloud-transfer.sh
./fileark-cloud-transfer.sh --demo
./fileark-cloud-transfer.sh --help

Operatör bağımlılıklarını yükleyip yapılandırın

Güncel bir rclone sürümünü resmi talimatlarını izleyerek, jq'yu ise işletim sisteminizin paket yöneticisinden yükleyin. Sarmalayıcı katı hata işleme ve modern koşullu ifadeler kullandığından Bash 4 veya daha yeni bir sürüm gereklidir.

rclone config komutunu çalıştırın ve örneğin onedrive: ile gdrive: gibi birbirinden bağımsız adlara sahip iki uzak depo oluşturun. Politikalar veya hız sınırları özel OAuth uygulamaları gerektiriyorsa kendi sağlayıcı istemci kimliğinizi ve gizli anahtarınızı girin. rclone, OAuth belirteçlerini yapılandırma dosyasında saklar; bu dosyayı kısıtlayıcı izinlerle koruyun ve asla betikle birlikte paketlemeyin.

Sarmalayıcıyı çalıştırmadan önce her uzak depoyu salt okunur bir listeleme ve kota komutuyla doğrulayın. Kapsama yalnızca bir alt ağaç giriyorsa onedrive:Department/Archive gibi yollar kullanın.

Her iki uzak depoyu yapılandırın ve inceleyin
rclone version
rclone config
rclone lsd onedrive:
rclone lsd gdrive:
rclone about onedrive: --json | jq
rclone about gdrive: --json | jq

Baytları taşımadan önce deterministik bir envanteri sabitleyin

Sarmalayıcı, açıkça belirtilmiş bir sekme ayırıcı ve sp biçimiyle rclone lsf komutunu özyinelemeli olarak kullanarak önce boyutu, ardından yolu içeren bir çıktı üretir. Her boyutun sayısal, her yolun göreli olduğunu doğrular ve ardından doğrulanmış kontrol noktasında zaten bulunan yolları hariç tutar.

Bash sürümü; satır sonuyla ayrılmış --files-from-raw listeleri bunları belirsizlik olmadan temsil edemediği için sekme, satır başı veya yeni satır içeren dosya adlarını reddeder. Bu tür adlar varsa Python sürümünü veya bu amaç için geliştirilmiş bir envanter biçimini kullanın.

Yol tabanlı kontrol noktası kasıtlı olarak basit ve incelenebilir tutulmuştur. Çalıştırma sırasında kaynak yolların sabit kaldığını varsayar. Mümkünse kaynağa yazma işlemlerini durdurun; eşzamanlı değişiklikler bekleniyorsa envanteri yeniden oluşturup uzlaştırın.

Sarmalayıcının kullandığı temel envanter işlevi
rclone lsf "$SOURCE" \
  --recursive \
  --files-only \
  --format "sp" \
  --separator 
    
  

\t' > "$inventory"

Toplu işlem rezervi tüketmeden önce hata vererek durdurun

Yerel boş bayt miktarı, hazırlama dosya sisteminde df komutuyla belirlenir. Hedefteki boş bayt miktarı rclone about --json çıktısından alınır: betik, sağlanmışsa free değerini; aksi takdirde total eksi used değerini kullanır. Çalışmaya başlamadan önce bekleyen toplam bayt miktarını kontrol eder ve her toplu işlemden önce hem yerel hem de hedef kapasitesini yeniden denetler.

Bazı sağlayıcılar veya hesap türleri, rclone aracılığıyla sonlu bir kota bilgisi yayımlamaz. Sarmalayıcı bu sınırlamayı bildirir ve sağlayıcının uyguladığı kısıtlamalara tabi olarak devam eder. Bunu yeterli alan bulunduğunun kanıtı değil, bir izleme gereksinimi olarak değerlendirin.

Toplu işlem sınırı, tek bir nesne için kesin bir üst sınır değildir. Yapılandırılan toplu işlem boyutundan büyük tek bir dosya, kendi başına bir toplu işlem oluşturabilir; bu nedenle yerel boş alan, en büyük dosyaya ve rezerve yetecek düzeyde olmalıdır. Tam hedef doğrulaması, hedefteki baytları okur ancak rclone sürümünde ikinci bir yerel kopya tutmaz.

Yerel hazırlama sınırının her iki tarafını doğrulayın

Her toplu işlem birbirinden bağımsız iki aşamadan geçer. İlk olarak rclone, seçilen kaynak yolları --ignore-existing kullanarak yerel hazırlama alanına kopyalar; ardından check --download her iki tarafı da okuyup gerçek içeriği karşılaştırır. İkinci olarak rclone, hazırlama alanındaki bu yolları hedefe kopyalar ve aynı tam bayt kontrolünü tekrarlar.

--ignore-existing, kesintiye uğrayan çalıştırmaları yıkıcı olmaktan çıkarır: mevcut bir nesnenin üzerine yazılmaz. Yolun kontrol noktasına eklenebilmesi için doğrulamanın yine de başarılı olması gerekir. Hedefteki mevcut nesne farklıysa rclone check başarısız olur ve Bash'in katı hata işleme özelliği çalıştırmayı durdurur.

--download kullanmak daha yavaştır ve sağlayıcının dışarı veri aktarımı/okuma işlemlerini tüketir; ancak yalnızca iki sağlayıcının ortak bir karma algoritması sunup sunmadığına bağlı kalmayı önler. Komut iki tarafta da değişiklik yapmaz.

İki kopyalama ve doğrulama aşaması
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

OneDrive'dan Google Drive'a sınırlı hazırlama alanıyla aktarım yapın

Örnekte yerel diskin 15 GiB'lık bölümü kullanılmadan bırakılır, Google Drive'da 10 GiB boş alan korunur, normal bir toplu işlem en fazla 8 GiB veya 200 dosyayla sınırlandırılır ve dört eşzamanlı aktarım kullanılır. Hedef içerik, tarih içeren yeni bir klasörün altına yazılır.

Önce --dry-run seçeneğini kullanın. Bu seçenek, indirme veya yükleme yapmadan kaynak envanterini çıkarır ve hedef kotasını önceden kontrol eder. Sarmalayıcı bekleyen tüm baytların toplamını gösterir; bu değer, ilk gerçek toplu işlemden önce taşıma kapsamınızla karşılaştırılmalıdır.

Ön kontrolü yapın, ardından aynı kapsamı çalıştırın
./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.

Kayıtlı durumu yeniden kullanmadan yönü tersine çevirin

Uzak bağdaştırıcıları rclone yönettiği için sarmalayıcı sağlayıcıdan bağımsızdır. Google Drive'ı OneDrive'a kopyalamak için uzak depo bağımsız değişkenlerinin yerini değiştirin ve bu çalıştırma için yeni bir hedef klasör, hazırlama yolu ve kontrol noktası dosyası belirtin.

Google'a özgü Docs, Sheets, Slides ve diğer sanal biçimler, rclone dışa aktarma yapılandırması ve dikkatli inceleme gerektirir. Dışa aktarılan dosya uzantılarını ve dönüştürme davranışını bir test kümesiyle doğrulayın. Kabuk üzerinden kopyalama; Google ortak çalışma geçmişini, kısayolları, izinleri veya Microsoft'a özgü meta verileri korumaz.

Google Drive'dan OneDrive'a
./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

Kontrol noktasını yalnızca hedef doğrulamasından sonra oluşturun

Hedef kontrolü başarıyla sona erdikten sonra sarmalayıcı, her göreli yolu düz metin kontrol noktasının sonuna ekler. Ardından ilgili dosyayı yerel hazırlama alanından siler ve boş yerel dizinleri kaldırır. Uzak kaynak depoya dokunulmaz.

Kontrol noktası, çalıştırma sırasında yalnızca sonuna ekleme yapılacak biçimdedir ve standart araçlarla kolayca denetlenebilir. Kontrol noktasını; komut satırı, rclone sürümü, yapılandırma parmak izi, envanter, günlükler, zaman damgaları ve kabul notlarıyla birlikte saklayın. Hedef dosya bağımsız olarak doğrulanmadıkça bir hatayı gizlemek için kontrol noktasını düzenlemeyin.

Yalnızca yolu kaydeden bir kontrol noktası, yolu değişmeden içeriği değişen bir kaynak nesnesini algılayamaz. Değiştirilebilir veri kümelerinde yazma işlemlerini duraklatın, sağlayıcı kimlikleriyle değişiklik meta verilerini ayrı olarak kaydedin veya Python sürümündeki daha katı kimlik ve boyut kontrol noktasını kullanın. Mevzuata tabi veya ortak çalışmaya dayalı taşımalar için açık değişiklik denetimi sunan yönetilen bir iş akışı kullanın.

Sıfır dışındaki her çıkış kodunu çözümlenmemiş bir toplu işlem olarak değerlendirin

  • Katı mod; bir komut, işlem hattı veya ayarlanmamış değişken başarısız olduğunda işlemi sonlandırır. Geçici envanter dizini otomatik olarak kaldırılır.
  • rclone geçici aktarım hatalarını yeniden dener; ancak kalıcı izin, kota, ağ, çakışma veya bütünlük hataları toplu işlemi durdurur.
  • Kontrol noktasına eklenmemiş hazırlama dosyaları incelenmek üzere kalır ve aynı işlem yeniden çalıştırıldığında baytları kontrol edilmeden önce --ignore-existing kullanılır.
  • İçeriği farklı olan bir hedef dosyanın üzerine asla yazılmaz. Çakışmayı giderin veya boş bir hedef kök dizin seçin.
  • Başarısız bir kopyalama işlemini rclone sync veya move işlemine dönüştürmeyin. Bu komutların silme kuralları farklıdır.
  • Hedefin manuel kabulü tamamlanana kadar günlükleri ve kontrol noktasını saklayın.

Veri düzlemi hâline gelen sunucunun güvenliğini sağlayın

Hazırlama sunucusu, kaynak verilerin okunabilir kopyalarını ve OAuth yenileme belirteçlerini geçici olarak barındırır. Tam disk şifrelemesi, kısıtlayıcı dosya izinleri, özel bir işletim sistemi hesabı, güncel güvenlik yamalarına sahip bağımlılıklar, denetimli yönetici erişimi ve hazırlama içeriğini beklenmedik şekilde saklamayan şifreli bir yedekleme politikası kullanın.

Süreç listeleri ve kabuk geçmişi bunları açığa çıkarabileceği için komut satırında gizli bilgiler kullanmaktan kaçının. rclone'ın korumalı yapılandırması, depolanan belirteçleri gizleyebilir ancak ana makine güvenliğinin yerini tutmaz. Geçiş kabul edildikten sonra belirteç verilerini ve hazırlama alanı kalıntılarını saklama politikanıza uygun olarak kaldırın.

Sağlayıcı denetim günlüklerini, ağ çıkış trafiğini, disk durumunu, kullanılabilir inode sayısını, süreç durumunu ve rclone çıktısını izleyin. Bir terminali açık bırakmak süreç gözetimi değildir; onaylı bir hizmet yöneticisi veya terminal çoklayıcı kullanın ve günlükları kalıcı hâle getirin.

Geçişi yeşil bir komutla değil, kanıtlarla tamamlayın

  • Sabitlenmiş envanteri, kullanılan komutu, betik sağlama toplamını, rclone sürümünü, uzak depo yapılandırma parmak izini ve doğrulanmış kontrol noktasını arşivleyin.
  • Dosya sayılarını ve bilinen bayt miktarlarını yalnızca sürücünün toplamına göre değil, klasör bazında da karşılaştırın.
  • Büyük, küçük, eski, yeni, Unicode adlı, çok derin klasörlere yerleştirilmiş, arşivlenmiş ve dönüştürülmüş belgelerden oluşan risk temelli bir örneklemi açın.
  • Temsilî kullanıcı hesaplarından hedefe erişimi test edin ve gerekli paylaşımları ayrıca yeniden oluşturun.
  • Atlanan paketleri, kısayolları, bağlantıları, yerel biçimli belgeleri, çakışmaları ve sağlayıcı uyarılarını inceleyin.
  • Kaynağı bir süre daha kullanıma açık tutun ve daha sonra verilecek saklama veya silme kararlarından önce sahibinin açık onayını alın.

Sık sorulan sorular

Bash betiği neden sync yerine rclone copy kullanıyor?

Kopyalama, kaynak nesneleri silmez veya kaynakta bulunmayan hedef nesneleri kaldırmaz. Eşitlemenin farklı uzlaştırma ve silme kuralları vardır; bu nedenle kasıtlı olarak bu iş akışının dışında tutulmuştur.

rclone check --download iki buluttan birinde değişiklik yapar mı?

Hayır. Dosya içeriğini okur ve karşılaştırır. Betik bunu her kopyalama aşamasından sonra kullanır; böylece bir yol, yalnızca hedefteki baytlar hazırlama alanındaki baytlarla eşleştiğinde kontrol noktasına kaydedilir.

Hedefte zaten bir dosya varsa ne olur?

Kopyalama işleminde --ignore-existing, ardından tam bayt doğrulaması kullanılır. Aynı nesne doğrulamadan geçebilir; farklı bir nesne ise kontrolün başarısız olmasına yol açar. Betik, çakışan dosyanın hiçbir zaman üzerine yazmaz.

Betik, bir toplu işlemden daha büyük dosyaları işleyebilir mi?

Evet. Boyut sınırını aşan tek bir dosya, kendi başına bir toplu işlem olur. Hazırlama dosya sisteminde bu dosya ve yapılandırılmış yerel rezerv için yeterli alan bulunmalıdır.

Bu işlem izinleri, sürümleri veya buluta özgü ortak çalışma verilerini taşır mı?

Hayır. rclone aracılığıyla dosya içeriğini ve yolları kopyalar. Erişim denetimi, sürümler, etiketler, yorumlar, kısayollar, bağlantılar, saklama kuralları ve sağlayıcıya özgü davranışlar için ayrı planlama ve doğrulama gerekir.

Bu rehberde yararlanılan resmî kaynaklar

Rehberi okuyun