Python · Google Drive ↔ OneDrive · ওপেন-সোর্স প্রকৌশল নির্দেশিকা

Python দিয়ে নিরাপদ Google Drive–OneDrive ট্রান্সফার তৈরি করুন

এই নির্দেশিকা আপাতদৃষ্টিতে সহজ কিন্তু বাস্তবে কঠিন একটি ক্লাউড কপিকে সুস্পষ্ট পাইপলাইনে রূপ দেয়: তালিকা তৈরি, প্রিফ্লাইট, স্টেজ, হ্যাশ, আপলোড, পুনরায় ডাউনলোড, তুলনা, চেকপয়েন্ট এবং কেবল তারপরই স্থানীয় ডিস্কের জায়গা ছেড়ে দেওয়া।

হালনাগাদ ; 22 মিনিটে পড়া যাবে.

সংক্ষিপ্ত উত্তর

পরিচালিত মাইগ্রেশনের জন্য FileArk আপনার কম্পিউটারকে ডেটা প্লেন হিসেবে ব্যবহার না করেই এই ওয়ার্কফ্লো স্বয়ংক্রিয় করে। বহু-টেরাবাইট মাইগ্রেশন ওয়ার্কলোড দিয়ে এটি পরীক্ষা করা হয়েছে এবং সফলতা জানানোর আগে উৎস থেকে ডেটা গ্রহণ, প্রোভাইডারের আপলোড গ্রহণ এবং গন্তব্য অবজেক্ট পরীক্ষা করে। পাইপলাইনটি নিজে পরিচালনা করতে চাইলে নিচের MIT-লাইসেন্সকৃত Python প্রোগ্রামটি আপনার কম্পিউটারের মাধ্যমে সতর্কভাবে কপি করে এবং কখনোই উৎসের ফাইল মুছে দেয় না।

কোড বেছে নেওয়ার আগে পরিচালনার মডেল বেছে নিন

ফাইলের সংগ্রহ বড় হলে, সংযোগটি তত্ত্বাবধান ছাড়াই চালাতে হলে বা ল্যাপটপের মাধ্যমে ডেটা নেওয়া-আনা না চাইলে সরাসরি ক্লাউড মাইগ্রেশন সেবা ব্যবহার করাই বাস্তবসম্মত। FileArk ট্রান্সফারটি অনলাইনে চালু রাখে, প্রোভাইডারের প্রতিক্রিয়া পর্যবেক্ষণ করে, পুনরুদ্ধারযোগ্য ব্যর্থতায় আবার চেষ্টা করে এবং অগ্রগতি দেখার জন্য একটি সমন্বিত ভিউ দেয়। কোনো ফাইলকে সম্পূর্ণ হিসেবে গণ্য করার আগে এর যাচাই প্রক্রিয়া তিনটি স্বতন্ত্র পরীক্ষা চালায়।

OAuth অ্যাপ্লিকেশন, স্টেজিং ডিস্ক, লগ বা গন্তব্য ফোল্ডারের নীতির ওপর পূর্ণ নিয়ন্ত্রণের প্রয়োজন হলে স্থানীয় স্ক্রিপ্ট উপযোগী। এর বিনিময়ে পরিচালনার দায়িত্ব আপনাকেই নিতে হবে: আপনার মেশিন অনলাইনে রাখতে হবে, এর নেটওয়ার্ক সংযোগ বটলনেক হয়ে উঠবে, OAuth ক্রেডেনশিয়াল সুরক্ষিত রাখতে হবে এবং সক্রিয় ব্যাচ ও যাচাইকরণ কপির জন্য পর্যাপ্ত অস্থায়ী ডিস্ক স্পেস খালি রাখতে হবে।

