Như ở bài viết trước, mình đã chia sẻ cách sử dụng FolderClone để copy dữ liệu về tài khoản google drive vượt giới hạn 750GB/ngày (Bài viết dùng FolderClone).
Tuy nhiên, trong quá trình sử dụng trên hệ điều hành Linux (cụ thể là ubuntu), mình bị vướng khá nhiều lỗi và không thể sử dụng FolderClone để copy số lượng files quá lớn về Google Team Drive (hoặc có thể do mình cấu hình không đúng nên phần mềm không hoạt động được).
Do đó, mình đã tham khảo thêm một công cụ khác, hoạt động với cơ chế hoàn toàn tương tự với FolderClone nhưng hoạt động ổn trên hệ điều hành Windows lẫn Linux (mình mới chỉ test trên Lubuntu 18.04, chắc các hệ điều hành khác cũng sẽ hoạt động), đó là AutoRclone.
1. Các công cụ cần chuẩn bị
- Phần mềm Python: tải về tại trang chủ (ngày 17/7/2020 phiên bản mới nhất là 3.8.4);
- Mã code của ứng dụng chính AutoRclone;
- Một tài khoản google drive (gmail): tài khoản của bạn là không giới hạn dung lượng lưu trữ hoặc có Team Drive;
- Đường dẫn google drive chia sẻ cần copy dữ liệu về (tất nhiên phải có rồi).
2. Các bước thực hiện
Hình ảnh sử dụng thực hiện trên hệ điều hành Lubuntu (trên hệ điều hành Windows hình ảnh cũng gần tương tự):
Bước 1: Tải và cài đặt Python, AutoRclone.
Cài đặt Python:
Trên Lubuntu:
Mở Terminal và chạy lần lượt các câu lệnh sau để cài đặt phiên bản python mới nhất:
sudo apt -y update
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt -y install python3.8
sudo update-alternatives –install /usr/bin/python3 python3 /usr/bin/python3.8 2
sudo apt -y install python3-pip
Mặc định, trên Lubuntu đã cài đặt sẵn phiên bản python 3.6.9 nên để cài đặt thêm phiên bản 3.8.4 (mới nhất) và cài đặt mặc định hệ thống sử dụng python 3.8.4 để chạy ứng dụng thì mình sử dụng khá nhiều câu lệnh (các lệnh này mình tìm trên mạng và cũng không rõ ràng từng câu lệnh nhưng kết quả thì đúng như mong đợi).
Chi tiết video cài đặt bạn có thể tham khảo tại link: https://bankhonggioi.page.link/pythonlinux
Trên Windows
Cách cài đặt Python tương tự Bước 1 bài viết sử dụng FolderClone
Cài đặt AutoRclone:
Trên Lubuntu:
Trước khi cài AutoRclone cần phải cái rclone (AutoRclone sử dụng rclone để chạy chương trình copy)
sudo apt -y install curl
curl https://rclone.org/install.sh | sudo bash
Tiếp theo là cài đặt AutoRclone và các modules cần thiết để chạy AutoRclone:
sudo apt -y install git
sudo git clone https://github.com/xyou365/AutoRclone && cd AutoRclone && sudo pip3 install -r requirements.txt
Mặc định chương trình AutoRclone tải về sẽ được cài đặt tại đường dẫn /home/<tên người dùng>/AutoRclone . Tuy nhiên để tránh khỏi phải phiền phức chỉnh sửa quyền truy cập vào thư mục nên mình đã copy thư mục AutoRclone ra đường dẫn /home/<tên người dùng>/Desktop/AutoRclone (như trong video hướng dẫn).
Trên Windows:
Tải AutoRclone và Rclone về máy tính, giải nén các file chương trình vào chung một thư mục.
Tải AutoRclone
Tải rclone (tải đúng phiên bản tương ứng với hệ điều hành đang sử dụng)
Giải nén và copy file chương trình vào chung một thư mục, kết quả:
Mở Command promt, dùng lên cd để chuyển đến thư mục cài AutoRclone và cài đặt các gói module cần thiết cho chương trình (ví dụ đường dẫn đến thư mục AutoRclone là C:\AutoRclone\):
cd AutoRclone
pip3 install -r requirements.txt
Bước 2: (giống Bước 2 của bài viết)
Kích hoạt API của Google Drive, truy cập vào đường dẫn:
https://developers.google.com/drive/api/v3/quickstart/python
Nhấn vào nút Enable the Drive API
Chuyển qua trang đăng nhập vào tài khoản google, thực hiện đăng nhập bằng tài khoản đã có.
Quay trở lại trang trên, nhấn lại vào nút Enable the Drive API. Hiển thị hộp thoại. Chọn vào Yes và nhấn nút Next. Tại hộp thoại tiếp theo chọn nút Create.
Ở hộp thoại tiếp theo, bấn vào nút Donwload Client Configuration để tải file credentials.json về máy tính và đặt vào thư mục AutoRclone
Truy cập vào địa chỉ:
Nếu tài khoản lần đầu tiên truy cập vào sẽ có giao diện như hình sau:
Tiếp tục thực hiện các bước như hình:
Tiếp tục bấm vào nút SAVE AND CONTINUE vài lần, sau đó sẽ quay trở lại như hình bên dưới và tiếp tục thực hiện các thao tác tiếp theo:
Bước cuối cùng là đổi tên file client_secret_xxx.json thành credentials.json.
Copy file credentials.json và thư mục C:\folderclone\ là hoàn thành.
Video chi tiết cách thực hiện:
Bước 3: Tạo ra các Service Account (SA) để hỗ trợ copy dữ liệu (mỗi SA giống như 1 người dùng ảo vậy).
Hiện tại Google đã fix, đang nghiên cứu cách khác…
Trên Lubuntu:
Mở Terminal và chạy lần lượt câu lệnh sau để chuyển đến thư mục chứa chương trình AutoRclone
cd Desktop/AutoRclone
Bạn sẽ chọn 1 trong 3 lựa chọn, mỗi lựa chọn tương ứng với 1 câu lệnh khác nhau
Lựa chọn 1: tạo thêm N projects và tạo ra số lượng SA tương ứng với toàn bộ các projects hiện thời của bạn (ví dụ bạn đang có 2 projects, bạn tạo thêm N=1 project nữa thì bạn sẽ có 3 projects, tương ứng với 100 SAs)
python3 gen_sa_accounts.py --quick-setup 1
(số 1 tương ứng với số projects sẽ tạo mới)
Lựa chọn 2: tạo thêm N projects và tạo ra số lượng SA tương ứng với các projects đã tạo thêm (ví dụ bạn đang có 1 projects, bạn tạo thêm N=2 project nữa thì bạn sẽ có 3 projects, nhưng chương trình chỉ tạo ra 200 SAs tương ứng với 2 projects bạn đã tạo thêm)
python3 gen_sa_accounts.py --quick-setup 2 --new-only
(số 2 tương ứng với số projects sẽ tạo mới)
Lựa chọn 3: không tạo thêm projects mới mà tạo ra số lượng SA tương ứng với toàn bộ các projects hiện thời của bạn (ví dụ bạn đang có 3 projects, chạy câu lệnh bạn sẽ tương ứng tạo ra với 300 SAs và nó sẽ ghi đè các SAs hiện có trong các projects đang có)
python3 gen_sa_accounts.py --quick-setup -1
(số -1 là mặc định của câu lệnh nên không được thay đổi)
Trên Windows:
Các bước thực hiện tương tự như trên Lubuntu
Mở command promt, chuyển đến thư mục chứa chương trình AutoRclone.
Chạy các câu lệnh tương ứng với các lựa chọn (giống như trên Lubuntu):
Lựa chọn 1: tạo thêm N projects và tạo ra số lượng SA tương ứng với toàn bộ các projects hiện thời của bạn (ví dụ bạn đang có 2 projects, bạn tạo thêm N=1 project nữa thì bạn sẽ có 3 projects, tương ứng với 100 SAs)
python gen_sa_accounts.py --quick-setup 1
(số 1 tương ứng với số projects sẽ tạo mới)
Lựa chọn 2:
python gen_sa_accounts.py --quick-setup 2 --new-only
(số 2 tương ứng với số projects sẽ tạo mới)
Lựa chọn 3:
python gen_sa_accounts.py --quick-setup -1
(số -1 là mặc định của câu lệnh nên không được thay đổi)
Thao tác trong quá trình thực thi câu lệnh:
Khi thực hiện xong câu lệnh, một số trường hợp sẽ có thông báo như hình
Khi đó, bạn truy cập vào đường dẫn phía sau cụm từ Please visit this URL to authorize this Application để xác thực (các bước tương tự như Bước 3 bài viết)
Thao tác cuối cùng là copy code xác thực paste trở lại cửa sổ dòng lệnh.
Tiếp tục có thông báo:
Khi đó, bạn truy cập vào đường dẫn phía sau cụm từ Enable it by visiting để kích hoạt Service Usage API (chú ý là đường dẫn kéo dài đến trước chữ then retry)
Sau khi kích hoạt thành công, quay trở lại cửa sổ dòng lệnh, nhấn nút Enter và đợi chương trình thực thi, thông báo sau khi thành công:
Bước 4: Thêm các SAs đã tạo ở Bước 3 vào trong Google Team Drive hiện có của bạn.
Cách 1: Thêm trực tiếp toàn bộ các SAs vào Team Drive bằng 1 dòng lệnh.
Phù hợp cho những bạn thường copy dữ liệu vào một nơi cố định và ít thay đổi.
Ưu điểm: thao tác bằng lệnh 1 lần là xong, không phức tạp.
Hạn chế: sau này một ngày đẹp trời rảnh rỗi bạn muốn xoá các SAs này thì xoá thủ công từng SA rất lâu; đồng thời muốn linh hoạt sử dụng SAs cho nhiều Team Drive, nhiều folder khác nhau rất tốn công (thao tác thêm SAs, xoá SAs).
Cách thực hiện:
Copy ID của Team Drive:
Chạy câu lệnh để add các SAs vào Team Drive với ID đã copy như trên (thay teamdrive_ID bằng cụm mã đã copy như hình trên)
Trên Lubuntu:
python3 add_to_team_drive.py -d teamdrive_ID
Trên Windows:
python add_to_team_drive.py -d teamdrive_ID
Sau mỗi câu lệnh bấm Enter để xác nhận chương trình thực thi, bạn có thể phải chạy nhiều lần câu lệnh này để chương trình thêm đủ số lượng SAs đã tạo vào Team Drive. Thông thường số thành viên trong Team Drive cuối cùng sẽ bằng số lượng SAs đã tạo cộng (+) với số lượng thành viên đã có sẵn trong Team Drive (trong video ví dụ là 201 thành viên).
Cách 2: Thêm các SAs vào nhóm (Google Groups), sau đó thêm nhóm vào Team Drive.
Ưu điểm: dễ quản lý các SAs và dễ thêm vào Team Drive (không cần sử dụng code mà thao tác thủ công). Sau này muốn xoá các SAs ra khỏi Team Drive cũng dễ thao tác (do chỉ cần xoá nhóm ra khỏi Team Drive thì toàn bộ SAs đã bị xoá).
Hạn chế: tài khoản Gmail thường chỉ thêm vào nhóm được tối đa 100 SAs/ngày và có giới hạn mỗi lần thêm vào (ví dụ 600 SAs thì bạn phải thao tác thêm lặp lại 6 ngày mới thêm đủ 600 SAs vào nhóm).
Cách thực hiện:
1. Chạy file json2email.py để lọc địa chỉ email của các SAs từ các file json trong thư mục accounts. Kết quả sẽ được 1 file text (z1_email_list.txt) chứa địa chỉ email (danh sách email sẽ được liệt kê ở phần cuối của file txt). Câu lệnh như sau (chạy câu lệnh tại thư mục chứa chương trình và chứa file json2email.py):
python json2email.py
(Nếu chạy câu lệnh bị lỗi hãy thử thay thế “python” bằng “python3“)
Tải json2emailSource code
json2email (code gốc bằng tiếng Trung Quốc nên file json2email mình đã chuyển sang tiếng Anh cho dễ hiểu).
Mật khẩu giải nén: bankhonggioi.com
2. Thêm SAs vào Google Groups
Đăng nhập tài khoản Gmail, sau đó vào đường dẫn sau và làm theo hướng dẫn trên hình để tạo nhóm
Nếu bị vượt quá giới hạn thêm thành viên mỗi ngày hoặc mỗi lần, sẽ hiện thông báo như hình dưới. Trường hợp này các bạn chờ hôm sau lại thêm SAs tiếp tục.
Như vậy, sau khi thêm các SAs vào Google Groups, muốn thêm toàn bộ các SAs vào Team Drive chỉ cần thêm email của nhóm vào Team Drive (làm thủ công) là hoàn thành (ví dụ như hình trên thì email của nhóm là [email protected]).
Một số ví dụ ứng dụng cụ thể của Google Groups chứa SAs (có địa chỉ email là [email protected] chẳng hạn)
Ví dụ 1:
Mong muốn: copy dữ liệu từ link public về Team Drive
Thực hiện: thêm [email protected] là thành viên của Team Drive rồi thực hiện Bước 5.
Ví dụ 2:
Mong muốn: Copy dữ liệu từ 1 thư mục cụ thể (không công khai) về Team Drive/ thư mục cụ thể của Team Drive
Thực hiện: chia sẻ thư mục cần copy cho email [email protected], thêm [email protected] là thành viên Team Drive hoặc chia sẻ thư mục cụ thể trong Team Drive với email [email protected] (quyền hạn là người đóng góp hoặc người quản lý nội dung). Sau đó tiếp tục thực hiện Bước 5
Bước 5: Bắt đầu quá trình copy dữ liệu về.
Trên Lubuntu:
Trong cửa sổ dòng lệnh, nhập lệnh rồi nhấn Enter:
python3 rclone_sa_magic.py -s SourceID -d DestinationID -dp Path -b 1 -e 600
Trên Windows:
Trong cửa sổ command promt, nhập lệnh rồi nhấn Enter:
python rclone_sa_magic.py -s SourceID -d DestinationID -dp Path -b 1 -e 600
Trong đó:
SourceID: là id của folder được chia sẻ (ví dụ link chia sẻ có dạng https://drive.google.com/drive/folders/abcxxxxxxxxxxxxxxxxxxxxxxxx123yx thì SourceID là abcxxxxxxxxxxxxxxxxxxxxxxxx123yx);
DestinationID là id của team drive (ví dụ DestinationID là 0AJrajJ9H4ZdGUk9PVA , cách lấy id của team drive giống ở Bước 4);
Path là tên thư mục trong Team Drive dữ liệu sẽ chuyển về (tuỳ chọn, không nên đặt tên thư mục có khoảng trống, câu lệnh sẽ bị lỗi);
Số 1 là số thứ tự bắt đầu của SAs (có thể giữ nguyên);
Số 600 là số SAs tối đa đã tạo (phải thay đổi cho phù hợp với số lượng SAs đã tạo ở Bước 3, nếu không sẽ bị lỗi).
Vậy là xong, bạn chỉ còn việc là ngồi chờ nó copy về thôi (trong lúc copy không đóng hộp thoại command promt, nên thu nhỏ lại để làm chuyện khác).
Ở các lần sau, các bạn chỉ thực hiện Bước 5 là bắt đầu copy dữ liệu được rồi. Không cần làm các Bước từ 1 đến 4.
Để cho đơn giản, trên hệ điều hành Windows, bạn có thể tạo một file cmd trong thư mục AutoRclone để nhanh chóng thực hiện câu lệnh copy, nội dung file như sau
:loop @echo off echo Nhap duong dan chia se can tai: set /p inputurl="" set id=%inputurl:https://drive.google.com/drive/folders/=% echo %id% echo Nhap ten Folder tai ve trong Team Drive: set /p inputfd="" echo Nhap ten SA dau tien: set /p inputsa="" python rclone_sa_magic.py -s %id% -d teamdrive_ID -dp %inputfd% -b %inputsa% -e 500 pause goto loop
Trong đó bạn chỉ cần thay đổi nội dung tại teamdrive_ID và số lượng SA tối đa 500.
Khi chạy file cmd, bạn chỉ cần nhập 3 dữ liệu là chương trình có thể bắt đầu copy:
1. Đường dẫn của thư mục Google Drive được chia sẻ có dạng:
https://drive.google.com/drive/folders/abcxxxxxxxxxxxxxxxxxxxxxxxx123yx
2. Tên thư mục cần tạo trong Team Drive chứa dữ liệu tải về (không có khoảng trống)
3. SA đầu tiên.
Đây chỉ là một cách trong rất nhiều cách thực hiện, cùng với đó là rất nhiều thay đổi trong từng bước để có thể thoả mãn nhu cầu của từng người sử dụng
Video các bước thực hiện thêm SAs vào Google Groups:
Video các bước thực hiện (trên Lubuntu 32 bit):
Video các bước thực hiện (trên Windows 7 32 bit):
20/02/2021: Bổ sung cách thêm SAs vào Google Groups để dễ quản lý.
17/01/2021: Format lại các mã lệnh cho rõ ràng.
19/7/2020: Bài viết.
Bài viết tham khảo từ AutoRclone, các nguồn khác.
Cập nhật lần cuối ngày 28/07/2024 bởi Bạn không giỏi