การย้ายข้อมูลจาก Google Drive ไป Cloud Storage

Google Drive เป็นพื้นที่เก็บข้อมูลใน cloud ที่ผู้ใช้ทั่วไปสามารถเข้าไป สร้างเอกสาร, upload และแชร์เอกสารให้เพื่อนได้ โดยสะดวก ด้วยความง่าย และมี feature ครอบคลุมการใช้งานทั่วๆ ไป แค่สมัคร account แล้วก็เริ่มใช้งานได้เลย มันจึงเหมาะกับการเป็นที่รับ-ส่ง ไฟล์ แบบเร็วๆ


Google Cloud Storage เป็นบริการเก็บข้อมูลบน cloud อีกตัวหนึ่งจาก Google อยู่ในกลุ่มบริการของ Google Cloud Platform ที่มีออกแบบมาสำหรับงานระบบหรือ application ในการใช้งาน Google Cloud Storage นอกจากการสมัคร account แล้ว จะต้องตั้ง project สร้าง bucket ซึ่งต้องตั้งชื่อ เลือก location ของข้อมูล เลือก class ของ storage จึงจะเริ่มใช้งานได้ ด้วยการจัดการที่มีเรื่องต้องเข้าใจเยอะ Cloud Storage จึงเหมาะกับการเก็บข้อมูลสำหรับ application มากกว่าที่จะให้ user ทั่วไปเข้ามาใช้งาน


ในกรณีของผม ที่มีลูกค้าต้องการส่งไฟล์จำนวนประมาณ 1.3 แสน ไฟล์ มาให้เพื่อทำงานอย่างหนึ่ง ผมจึงสร้าง folder บน Google Drive และให้ลูกค้า upload ไฟล์เข้ามาให้ (ในกรณีนี้ ลูกค้าที่เป็นคน upload จะใช้งาน Google Drive ได้ง่ายกว่า Cloud Storage) แต่งานที่จะทำนั้น จะเรียกไฟล์ผ่าน Cloud Storage จึงจำเป็นต้องมีการสำเนาข้อมูลจาก Google Drive เข้า Cloud Storage

เครื่องมือตัวหนึ่งที่ได้รับคำแนะนำมาเพื่อการย้ายไฟล์ระหว่าง 2 ระบบนี้คือ FileZilla Pro ที่เราสามารถสร้าง profile ในการเชื่อมต่อได้ทั้ง Google Drive และ Cloud Storage (และที่เก็บข้อมูลในระบบอื่นๆ อีกมากมาย)

FileZilla Pro มีหน้า UI ให้เราเลือกเชื่อมต่อกับ storage อื่นๆ ได้อย่างหลากหลาย ซึ่งรวมถึงทั้ง Google Drive และ Google Cloud Storage ด้วย

การย้ายไฟล์ด้วย FileZilla Pro สิ่งที่เราต้องทำคือ
  1. เชื่อมต่อกับ Google Drive
  2. ลากไฟล์ลงมาที่เครื่อง
  3. เชื่อมต่อกับ Cloud Storage
  4. ลากไฟล์ขึ้น Cloud Storage
จากการทดลองใช้งานเบื้องต้น FileZilla Pro นั้นใช้งานได้ง่ายมาก UI ตรงไปตรงมา ไม่ต้องเรียนรู้อะไรมาก (เดาๆ จากหน้า UI เอาก็ใช้งานได้) แต่พอลอง download และ upload ข้อมูลดูแล้ว ดูจาก log จะเห็นว่าไฟล์แต่ละไฟล์จะใช้เวลา 1 วินาที (อาจจะเป็น limit ของ license ที่ผมใช้งานก็ได้) ทำให้การ download และ upload เอกสารจำนวน 1.3 แสนไฟล์นั้น จะใช้เวลาประมาณ 3 วัน ผมเลยกลับไปที่วิธีพื้นฐานที่ยุ่งยากกว่านิดหน่อย แต่งานจะเสร็จได้เร็วกว่า

ตรวจสอบ log ในการ download แต่ละไฟล์ใช้เวลา 1 วินาที ลองคำนวณเวลาทั้งหมดสำหรับ 1.3 แสนไฟล์ เท่ากับ 36 ชั่วโมง โดยประมาณ ถ้า upload เป็นแบบเดียวกัน ก็เพิ่มไปอีก 36 ชั่วโมง


ใช้เครื่องมือที่ Google เตรียมไว้ให้

สำหรับการดึงข้อมูลลง ผมใช้ Drive File Stream ที่เป็น client จาก Google ตั้งค่าดูด folder ที่ต้องการลงมาที่ local folder ส่วนนี้ เร็วกว่า FileZilla Pro เยอะมาก

ติดตั้ง Drive File Stream แล้วมาเลือกดูดข้อมูลจากหน้า folder ได้เลย

ส่วนการ upload ข้อมูลจาก local ขึ้น Cloud Storage ก็ใช้ gcloud SDK เป็นตัว upload ผ่านหน้า command-line ด้วยการใส่คำสั่งให้มันทำงานขนานกันหลายๆ process โดยคำสั่งที่ใช้คือ

gsutil -m rsync -r data gs://mybucket/data

-m คำสั่งให้ทำงานแบบหลาย thread 
-r คำสั่งให้จัดการทุกอย่างรวมถึง folder ข้างใน

คำสั่ง rsync จะตรวจสอบข้อมูลที่ต้นทางและปลายทาง และ update เฉพาะส่วนที่ต่างกัน

คำสั่งนี้ ใช้เวลาประมาณ 3 ชั่วโมง ก็สามารถ upload เอกสารทั้ง 1.3 แสนไฟล์ได้เรียบร้อยคับ (กรณีของผม ไม่มีคอขวดที่ CPU และ network)

หวังว่าจะเป็นประโยชน์สำหรับใครก็ตาม ที่เก็บไฟล์ไว้บน Google Drive หรือใช้ Google Drive เป็นที่รับไฟล์จากคนอื่น แล้วต้องการย้ายข้อมูลไปวางบน Cloud Storage เพื่อทำงานต่อนะครับ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การเรียกใช้งาน Google Apps Script

ลดเวลาการเรียก API ใน Apps Script ด้วย fecthAll

ออกแบบระบบให้คุยข้าม module กันได้ ด้วย Pub/Sub