এখানে প্রকাশিত প্রোগ্রামটি ইচ্ছাকৃতভাবে রক্ষণশীল। এটি একটি ব্যক্তিগত ড্রাইভের রুট থেকে গন্তব্যের একটি নতুন ফোল্ডারে কপি করে। এটি মুছে ফেলার কোনো মেথড দেয় না, কনফ্লিক্ট হলে ওভাররাইট করে না, যাচাইয়ের পর স্থায়ী চেকপয়েন্ট সংরক্ষণ করে এবং স্থানীয় বা গন্তব্যের ধারণক্ষমতা আপনার কনফিগার করা রিজার্ভের নিচে নামলে থেমে যায়।

ট্রান্সফার পাইপলাইন ও এর ব্যর্থতার সীমারেখা

  1. উৎস ট্রির ইনভেন্টরি তৈরি করুন

    সোর্স অ্যাডাপ্টারটি রিকার্সিভভাবে ফোল্ডার ঘুরে দেখে, প্রোভাইডারের পেজিনেশন অনুসরণ করে, ID, পাথ, ধরন ও জানানো আকার রেকর্ড করে এবং সমর্থিত Google-নেটিভ ফাইলকে বহনযোগ্য এক্সপোর্ট ফরম্যাটে রূপান্তর করে।

  2. গন্তব্য ও স্থানীয় ধারণক্ষমতার প্রিফ্লাইট পরীক্ষা করুন

    ইঞ্জিনটি অপেক্ষমাণ বাইট ও কনফিগারযোগ্য রিজার্ভের যোগফলকে গন্তব্যের কোটার সঙ্গে তুলনা করে। এটি প্রতিটি ব্যাচ ও প্রতিটি আলাদা ডাউনলোডের আগেও স্টেজিং ফাইলসিস্টেম যাচাই করে।

  3. সীমাবদ্ধ আকারের একটি ব্যাচ স্টেজ করুন

    মোট বাইট ও ফাইলের সংখ্যা—উভয়ের সীমা অনুযায়ী ফাইলগুলো ব্যাচে প্রক্রিয়া করা হয়। শুধু বর্তমান ব্যাচটিই স্থানীয় ডিস্ক ব্যবহার করে, তাই বড় লাইব্রেরির জন্য একই আকারের ড্রাইভের প্রয়োজন হয় না।

  4. হ্যাশ করে আপলোড করুন

    ডাউনলোডের পর স্ক্রিপ্টটি স্থানীয়ভাবে SHA-256 হিসাব করে, উৎসের জানা আকার যাচাই করে, গন্তব্য ফোল্ডার তৈরি করে এবং প্রোভাইডারের সঙ্গে সামঞ্জস্যপূর্ণ পুনরায় শুরু করা যায় এমন খণ্ডে আপলোড করে।

  5. যাচাই ও চেকপয়েন্ট তৈরি করুন

    ডিফল্ট মোডে গন্তব্যের নতুন অবজেক্টটি আবার ডাউনলোড করে SHA-256 তুলনা করা হয়। শুধু মিলে যাওয়া ফাইলটিই JSON চেকপয়েন্টে নথিভুক্ত করা হয় এবং স্থানীয় স্টেজিং থেকে সরানো হয়।

সম্পূর্ণ MIT-লাইসেন্সকৃত Python সংস্করণ ডাউনলোড করুন

ডাউনলোডটি একটি সহজপাঠ্য একক Python এন্ট্রি পয়েন্ট। শুধু প্রকৃত স্থানান্তরের সময় প্রোভাইডার SDK ইমপোর্ট করা হয়, তাই ডিপেন্ডেন্সি বা ক্রেডেনশিয়াল ইনস্টল করার আগেই ডেমো ও সহায়তা কমান্ড চালানো যায়। আলাদা requirements ফাইলে ন্যূনতম সমর্থিত প্যাকেজগুলোর সংস্করণ নির্দিষ্ট করা আছে এবং সোর্সের পাশেই লাইসেন্স দেওয়া হয়েছে।

