Cách Copy Số Lượng Folders Lớn, Files Quá Lượt Tải Trên Google Cực Nhanh, Copy 100TB Google Drive Trong 30'

How To Use Folderclone To Clone Share Folders, Google Drive and Team Drive

Văn Long
·6 phút·21 lượt xem↗ Chia sẻ những điều học được
googledrive-clone

Đối với các Uploader thì Google Drive đang là một trong các nơi lưu trữ tốt nhất vì tốc độ cao, cũng như vô vàn cách "lách luật" kiếm Google Drive Unlimited để có thể upload không giới hạn, tuy nhiên đa phần Uploader phải sử dụng tới VPS với các công cụ như Air Explorer hoặc sử dụng Multi-Cloud, mặc dù hữu ích tuy nhiên thường có một số hạn chế: băng thông (vụ này thường bị chạc tiền kinh nhất nếu sử dụng VPS của nước ngoài), thường xuyên miss một số files khi path dài hoặc có nhiều files nhỏ...

Hôm nay mình sẽ bắt đầu Series về cách tip & trick với Google Drive để có thể tận dụng tối đa "thằng em nó" và ít băng thông nhất. Công cụ mà chúng ta sử dụng ngày hôm nay là 1 project có tên Folderclone (https://github.com/Spazzlo/folderclone)

Chuẩn bị

  • Trước khi tiến hành, hãy đảm bảo bạn có tài khoản Google Drive Unlimited hoặc Team Drive (nếu bạn chưa có, hãy liên hệ cho mình :D ) vì với dung lượng mặc định 15GB Free của Google thì oải lắm (trừ khi các bạn mua thêm ở gói Google One), mình khuyến nghị các bạn nên tạo Drive Team để sử dụng vì các tools trong Series mình viết này đa số chạy ổn định trên Drive Team
  • Một máy ảo chạy Linux (hoặc Windows), các bạn có thể sử dụng chính máy tính của mình để chạy, nhưng khuyến tạo 1 máy ảo (hoặc VPS) riêng để treo cho ổn định và không bị "click-nhầm" trong quá trình làm việc (mặc dù quá trình clone khá nhanh, chỉ phụ thuộc vào số lượng files của bạn có nhiều hay không thôi)
  • Bài này sẽ gồm cả cách sử dụng cho Windows và Linux, bước cài đặt có vẻ hơi khác nhau, còn các bước tiếp theo đa phần giống nhau nên các bạn cứ làm theo nha !!!

Đối với Linux (Debian/Ubuntu/Centos)

  • Đối với các distro chạy Debian các bạn chạy các lệnh sau
Bash
1apt update
2apt install python3-pip git -y
3git clone https://github.com/Spazzlo/folderclone.git
4cd folderclone
5pip3 install folderclone
  • Đối với Centos
Bash
1yum update -y
2yum install python3 python3-pip git -y
3git clone https://github.com/Spazzlo/folderclone.git
4cd folderclone
5pip3 install folderclone

Đối với Windows

  • Cài đặt Python3 mới nhất (hiện tại là 3.8.2) tại đây, nhớ tick vào "add path" trong quá trình sử dụng
  • Download source folderclone tại đây và giải nén ra, nhớ lấy đường dẫn, ví dụ: của mình là:
    C:\Users\mrhack\Desktop\folderclone-master như hình dưới
  • Mở CMD dưới quyền administrator và trỏ tới đường dẫn vừa giải nén
  • Chạy lệnh sau
Bash
1pip install folderclone

Tiến Hành

  • Copy file credentials.json vào folder "folderclone-master" ở trên
  • Gõ tiếp lệnh sau vào CMD (đã mở ở trên)
  • Trình duyệt sẽ tự động mở, đăng nhập vào tài khoản của bạn
  • Cấp đủ quyền cho ứng dụng
  • Sẽ có lỗi xuất hiện báo bận chưa bật Service API, mặc định chương trình sẽ tự mở 1 tab tới project và bạn chỉ việc bấm Active là xem, nếu tab không mở, hãy copy link hiển thị như dưới:
  • Sau đó nếu bạn làm đúng CMD (hoặc Terminal sẽ hiển thị dạng)

Tạo Service Account

  • Phần này mình sẽ giải thích một chút, có thể các bạn biết hoặc chưa, folderclone sử dụng API để copy, clone các files trên Google Drive, để làm được việc đó cần phải tạo 1 Service Account (SA) cho nó, mà mỗi SA sẽ có giới hạn là 750G/24h, vậy để có thể clone một số lượng lớn files: giả dụ mình có 100TB cần clone mỗi ngày thì ta cần: 100*1024/750= 137 SA (136.5 nhưng đã vượt mức 136 nên tính lên 137). OK đơn giản, mà phải không :D
  • Vậy làm sao để tạo SA ? à thì đơn giản thôi vào console của Google rồi tạo bằng...tay LOL 😂😂, đó là cách trâu bò ngày trước, bây giờ thì mọi thứ đã có tools :) "just-click" là bạn sẽ tạo được 100 SA.
    - Ơ ? sao lại 100 SA, mình cần 137 (hoặc hơn) cơ mà ?
    - À thì Google giới hạn chỉ tạo tối đa 100 SA/Project thôi, đó mấu chốt ở đó :D bạn chỉ cần tạo thêm Project là tạo được thêm SA, mỗi Project là 100 SA :D
  • Tiếp tục nha, để tạo SA các bạn chạy lệnh sau ở CMD hoặc Terminal:
