Bash + rclone · OneDrive ↔ Google Drive · คู่มือปฏิบัติงานแบบโอเพนซอร์ส
ถ่ายโอนข้อมูลบนคลาวด์แบบคัดลอกเท่านั้นด้วย Bash และ rclone
rclone รองรับการแบ่งหน้าข้อมูลบนคลาวด์ การลองใหม่ การถ่ายโอนที่ดำเนินการต่อได้ และแฮชของผู้ให้บริการอยู่แล้ว งานทางวิศวกรรมคือการห่อหุ้มองค์ประกอบพื้นฐานเหล่านั้นไว้ในขั้นตอนปฏิบัติงานที่หยุดอย่างปลอดภัยเมื่อเกิดข้อผิดพลาดและคำนึงถึงความจุ
อัปเดตเมื่อ ; 20 นาทีในการอ่าน.
คำตอบสั้น ๆ
FileArk เป็นตัวเลือกแบบมีการจัดการที่เรียบง่ายกว่าสำหรับการย้ายข้อมูลขนาดใหญ่หรือการย้ายที่ไม่มีผู้คอยดูแล โดยทำการถ่ายโอนทางออนไลน์ ผ่านการทดสอบกับภาระงานระดับหลายเทราไบต์ และตรวจสอบผลลัพธ์แต่ละรายการก่อนเสร็จสิ้น สำหรับผู้ปฏิบัติงานที่ต้องการควบคุมเส้นทางข้อมูลด้วยเชลล์ Wrapper สำหรับ Bash ภายใต้สัญญาอนุญาต MIT นี้จะคัดลอกข้อมูลเป็นแบตช์ที่มีขอบเขตจำกัดผ่านพื้นที่พักข้อมูลในเครื่อง ตรวจสอบทั้งสองช่วงแบบไบต์ต่อไบต์ และไม่ลบไฟล์ต้นทาง
เหตุใดจึงใช้ Wrapper ครอบ rclone แทนการสร้างไคลเอนต์ของผู้ให้บริการทุกรายขึ้นใหม่
rclone ช่วยให้เวิร์กโฟลว์เชลล์มีชั้นนามธรรมสำหรับผู้ให้บริการที่พัฒนามาอย่างสมบูรณ์ พร้อมการกำหนดค่า OAuth การแบ่งหน้า พฤติกรรมการลองใหม่ การถ่ายโอนที่ดำเนินการต่อได้ การควบคุมการทำงานพร้อมกัน คำสั่งจัดทำรายการ และคำสั่งตรวจสอบ ดังนั้น Wrapper จึงมุ่งเน้นข้อกำหนดที่ต้องคงไว้ในการย้ายข้อมูลได้ ได้แก่ คำสั่งที่คัดลอกเท่านั้น การพักข้อมูลที่มีขอบเขตจำกัด พื้นที่สำรอง รายการไฟล์ที่ให้ผลลัพธ์แน่นอน และความคืบหน้าที่บันทึกไว้อย่างถาวร
อย่างไรก็ตาม งานนี้ไม่ได้เป็นอัตโนมัติ ผู้ปฏิบัติงานยังคงต้องรับผิดชอบการกำหนดค่ารีโมต ความปลอดภัยของโทเค็น ความพร้อมใช้งานของเครือข่าย การกำกับดูแลกระบวนการ ดิสก์ในเครื่อง บันทึก ขีดจำกัดของผู้ให้บริการ การตรวจสอบออบเจ็กต์ที่ล้มเหลว และการยอมรับผลที่ปลายทาง FileArk มีไว้สำหรับผู้ใช้ที่ต้องการให้ขั้นตอนดังกล่าวดำเนินการเป็นเวิร์กโฟลว์ออนไลน์ที่มีการจัดการ แทนที่จะทำบนเวิร์กสเตชันหรือเซิร์ฟเวอร์ของตนเอง
สคริปต์นี้จะไม่เรียกใช้ rclone move, sync, delete, purge หรือ rmdirs อย่างชัดเจน โดยใช้ lsf และ about เพื่อสำรวจข้อมูล ใช้ copy ในแต่ละช่วง และใช้ check --download เพื่อตรวจสอบทุกไบต์ สิ่งเดียวที่ถูกลบคือไฟล์ที่ผ่านการตรวจสอบแล้วจากไดเรกทอรีพักข้อมูลในเครื่อง
ดาวน์โหลดรุ่น Bash และสัญญาอนุญาต MIT
ดาวน์โหลดโปรแกรมถ่ายโอนด้วย Bash และ rclone
Wrapper แบบคัดลอกเท่านั้น พร้อมขีดจำกัดแบตช์ พื้นที่สำรองในเครื่องและปลายทาง การตรวจสอบทุกไบต์ เช็กพอยต์ การควบคุมการลองใหม่ และเดโมที่ไม่ต้องใช้เครือข่ายfileark-cloud-transfer.sh · Bash 4+ · rclone · jq · สัญญาอนุญาต MIT
ดาวน์โหลดสัญญาอนุญาต MIT
ประกาศสิทธิ์การใช้งานที่ครอบคลุมสคริปต์ถ่ายโอนด้วยตนเองทั้งสองรายการของ FileArkLICENSE-fileark-cloud-transfer.txt · MIT · ข้อความธรรมดา
เรียกใช้เดโมสำหรับผู้ดำเนินการโดยไม่ใช้เครือข่าย