ব্যবহারের আগে কোডটি পড়ুন, গন্তব্যের একটি ছোট ফোল্ডার দিয়ে পরীক্ষা করুন এবং মূল্যবান ডেটার জন্য ডিফল্ট পুনরায় ডাউনলোড যাচাইকরণ চালু রাখুন। কোনো সাধারণ স্ক্রিপ্টই প্রতিটি শেয়ারিং অনুমতি, শর্টকাট, রিটেনশন লেবেল, শেয়ার্ড ড্রাইভের নিয়ম বা টেন্যান্ট নীতি হুবহু পুনরুৎপাদন করতে পারে না।

Python স্থানান্তর প্রোগ্রামটি ডাউনলোড করুন
ব্যাচিং, চেকপয়েন্ট, পুনঃচেষ্টা, কোটা রিজার্ভ এবং গন্তব্যের SHA-256 যাচাইকরণসহ সরাসরি Google Drive API ও Microsoft Graph ইমপ্লিমেন্টেশন।
fileark-cloud-transfer.py · Python 3.10+ · MIT লাইসেন্স

Python-এর requirements ডাউনলোড করুন
Google OAuth ও Drive, Microsoft প্রমাণীকরণ, Graph অনুরোধ এবং পুনঃচেষ্টার সুবিধার জন্য সংক্ষিপ্ত ডিপেন্ডেন্সি তালিকা।
requirements-fileark-cloud-transfer.txt · pip requirements · প্লেইন টেক্সট

MIT লাইসেন্স ডাউনলোড করুন
FileArk-এর উভয় ম্যানুয়াল ট্রান্সফার স্ক্রিপ্টের জন্য প্রযোজ্য অনুমতি বিজ্ঞপ্তি।
LICENSE-fileark-cloud-transfer.txt · MIT · প্লেইন টেক্সট

ক্লাউড অ্যাক্সেস দেওয়ার আগে নিরাপত্তার ধাপগুলো দেখুন

নেটওয়ার্কবিহীন ডেমো মোডে FileArk-এর Python ক্লাউড স্থানান্তর স্ক্রিপ্ট চালানো টার্মিনাল
বিল্ট-ইন ডেমোটি কোনো ক্রেডেনশিয়াল বা নেটওয়ার্ক কল ছাড়াই অপারেটর যে প্রক্রিয়াটি দেখবেন তা চালিয়ে দেখায়। বাস্তবভাবে চালানোর সময়ও একই ধারণক্ষমতা, ব্যাচ, যাচাই, চেকপয়েন্ট এবং উৎস-মোছার স্ট্যাটাস দেখানো হয়।

প্রথমে ডেমোটি চালান। এটি কোনো নেটওয়ার্ক কল করে না এবং ক্লাউডে কোনো ডেটা লেখে না। শেষ লাইনটি ইচ্ছাকৃতভাবে দ্ব্যর্থহীন: উৎসের শূন্যটি ফাইল মুছে ফেলা হয়েছে। আসল ইঞ্জিন স্ট্রাকচার্ড লগের মাধ্যমে একই ক্রমে কাজ করে এবং প্রথম যাচাই না হওয়া ফাইলেই শূন্য নয় এমন এক্সিট কোড দিয়ে বন্ধ হয়।

নেটওয়ার্কবিহীন স্মোক টেস্ট
chmod +x fileark-cloud-transfer.py
python3 fileark-cloud-transfer.py --demo
python3 fileark-cloud-transfer.py --help

সিক্রেট এমবেড না করে OAuth ক্লায়েন্ট তৈরি করুন

Google Drive-এর জন্য একটি Google Cloud প্রজেক্টে ডেস্কটপ OAuth ক্লায়েন্ট তৈরি করুন, Drive API চালু করুন, কনসেন্ট স্ক্রিন কনফিগার করুন এবং ক্লায়েন্ট JSON ডাউনলোড করুন। --google-client-secret দিয়ে এর পাথ দিন অথবা GOOGLE_OAUTH_CLIENT_SECRET_FILE সেট করুন। স্ক্রিপ্টটি Drive অ্যাক্সেস চায়, কারণ একে ফাইলের তালিকা তৈরি, ডাউনলোড, ফোল্ডার তৈরি, আপলোড ও যাচাই করতে হয়।