Bash
1quick-setup <số lượng Project> <SHARE_DRIVE_ID>
    • Trong đó:
      -Số lượng Project bạn muốn tạo để tạo SA
      - SHARE_DRIVE_ID là ID của Folder gốc sẽ chứa dữ liệu clone về ở Drive hoặc ID của Drive Team (khuyến nghị dùng Drive Team)
  • Ví dụ mình muốn có 200 SA => tạo 2 Project. Team Drive của mình có ID như hình
  • Ta sẽ chạy lệnh:
Bash
1quick-setup 2 0AB52uFSDYDAPUk9PVA
  • Vào lại Drive Team để check, nếu số lượng Users tăng lên thì đã thành công (mình trước đó đã add 1 lần nên số lượng SA thêm vào lên tới gần 400, nếu làm lần đầu sẽ chỉ là 200)
  • Vậy nếu không muốn sử dụng Team Drive mà clone trực tiếp về Drive của mình có được không ? Được, nhưng bạn phải add bằng tay 200 email của SA đã tạo ở trên ở Folder ở Drive bạn muốn clone về, hiểu một cách đơn giản là gắn quyền cho đống SA có quyền truy cập (có truy cập thì mới clone được chứ). Hoặc một cách đơn giản nhất vẫn là sử dụng Drive Team và Move sang Drive chính
    TIP: Sử dụng Google Group để add SA vào sau đó add email của group vào Drive (hoặc Team Drive) để dễ dàng quản lý hơn

Tiến Hành Copy

  • Vậy làm sao để clone ? Đơn giản, sau khi thực hiện xong tất cả các bước trên muốn clone các bạn đơn giản mở CMD hoặc terminal lên và gõ:
Bash
1multifolderclone -s <SOURCE_FOLDER_ID> -d <DESTINATION_FOLDER_ID>
  • Trong đó: Source là ID của Folder (Files) cần copy còn Destination là ID của Folder trong Team Drive hoặc Drive mà bạn đã gắn quyền.
  • Ví dụ: mình muốn clone URL https://drive.google.com/drive/folders/1Y6bKJo6SFPIZJ6rCVe9v4-boAz-8b_0_ này về Drive Team của mình (phần màu đỏ là ID), trên Drive Team (hoặc Drive như đã nói ở trên) mình tạo 1 Folder (bắt buộc đổi với Drive, bạn không thể clone về thư mục gốc ) như ảnh dưới, và lấy Destination ID ở đây

  • Vậy lệnh ta cần chạy là:
Bash
1multifolderclone -s 1Y6bKJo6SFPIZJ6rCVe9v4-boAz-8b_0_ -d 13ocveO0gCp0BH61t75JJkD8tcReX_RyA
  • Kết quả:

  • Time: chưa tới 1 phút !!
    Các lần tiếp theo các bạn chỉ cần chạy lệnh copy ở bước cuối, không cần setup dài dòng !!
    Chút các bạn thành công ! Video sẽ update sau !!
    Credit: https://github.com/Spazzlo/folderclone
Văn Long
VIẾT BỞIVăn LongPlatform Engineer · Quảng Ninh · Viết từ 2017

Mình làm hệ thống phân tán ban ngày và đi bụi vào cuối tuần. Blog này là nơi ghi lại cả hai — đơn giản là chia sẻ những gì mình học được.

THẢO LUẬN

Bình luận (10)

BĐ
Hãy lịch sự và tôn trọng nhau 🙏
HN
Tran Thi Hong Nhung19.06.2020

Mình bị lỗi usage: multimanager [-h] [--sleep SLEEP] [--path PATH] [--max-projects MAX_PROJECTS] [--services SERVICES] [--token TOKEN] [--credentials CREDENTIALS] {list,create,enable-services,delete,add,remove,quick-setup,interactive}... Tool còn xài dc ko nhỉ

TC
Tran Canh17.06.2020

Mình gặp lỗi Destination folder xxxx cannot be read or is invalid mặc dù mấy lần trước vẫn chuyển file bình thường, có cách nào khắc phục không bạn ?

R
Raymond09.06.2020

hình die rồi bác fix giúp với

QT
Nguyễn Quang Thắng04.06.2020

Destination folder xxxx cannot be read or is invalid. Lỗi này fix sao bạn?

1 phản hồi
QT
Nguyễn Quang Thắng· 04.06.2020

trước vẫn coppy bình thường nay bị lỗi này không biết sai ở đâu?

BG
BOYZ GAMING20.05.2020

Can't be create drive sir... https://driveteam.nguyenvanlong.blog/

H
Hiheha20.05.2020

Mình chạy lệnh copy bị lỗi: usage: multimanager [-h] [--sleep SLEEP] [--path PATH] [--max-projects MAX_PROJECTS] [--services SERVICES] [--token TOKEN] [--credentials CREDENTIALS] {list,create,enable-services,delete,add,remove,quick-setup,interactive} p/s: cho mình hỏi là mình muốn xoá các email SA trong team drive thì có lệnh nào làm cho nhanh ko? chứ xoá từng cái lâu quá.

1 phản hồi
Nguyễn Văn LongTÁC GIẢ· 20.05.2020

chạy lệnh thêm flag "-1" để ghi đè

J
James19.05.2020

Em bị báo " The path provided (account) has 1 or no accounts" là sao vậy ạ?

1 phản hồi
Nguyễn Văn LongTÁC GIẢ· 19.05.2020

sai path chứa account

Nhận bài mới mỗi tháng
Một bài kỹ thuật, một chuyến đi. Không spam, huỷ bất cứ lúc nào.