เดโมนี้เรียกใช้ได้อย่างปลอดภัยก่อนติดตั้ง rclone หรือ jq เนื่องจากการแยกวิเคราะห์อาร์กิวเมนต์จะออกจากโปรแกรมก่อนตรวจสอบสิ่งที่ต้องพึ่งพา เอาต์พุตจะระบุชื่อการดำเนินการแบบทำลายข้อมูลที่ห้ามใช้ แสดงพื้นที่สำรองทั้งสองส่วน และปิดท้ายด้วยจำนวนรายการที่ลบจากต้นทาง
chmod +x fileark-cloud-transfer.sh
bash -n fileark-cloud-transfer.sh
./fileark-cloud-transfer.sh --demo
./fileark-cloud-transfer.sh --helpติดตั้งและกำหนดค่าส่วนประกอบที่จำเป็นสำหรับผู้ดำเนินการ
ติดตั้ง rclone รุ่นปัจจุบันตามคำแนะนำอย่างเป็นทางการ และติดตั้ง jq จากตัวจัดการแพ็กเกจของระบบปฏิบัติการ ต้องใช้ Bash 4 หรือใหม่กว่า เนื่องจากสคริปต์ตัวครอบใช้การจัดการข้อผิดพลาดแบบเข้มงวดและนิพจน์เงื่อนไขสมัยใหม่
เรียกใช้ rclone config และสร้างรีโมตสองรายการที่ตั้งชื่อแยกกัน เช่น onedrive: และ gdrive: ป้อน client ID และ secret ของผู้ให้บริการที่เป็นของคุณเอง เมื่อนโยบายหรือขีดจำกัดอัตราการใช้งานกำหนดให้ต้องใช้แอปพลิเคชัน OAuth โดยเฉพาะ rclone จะจัดเก็บโทเค็น OAuth ไว้ในไฟล์การกำหนดค่า โปรดปกป้องไฟล์นั้นด้วยสิทธิ์เข้าถึงที่เข้มงวดและอย่ารวมไฟล์ไว้กับสคริปต์
ยืนยันรีโมตแต่ละรายการด้วยคำสั่งแสดงรายการแบบอ่านอย่างเดียวและคำสั่งตรวจสอบโควตาก่อนเรียกใช้ Wrapper ใช้พาธอย่าง onedrive:Department/Archive เมื่อขอบเขตครอบคลุมเฉพาะส่วนย่อยของโครงสร้าง
rclone version
rclone config
rclone lsd onedrive:
rclone lsd gdrive:
rclone about onedrive: --json | jq
rclone about gdrive: --json | jqตรึงรายการไฟล์ที่ให้ผลลัพธ์แน่นอนก่อนเริ่มย้ายไบต์
Wrapper ใช้ rclone lsf แบบเรียกซ้ำ โดยระบุตัวคั่นเป็นแท็บและใช้รูปแบบ sp เพื่อสร้างข้อมูลขนาดตามด้วยพาธ จากนั้นจะตรวจสอบว่าขนาดแต่ละรายการเป็นตัวเลขและพาธแต่ละรายการเป็นพาธสัมพัทธ์ ก่อนตัดพาธที่มีอยู่แล้วในเช็กพอยต์ที่ผ่านการตรวจสอบออก
รุ่น Bash จะปฏิเสธชื่อไฟล์ที่มีแท็บ อักขระขึ้นบรรทัดใหม่แบบ carriage return หรืออักขระขึ้นบรรทัดใหม่ เนื่องจากรายการ --files-from-raw ที่คั่นด้วยบรรทัดใหม่ไม่สามารถแทนชื่อเหล่านี้ได้อย่างไม่กำกวม หากมีชื่อดังกล่าว ให้ใช้รุ่น Python หรือรูปแบบรายการที่สร้างขึ้นเพื่อวัตถุประสงค์นี้โดยเฉพาะ
เช็กพอยต์แบบพาธได้รับการออกแบบให้เรียบง่ายและตรวจสอบได้ โดยตั้งสมมติฐานว่าพาธต้นทางจะไม่เปลี่ยนแปลงระหว่างการทำงาน หากทำได้ ให้ระงับการเขียนไปยังต้นทาง หรือสร้างรายการใหม่และกระทบยอดเมื่อคาดว่าจะมีการเปลี่ยนแปลงพร้อมกัน
rclone lsf "$SOURCE" \
--recursive \
--files-only \
--format "sp" \
--separator