OneDrive-এর জন্য Microsoft Entra ID-তে একটি পাবলিক ক্লায়েন্ট অ্যাপ্লিকেশন নিবন্ধন করুন, ডিভাইস-কোড ফ্লো চালু করুন, delegated Files.ReadWrite permission যোগ করুন এবং অ্যাপ্লিকেশনের client ID দিন। ব্যক্তিগত ও প্রাতিষ্ঠানিক অ্যাকাউন্টের জন্য common, কর্মস্থলের অ্যাকাউন্টের জন্য organizations অথবা নীতিতে প্রয়োজন হলে নির্দিষ্ট tenant ID বেছে নিন।

টোকেনগুলো স্থানীয় ফাইলে ক্যাশ করা হয়, যাতে বাধাপ্রাপ্ত মাইগ্রেশন নতুন করে লগইন না করেই আবার শুরু করা যায়। ক্লায়েন্ট JSON ও টোকেন ক্যাশকে সিক্রেট হিসেবে বিবেচনা করুন: এগুলোকে ভার্সন কন্ট্রোল থেকে বাদ দিন, ফাইলসিস্টেমের অনুমতি সীমিত রাখুন, কখনোই সাপোর্ট টিকিটে আপলোড করবেন না এবং মাইগ্রেশন গৃহীত হলে এগুলো সরিয়ে ফেলুন।

বিচ্ছিন্ন পরিবেশে ডিপেন্ডেন্সি ইনস্টল করুন
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements-fileark-cloud-transfer.txt

Google Drive থেকে OneDrive-এ চালান—অথবা উল্টো দিকে

পরিচয়-নির্দিষ্ট সব মান অপারেটরেরই। প্রোগ্রামটির সঙ্গে কোনো client ID, secret, tenant, token, remote account বা destination credential দেওয়া হয় না। প্রথম কমান্ডটি ব্রাউজারে Google-এ এবং ডিভাইস কোডের মাধ্যমে Microsoft-এ সাইন ইন করে, তারপর একটি নতুন OneDrive ফোল্ডারে কপি করে।

OneDrive থেকে Google Drive-এ চালাতে উৎস ও গন্তব্য অদলবদল করুন। প্রতিটি স্বতন্ত্র মাইগ্রেশনের জন্য আলাদা স্টেট ফাইল ও গন্তব্য রুট ব্যবহার করুন। চেকপয়েন্টটি উৎস প্রোভাইডার, গন্তব্য প্রোভাইডার ও রুটকে একসঙ্গে আবদ্ধ রাখে এবং কনফিগারেশন না মিললে পুনরায় শুরু করতে অস্বীকার করে।

8 GiB ব্যাচে Google Drive থেকে OneDrive
export MICROSOFT_CLIENT_ID="your-public-client-id"
python fileark-cloud-transfer.py \
  --source google \
  --destination onedrive \
  --google-client-secret ./client_secret.json \
  --microsoft-tenant common \
  --destination-root "FileArk Manual Transfer 2026-07-25" \
  --batch-gib 8 \
  --batch-files 200 \
  --local-reserve-gib 15 \
  --destination-reserve-gib 10 \
  --verification redownload
উল্টো দিক: OneDrive থেকে Google Drive
python fileark-cloud-transfer.py \
  --source onedrive \
  --destination google \
  --microsoft-client-id "$MICROSOFT_CLIENT_ID" \
  --google-client-secret ./client_secret.json \
  --destination-root "OneDrive archive 2026-07-25" \
  --state-file ./onedrive-to-google-state.json \
  --verification redownload

ধারণক্ষমতা একাধিকবার যাচাই করা হয় কেন

দীর্ঘ ট্রান্সফার চলার সময় একবারের প্রিফ্লাইট পরীক্ষা পুরোনো হয়ে যেতে পারে। অন্য কেউ গন্তব্যে আরও ফাইল আপলোড করতে পারেন, এক্সপোর্ট করা Google ডকুমেন্ট এর উৎস মেটাডেটায় নির্দেশিত আকারের চেয়ে বড় হতে পারে এবং সম্পর্কহীন অ্যাপ্লিকেশন স্থানীয় ডিস্ক ব্যবহার করতে পারে। তাই ইঞ্জিনটি শুরু করার আগে গন্তব্যের সামগ্রিক ধারণক্ষমতা, প্রতিটি ব্যাচে গন্তব্যের ধারণক্ষমতা, প্রতিটি স্থানীয় ডাউনলোডের পর আবার গন্তব্যের ধারণক্ষমতা এবং প্রতিটি স্টেজিং বা যাচাইকরণ কপির আগে স্থানীয় ডিস্ক পরীক্ষা করে।

রিজার্ভ মানগুলো পরিচালনাগত অতিরিক্ত সক্ষমতা, ট্রান্সফারের আকারের অনুমান নয়। অপারেটিং সিস্টেমের আপডেট, প্রোভাইডারের হিসাব হালনাগাদে বিলম্ব এবং একই ক্লাউড কোটা ব্যবহারকারী অন্যদের জন্য এগুলো যথেষ্ট বড় রাখুন। কোনো প্রোভাইডার অবশিষ্ট কোটার নির্দিষ্ট সীমা না জানালে স্ক্রিপ্ট সতর্ক করে এবং প্রোভাইডারের আরোপিত সীমার ওপর নির্ভর করে; এটি জানা তথ্যের ভিত্তিতে প্রিফ্লাইট পরীক্ষার চেয়ে দুর্বল, তাই সক্রিয়ভাবে পর্যবেক্ষণ করা দরকার।

ফেইল-ক্লোজড কোটা ইনভেরিয়েন্ট
def ensure_destination_capacity(quota, required, reserve):
    if quota.remaining is None:
        LOG.warning("Destination did not report a finite quota")
        return
    needed = required + reserve
    if quota.remaining < needed:
        raise RuntimeError(
            f"Destination is too small: {human_bytes(quota.remaining)} free, "
            f"{human_bytes(needed)} required including reserve."
        )

বাইট ও সংখ্যার ভিত্তিতে স্টেজিংয়ে ব্যবহৃত স্থান সীমাবদ্ধ করুন

বাইটের সর্বোচ্চ সীমা ডিস্ক ব্যবহারের ঝুঁকি নিয়ন্ত্রণ করে; আর উৎসে কয়েক লাখ ক্ষুদ্র অবজেক্ট থাকলে ফাইল-সংখ্যার সর্বোচ্চ সীমা API ও ফাইলসিস্টেমের অতিরিক্ত চাপ নিয়ন্ত্রণ করে। ব্যাচের সীমার চেয়ে বড় একটি ফাইলকে এক-ফাইলের ব্যাচ হিসেবে অনুমোদন করা হয়, তাই সবচেয়ে বড় একক অবজেক্টের আকার বিবেচনা করে রিজার্ভ নির্ধারণ করতে হবে।

ডিফল্ট চাঙ্কের আকার 10 MiB। এটি Google Drive-এর 256 KiB রিজিউমযোগ্য আপলোড গ্র্যানুলারিটি এবং Microsoft Graph-এর 320 KiB ধারাবাহিক ফ্র্যাগমেন্টের শর্ত—উভয়েরই একটি সাধারণ গুণিতক। প্রমাণীকরণের আগেই কমান্ড-লাইন ভ্যালিডেটর অসামঞ্জস্যপূর্ণ চাঙ্কের আকার প্রত্যাখ্যান করে।

দ্বৈত-সীমার ব্যাচ পরিকল্পনাকারী
def batches(files, max_bytes, max_files):
    batch, batch_size = [], 0
    for item in files:
        planned_size = max(item.size, 1)
        if batch and (
            len(batch) >= max_files
            or batch_size + planned_size > max_bytes
        ):
            yield batch
            batch, batch_size = [], 0
        batch.append(item)
        batch_size += planned_size
    if batch:
        yield batch

Google-এর নেটিভ ডকুমেন্টগুলো রূপান্তরের মাধ্যমে পরিচালনা করুন

Google Docs, Sheets, Slides, Drawings এবং Apps Script প্রজেক্ট সাধারণ ডাউনলোডযোগ্য বাইট স্ট্রিম নয়। Google অ্যাডাপ্টার এগুলোকে যথাক্রমে DOCX, XLSX, PPTX, PNG ও JSON-এ এক্সপোর্ট করে এবং বহনযোগ্য ফাইলনেম এক্সটেনশন যোগ করে। ফোল্ডারগুলো ঘুরে দেখা হয়, তবে কোনো ফাইল না থাকলে সেগুলো খালি অবজেক্ট হিসেবে আপলোড করা হয় না।

রূপান্তরের ফলে ফন্ট, ফর্মুলা, মন্তব্য, এমবেড করা অবজেক্ট, পৃষ্ঠার বিন্যাস এবং যৌথ সম্পাদনার ইতিহাস বদলে যেতে পারে। Google-এর এক্সপোর্ট এন্ডপয়েন্টেও ফরম্যাট ও আকারের সীমাবদ্ধতা রয়েছে। কোনো মনগড়া রূপ তৈরি না করে স্ক্রিপ্টটি সতর্কবার্তাসহ অসমর্থিত নেটিভ ধরন এড়িয়ে যায়। প্রতিনিধিত্বমূলক রূপান্তরিত ফাইলগুলো নিজে পর্যালোচনা করুন।

শর্টকাট, শেয়ার্ড ড্রাইভ, আপনার সঙ্গে শেয়ার করা কিন্তু My Drive-এ নেই এমন ফাইল, OneNote প্যাকেজ, প্রতিষ্ঠানের রিটেনশন মেটাডেটা, সংস্করণের ইতিহাস এবং শেয়ারিং ACL এই সংস্করণের আওতাভুক্ত নয়। এসব সীমাবদ্ধতার কারণেই ফাইল কপি করাকে সম্পূর্ণ টেন্যান্ট মাইগ্রেশন বলা উচিত নয়।

হুবহু বাইট যাচাই করতে গন্তব্য থেকে সম্পূর্ণ পুনরায় ডাউনলোড ব্যবহার করুন

প্রোভাইডারের আপলোড সফল হওয়া প্রয়োজনীয়, তবে যথেষ্ট নয়। আপলোডের পর স্ক্রিপ্টটি প্রথমে গন্তব্যের মেটাডেটায় থাকা আকারের সঙ্গে স্টেজ করা ফাইলের আকার তুলনা করে। এরপর ডিফল্ট রিডাউনলোড মোডে গন্তব্য অবজেক্টটি একই অবস্থানের একটি অস্থায়ী ফাইলে ডাউনলোড করে, SHA-256 গণনা করে এবং সেই ডাইজেস্টকে স্টেজ করা উৎস ফাইলের ডাইজেস্টের সঙ্গে তুলনা করে।

শুধু আকার ও ডাইজেস্ট—উভয়টি মিললেই চেকপয়েন্ট এন্ট্রি তৈরি হয়। চেকপয়েন্টে উৎসের ID, উৎস থেকে জানানো আকার, গন্তব্যের ID, গন্তব্য পাথ, প্রকৃত বাইট, উভয় ডাইজেস্ট এবং UTC সমাপ্তির সময় রেকর্ড করা হয়। চেকপয়েন্টে থাকা কোনো উৎস পাথ পরে ভিন্ন ID বা আকার নির্দেশ করলে পরিবর্তিত ডেটা নীরবে বাদ না দিয়ে স্ক্রিপ্টটি থেমে যায়।

পুনরায় ডাউনলোড করলে গন্তব্য-পক্ষের রিড ট্রাফিক দ্বিগুণ হয় এবং সাময়িকভাবে স্টেজ করা ফাইল ও যাচাইকরণ কপি—উভয়ের জন্যই জায়গা লাগে। এই খরচ সম্পর্কে স্পষ্ট ধারণা থাকলে এবং স্বতন্ত্র কনটেন্ট যাচাইকরণ প্রক্রিয়া থাকলেই কেবল মেটাডেটা মোড বেছে নিন।

গন্তব্যে বাইট যাচাই
destination.redownload(uploaded, verification_copy)
verification_hash = sha256_file(verification_copy)
if verification_hash != local_hash:
    raise RuntimeError(
        f"SHA-256 mismatch after destination re-download: {relative!r}."
    )

state["completed"][relative] = {
    "source_id": item.id,
    "destination_id": uploaded.id,
    "bytes": actual_size,
    "sha256": local_hash,
    "destination_sha256": verification_hash,
}

অনিশ্চয়তাকে সাফল্য ধরে না নিয়ে পুনরায় শুরু করুন

প্রোগ্রামটি একটি অস্থায়ী ফাইল তৈরি ও নাম পরিবর্তনের মাধ্যমে অ্যাটমিকভাবে স্টেট লেখে। স্থায়ীভাবে স্টেট লেখা হওয়ার পরেই কেবল যাচাই করা আইটেমটি স্থানীয় স্টেজিং থেকে সরানো হয়। একই কমান্ড আবার চালালে চেকপয়েন্টে থাকা আইটেমগুলো বাদ দিয়ে অপেক্ষমাণ পাথগুলো থেকে কাজ চলতে থাকে।

প্রোভাইডার আপলোড গ্রহণ করার পরে, কিন্তু চেকপয়েন্ট লেখার আগে প্রোগ্রাম ক্র্যাশ করতে পারে। কনফ্লিক্ট হলে ব্যর্থ হওয়ার নীতি থাকায় পরেরবার চালানোর সময় ফাইলটি ওভাররাইট করা বা ভুলভাবে সফলতার দাবি করার বদলে গন্তব্যের ওই বিদ্যমান পাথে প্রোগ্রাম থেমে যায়। অবজেক্টটি পরীক্ষা ও তুলনা করুন, তারপর সতর্কতার সঙ্গে একটি যাচাইকৃত রিকভারি এন্ট্রি যোগ করুন অথবা গন্তব্যে নতুন একটি রুট ব্যবহার করে আবার শুরু করুন।

OAuth-এর মেয়াদ শেষ হওয়া, রেট লিমিটিং, সাময়িক সার্ভার ত্রুটি এবং বাধাগ্রস্ত চাঙ্কের ক্ষেত্রে নির্ধারিত সীমার মধ্যে আবার চেষ্টা করা হয়। প্রমাণীকরণে ব্যর্থতা বা স্থায়ী অনুমতিসংক্রান্ত ত্রুটি হলে প্রোগ্রাম থেমে যায়। ব্যর্থতার কারণ না বোঝা পর্যন্ত লগ, চেকপয়েন্ট এবং স্টেজিংয়ের উপাদানগুলো সংরক্ষণ করুন।

বাস্তব গ্রহণযোগ্যতা পরীক্ষা চালান

  • খালি ফাইল, বড় ফাইল, অনেক গভীরের পাথ, Unicode নাম এবং Google-এর নেটিভ ডকুমেন্ট রয়েছে—এমন একটি ছোট ফোল্ডার দিয়ে শুরু করুন।
  • প্রথমে --dry-run চালান এবং ইনভেন্টরির মোট বাইটের সঙ্গে প্রোভাইডার ইন্টারফেসে দেখানো পরিমাণ তুলনা করুন।
  • প্রথম প্রোডাকশন ব্যাচের সময় স্থানীয় খালি জায়গা ও গন্তব্যের কোটা আলাদাভাবে পর্যবেক্ষণ করুন।
  • রিডাউনলোড যাচাই চালু রাখুন এবং আপনার মাইগ্রেশন রেকর্ডের সঙ্গে চেকপয়েন্টটি আর্কাইভ করুন।
  • গন্তব্যে প্রতিনিধিত্বমূলক PDF, Office ফাইল, ছবি, ভিডিও, আর্কাইভ এবং রূপান্তরিত নেটিভ ডকুমেন্ট খুলে দেখুন।
  • প্রত্যাশিত ফোল্ডার ও ফাইলের সংখ্যা তুলনা করুন, বাদ পড়া বা ব্যর্থ প্রতিটি আইটেম তদন্ত করুন এবং দ্বিতীয় একজন ব্যবহারকারীর অ্যাক্সেস পরীক্ষা করুন।
  • নির্ধারিত ওভারল্যাপ সময়জুড়ে উৎস অপরিবর্তিত রাখুন। এই স্ক্রিপ্ট কখনোই সেটি মুছে ফেলে না।

সচরাচর জিজ্ঞাসিত প্রশ্ন

Python স্ক্রিপ্টটি কি কখনো উৎসের ফাইল মুছে ফেলে?

না। উৎস থেকে ফাইল মোছার ব্যবস্থা বাস্তবায়ন করা হয়নি। ইঞ্জিনটি উৎস থেকে ডাউনলোড করে আলাদা একটি গন্তব্য রুটে লেখে; সফল যাচাইয়ের পর শুধু অস্থায়ী স্থানীয় স্টেজিং কপিটি সরানো হয়।

এটি কি উভয় দিকেই স্থানান্তর করতে পারে?

হ্যাঁ। Google Drive বা OneDrive-কে উৎস এবং অন্য প্রোভাইডারকে গন্তব্য হিসেবে সেট করুন। প্রতিটি মাইগ্রেশনের জন্য অনন্য চেকপয়েন্ট ও গন্তব্য রুট ব্যবহার করুন।

এটি কি শেয়ারিং অনুমতি ও ফাইলের ইতিহাস সংরক্ষণ করে?

না। এই সংস্করণটি ফাইলের বর্তমান কনটেন্ট ও ফোল্ডার পাথ কপি করে। শেয়ারিং ACL, পাবলিক লিংক, সংস্করণ, মন্তব্য, লেবেল, রিটেনশন নীতি এবং প্রতিষ্ঠান-নির্দিষ্ট মেটাডেটার জন্য আলাদা মাইগ্রেশন ও যাচাইকরণ প্রয়োজন।

সদ্য আপলোড করা ফাইল আবার ডাউনলোড করা হয় কেন?

আপলোড গৃহীত হওয়া এবং মেটাডেটার আকার মিলে যাওয়া প্রমাণ করে না যে গন্তব্যের হুবহু বাইট আবার পড়া যাবে। পুনরায় ডাউনলোড মোড গন্তব্যের কনটেন্টের SHA-256 হিসাব করে এবং হুবহু মিললেই কেবল চেকপয়েন্ট তৈরি করে।

এটি কি Google বা Microsoft-এর আনুষ্ঠানিক টুল?

না। এটি MIT লাইসেন্সের অধীনে প্রকাশিত একটি স্বতন্ত্র FileArk রেফারেন্স ইমপ্লিমেন্টেশন। এটি পর্যালোচনা করুন, গুরুত্বপূর্ণ নয় এমন ডেটা দিয়ে পরীক্ষা করুন এবং আপনার প্রোভাইডার ও প্রতিষ্ঠানের নীতি অনুসরণ করুন।

এই নির্দেশিকায় ব্যবহৃত প্রামাণিক রিসোর্স

নির্দেশিকা পড়ুন