obsutil คือเครื่องมือ command line ของ Huawei Cloud สำหรับอัปโหลด ดาวน์โหลด sync และลบไฟล์ใน OBS (Object Storage Service) เหมาะกับงานที่ทำเป็นชุด รันตามรอบ หรือย้ายไฟล์จำนวนมาก ไม่ต้องติดตั้ง ดาวน์โหลดจากเอกสารของ Huawei Cloud แล้วรันได้ทันทีบน Windows, Linux และ macOS

ก่อนใช้งานจริงให้ตั้ง endpoint ให้ตรงกับ region ของ bucket (ที่เก็บ object ระดับบนสุดของ OBS) และใช้ access key ของ IAM user ที่มีสิทธิ์เท่าที่งานต้องใช้ ไม่ใช่ key ของบัญชีหลัก ไฟล์ที่ใหญ่กว่า threshold (ขนาดไฟล์ที่เริ่มใช้ multipart) จะถูกส่งแบบ multipart (แบ่งไฟล์เป็นหลายส่วนแล้วส่งแยกกัน) และต่อจากจุดที่หลุดได้เอง

การวางแผนย้ายระบบทั้งระบบและเรื่องที่ตั้งข้อมูลตามกฎหมายไทย อ่านได้ในคู่มือ Cloud Migration สำหรับองค์กรไทย

คำสั่งหลักในบทความนี้ (endpoint ของ AP-Bangkok คือ obs.ap-southeast-2.myhuaweicloud.com):
  • ตรวจไฟล์ที่ดาวน์โหลด: ./obsutil version
  • ตั้งค่า: ./obsutil config -interactive
  • ตรวจการเชื่อมต่อ: ./obsutil ls obs://bucket/prefix/ -limit=10
  • ย้ายไฟล์: ./obsutil sync /data/share obs://bucket/share
  • ต่องานที่หลุด: ./obsutil cp -recover=<task_id> -f

obsutil คืออะไร และเมื่อไรควรใช้แทน OBS Browser+?

obsutil คือ CLI สำหรับเข้าถึงและจัดการ OBS ตามหน้าแนะนำ obsutil ของ Huawei Cloud ซึ่งระบุว่าเหมาะกับงาน batch และงานอัตโนมัติ เช่น backup และ archive ตามรอบ และทำงานบางอย่างที่ OBS Browser+ ทำไม่ได้ เช่น sync การอัปโหลด ดาวน์โหลด และคัดลอก

ตัวเครื่องมือไม่มีค่าใช้จ่าย แต่หน้าเดียวกันระบุว่า request ที่ obsutil ส่งไปยัง OBS คิดค่าบริการตามการใช้ OBS และการส่ง request เดิมซ้ำอาจถูกคิดซ้ำ จึงควรคิดเรื่องนี้ก่อนตั้งงาน sync ที่รันถี่ ๆ กับไฟล์จำนวนมาก

เลือกเครื่องมือเข้าถึง OBS ตามลักษณะงาน
งานเครื่องมือเหตุผลตามเอกสาร
อัปโหลดหรือแชร์ไฟล์เป็นครั้งคราวผ่านหน้าจอOBS Console หรือ OBS Browser+OBS Browser+ เป็นโปรแกรม GUI บนเดสก์ท็อป (OBS Tools)
งาน script, backup ตามรอบ, sync ไฟล์ส่วนที่เปลี่ยนobsutilหน้า OBS Tools แนะนำ obsutil เมื่อมีงานระดับหลายล้านรายการ เพราะ OBS Browser+ จะค้นหางานช้าและงานอาจล้มเหลว
mount parallel file system เป็น directory บน Linuxobsfsเป็นเครื่องมือแบบ FUSE ตามหน้า OBS Tools
ใช้ CLI ตัวเดียวกับบริการอื่นของ Huawei CloudKooCLI (hcloud obs)เอกสาร KooCLI ระบุว่ารวม obsutil ไว้แล้ว และพารามิเตอร์ของแต่ละคำสั่งเหมือน obsutil
เขียนโปรแกรมที่อ่านเขียน OBS เองOBS SDK หรือ REST APIเป็นช่องทางเข้าถึง OBS ที่ระบุในหน้า Accessing OBS

เอกสาร KooCLI ที่ตรวจไม่ได้ระบุว่า obsutil เลิกพัฒนาหรือถูกแทนที่ เป็นการรวมความสามารถเข้าไปใน KooCLI ทีมที่ใช้ KooCLI อยู่แล้วจึงใช้ hcloud obs ได้ ส่วนเครื่องที่ต้องการแค่ย้ายไฟล์ ใช้ obsutil ตัวเดียวก็พอ

ดาวน์โหลดและตรวจไฟล์ obsutil

ดาวน์โหลด obsutil จากหน้า Downloading and Installing obsutil ซึ่งมีแพ็กเกจสำหรับ Windows 64-bit, Linux x86 64-bit, Linux Arm 64-bit และ macOS 64-bit พร้อมค่า SHA-256 ของแต่ละแพ็กเกจ ชื่อไฟล์และลิงก์อาจเปลี่ยนตาม release จึงควรเปิดจากหน้านี้ทุกครั้ง แทนการเก็บ URL ไว้ใน script

obsutil ไม่ต้องติดตั้ง บน Linux ให้แตกไฟล์ด้วย tar -xzvf เข้าไปในโฟลเดอร์ที่ได้ แล้วให้สิทธิ์รัน ถ้าไม่ทำขั้นนี้ เอกสารระบุว่าจะได้ข้อความ Permission denied บน Windows แตกไฟล์ zip แล้วรันจาก Command Prompt

chmod 755 obsutil
./obsutil version

หน้าดาวน์โหลดให้ค่า SHA-256 แต่ไม่ได้บอกวิธีตรวจ วิธีที่ทีมเราใช้คือคำนวณด้วยเครื่องมือของระบบปฏิบัติการ เช่น sha256sum บน Linux หรือ certutil -hashfile <ไฟล์> SHA256 บน Windows แล้วเทียบกับค่าบนหน้าเอกสารก่อนแตกไฟล์

ลิงก์ดาวน์โหลดในเอกสารชี้ไปที่ bucket ใน ap-southeast-1 (CN-Hong Kong) ค่านี้เป็นแค่ที่เก็บแพ็กเกจ ไม่ใช่ endpoint ที่ต้องตั้งให้ obsutil ถ้า bucket ของคุณอยู่ในกรุงเทพฯ

ตั้งค่า obsutil อย่างปลอดภัย: endpoint, IAM user และ access key

ตั้งค่าด้วยคำสั่ง obsutil config ซึ่งต้องมี AK (access key ID), SK (secret access key) และ endpoint ตามหน้า Initializing the Configuration และต้องใส่ security token ด้วย -t เมื่อใช้ access key ชั่วคราว

Endpoint ของ region AP-Bangkok

Region AP-Bangkok มี region ID ap-southeast-2 และ endpoint ของ OBS คือ obs.ap-southeast-2.myhuaweicloud.com ตามหน้า Accessing OBS (ตารางทุก region อยู่ใน API Explorer) ใส่เฉพาะ endpoint ของ region ไม่ใส่ชื่อ bucket นำหน้า เพราะFAQ ของ OBS ระบุว่าการใช้ชื่อโดเมนของ bucket เป็น endpoint ทำให้เกิด signature mismatch

หน้าพารามิเตอร์ของไฟล์ตั้งค่าระบุว่าถ้า endpoint ไม่มี protocol นำหน้า obsutil จะใช้ HTTPS และหน้า Initializing the Configuration ก็แนะนำ HTTPS เพื่อความปลอดภัย

ใช้ IAM user ที่มีสิทธิ์เท่าที่งานต้องใช้

อย่าใช้ access key ของบัญชีหลัก แนวทาง IAM ของ Huawei Cloud แนะนำว่าไม่ควรสร้าง access key ให้บัญชีหลักเลย และให้สิทธิ์น้อยที่สุดที่งานต้องใช้ ไม่เขียน access key ไว้ในโค้ด และสลับใช้ key สองชุดเพื่อหมุนเวียน key

สำหรับงานย้ายไฟล์ ให้สร้าง IAM user แยกต่อระบบหรือต่องาน แล้วผูก custom policy ที่จำกัดเฉพาะ bucket และ prefix (ส่วนต้นของชื่อ object ที่ใช้แบ่งเหมือนโฟลเดอร์) ที่ใช้ ตัวอย่างในหน้า OBS custom policy ให้สิทธิ์อ่านเขียนเฉพาะ obs-example/my-project/* ด้วย action เหล่านี้

  • obs:bucket:ListBucket บน bucket
  • obs:object:PutObject, obs:object:GetObject และ obs:object:ListMultipartUploadParts บน object ใน prefix
  • obs:object:DeleteObject เฉพาะเมื่องานต้องลบ ถ้าเป็นงานอัปโหลดอย่างเดียว ตัดออกได้

เอกสารสิทธิ์ของ OBSระบุว่าการให้ IAM user ใช้งานผ่าน OBS Console หรือ OBS Browser+ ด้วย custom policy ต้องเพิ่ม obs:bucket:ListAllMyBuckets และ obs:bucket:ListBucket เป็นอย่างน้อย ตัวอย่าง policy ข้างต้นไม่มี obs:bucket:ListAllMyBuckets เอกสารไม่ได้พูดถึง obsutil โดยตรง แต่ถ้าต้องการให้ ./obsutil ls -s แสดงรายชื่อ bucket ทั้งหมดได้ ต้องเพิ่ม obs:bucket:ListAllMyBuckets ซึ่งเอกสารระบุว่าต้องเลือก resource ทั้งหมด

Access key ชั่วคราวและ ECS agency

Access key ชั่วคราวพร้อม security token ลดความเสียหายเมื่อ key หลุด เพราะหมดอายุเอง API ของ IAM กำหนดอายุได้ตั้งแต่ 15 นาทีถึง 24 ชั่วโมง (ค่าตั้งต้น 15 นาที) และแนบ policy เพื่อจำกัดสิทธิ์เพิ่มได้ ซึ่งเอกสารระบุว่ามีเฉพาะ OBS ที่บังคับใช้ policy ในส่วนนี้ ใส่ token ให้ obsutil ด้วย -t

key ชั่วคราวหมดอายุระหว่างงานได้ งานย้ายที่ยาวกว่าอายุ token ต้องขอ key ใหม่และตั้งค่าซ้ำก่อนรันรอบถัดไป หรือใช้ ECS agency ตามย่อหน้าถัดไป

ถ้ารัน obsutil บน ECS (Elastic Cloud Server หรือ VM ของ Huawei Cloud) ให้ผูก ECS กับ IAM agency (การมอบสิทธิ์ให้บริการอย่าง ECS เรียกใช้ OBS แทนผู้ใช้) ที่มีสิทธิ์ OBS แล้วตั้ง autoChooseSecurityProvider=true ใน .obsutilconfig ตามหน้า Configuring Auto Obtaining of Access Keys

เมื่อเปิดค่านี้ obsutil จะหา key จากไฟล์ตั้งค่า จาก environment variable OBS_ACCESS_KEY_ID, OBS_SECRET_ACCESS_KEY และ OBS_SECURITY_TOKEN แล้วจึงขอ key ชั่วคราวจาก ECS ตามลำดับ ยังต้องตั้ง endpoint เอง และถ้าไม่พบ key จากทุกแหล่งจะเข้าถึงแบบ anonymous

ป้องกัน key ใน shell history และไฟล์ตั้งค่า

เอกสารเตือนว่าถ้าตั้งค่าด้วย -i, -k และ -e บน command line คำสั่ง history ของ Linux จะแสดงค่าที่ใส่ไว้ วิธีที่ทีมเราใช้คือตั้งค่าแบบ interactive ซึ่งเป็นอีกวิธีที่เอกสารระบุไว้ แล้วกรอก AK, SK, endpoint และ token ตามที่ถาม

./obsutil config -interactive

ค่าที่ตั้งไว้เก็บในไฟล์ .obsutilconfig ใน home directory (~ บน Linux และ macOS, C:\Users\<username> บน Windows) เอกสารระบุว่าไฟล์นี้ซ่อนไว้โดยปริยายและ obsutil เข้ารหัส AK/SK ในไฟล์ ทีมเราจำกัดสิทธิ์ไฟล์ให้ผู้ใช้ที่รันงานอ่านได้คนเดียว เช่น chmod 600 ~/.obsutilconfig ซึ่งเป็นแนวปฏิบัติของเราเอง ไม่ได้มาจากเอกสารของ Huawei Cloud

ตรวจการตั้งค่า

รัน ./obsutil ls -s แล้วอ่านผลตามหน้า Initializing the Configuration ถ้าเห็น Bucket number แปลว่าตั้งค่าถูก ข้อความอื่นดูได้ในหัวข้อปัญหาที่พบบ่อยด้านล่าง

ถ้า IAM user มี policy จำกัดเฉพาะ bucket ตามตัวอย่างข้างต้น ซึ่งไม่มี obs:bucket:ListAllMyBuckets คำสั่ง ls -s จะได้ 403 แม้ key ถูกต้อง ให้ตรวจด้วยคำสั่งนี้แทน หรือเพิ่ม obs:bucket:ListAllMyBuckets ใน policy

./obsutil ls obs://bucket/prefix/ -limit=10

คำสั่ง obsutil ที่ใช้บ่อย

คำสั่งหลักมีห้าตัว คือ ls ดูรายการ, cp อัปโหลดและดาวน์โหลด, sync ส่งเฉพาะส่วนที่เปลี่ยน, cp -recover ต่องานที่ล้มเหลว และ rm ลบ ตัวอย่างด้านล่างใช้รูปแบบของ Linux และ macOS (./obsutil) ชื่อ bucket และ path เป็นตัวอย่าง

ดูรายการ bucket และ object

./obsutil ls -s
./obsutil ls obs://bucket/prefix/ -du

ตัวเลือกตามหน้า list bucket และหน้า list object

  • -s แสดงแบบย่อ
  • -du คืนขนาดรวมของ object ที่ list อย่างรวดเร็ว (obsutil 5.4.6 ขึ้นไป)
  • -d แสดงเฉพาะชั้นแรกของ prefix ที่ระบุ ไม่ไล่ลงทุกชั้น
  • -limit จำนวน object สูงสุดที่แสดง ถ้าไม่ระบุจะแสดง 1,000 object ใส่ค่าน้อยกว่าหรือเท่ากับ 0 เพื่อแสดงทั้งหมด

อัปโหลดไฟล์และโฟลเดอร์

./obsutil cp /data/report.pdf obs://bucket/docs/
./obsutil cp /data/share/ obs://bucket/share/ -r -f

ตัวเลือกที่ใช้บ่อยตามหน้า Uploading an Object

  • -r อัปโหลดทั้งโฟลเดอร์
  • -f ข้ามการถามยืนยัน
  • -u ส่งเฉพาะไฟล์ที่ยังไม่มีใน bucket ขนาดต่างกัน หรือใหม่กว่า object
  • -include / -exclude กรองไฟล์ตาม pattern
  • -dryRun จำลองการทำงานก่อนส่งจริง

ไฟล์หนึ่งไฟล์อัปโหลดแบบปกติได้ถึง 5 GB และแบบ multipart ได้ถึง 48.8 TB ห้ามแก้ไฟล์ต้นทางระหว่างอัปโหลด และการเทียบไฟล์ด้วย -u แต่ละไฟล์สร้าง HEAD request ที่คิดค่าบริการ

ดาวน์โหลด

./obsutil cp obs://bucket/share/ /restore/ -r -f

หน้า Downloading an Object ระบุว่า partition ของ -tempFileDir ต้องมีพื้นที่ว่างมากกว่าขนาด object ที่ดาวน์โหลด และ -vmd5 ตอนดาวน์โหลดจะข้ามการตรวจ MD5 ถ้า object ไม่มี metadata x-obs-meta-md5chksum

Sync เฉพาะส่วนที่เปลี่ยน

./obsutil sync /data/share obs://bucket/share

หน้า Synchronously Uploading อธิบายว่า sync ส่งเฉพาะไฟล์ที่เปลี่ยน และหลังจบงานไฟล์ต้นทางทุกไฟล์จะมีคู่ใน bucket แต่การ sync หรือ cp -u แบบปกติไม่ลบ object ที่ไฟล์ต้นทางถูกลบไปแล้ว ตามFAQ ของ obsutil

ถ้าต้องการให้ bucket ตรงกับต้นทางทุกไฟล์ ให้ใช้ -delete ซึ่งเอกสารระบุว่าใช้ได้เฉพาะทิศอัปโหลด ใช้กับ cp ต้องมี -u และ -r ด้วย และลบแล้วกู้คืนไม่ได้ เอกสารแนะนำให้เปิด versioning และใช้ -dryRun ดูผลก่อน

./obsutil sync /data/share obs://bucket/share -delete -dryRun

Sync ระหว่าง bucket สองตัวทำได้ด้วย ./obsutil sync obs://src obs://dst ตามหน้า bucket-to-bucket sync ถ้าไม่เปิด client-side cross-region replication (-crr) สอง bucket ต้องอยู่ region เดียวกัน

ต่องานอัปโหลดที่ล้มเหลว

./obsutil cp -recover=<task_id> -f

ตามหน้า Resuming a Failed Upload Task task ID แสดงหลังการอัปโหลด หรือเป็น 36 ตัวอักษรท้ายชื่อไฟล์ผลลัพธ์ (ไม่รวม .txt) ในโฟลเดอร์ .obsutil_output ซึ่งเป็นค่าตั้งต้นของ -o

การต่อจากจุดที่หลุดผูกกับ multipart เอกสาร resumable transfer ระบุว่าไฟล์ที่ใหญ่กว่า threshold จะใช้ multipart และเปิดการต่องานให้อัตโนมัติ หน้า Uploading an Object ระบุว่าบันทึก part เก็บในโฟลเดอร์ checkpoint (ค่าตั้งต้น .obsutil_checkpoint ใน home directory เปลี่ยนได้ด้วย -cpd)

ไฟล์ที่เล็กกว่า threshold ส่งตรงและไม่มีบันทึก part หน้าเดียวกันระบุว่าแบบนี้ต่องานไม่ได้ จึงต้องส่งใหม่ทั้งไฟล์ ค่า -threshold ที่ไม่ระบุในคำสั่งจะใช้ defaultBigfileThreshold จากไฟล์ตั้งค่า

ลบ object

./obsutil rm obs://bucket/old/report.pdf
./obsutil rm obs://bucket/old/ -r

หน้า Deleting an Object ระบุว่าการลบย้อนกลับไม่ได้ ถ้าลบแบบ -r โดยไม่ใส่ key object ทุกตัวใน bucket จะถูกลบ และให้ใช้ -f อย่างระวัง เพราะข้ามการถามยืนยัน คำสั่ง rm ไม่มี -dryRun ในหน้านี้ จึงควร ls prefix เดียวกันดูก่อนลบ

ปรับความเร็วด้วย -j และ -p

ไฟล์เล็กจำนวนมากให้เพิ่ม -j (จำนวนไฟล์ที่ส่งพร้อมกัน) ไฟล์ใหญ่ให้เพิ่ม -p (จำนวน part ที่ส่งพร้อมกันต่อไฟล์) และ -ps (ขนาด part) ตามหน้า performance tuning ค่าตั้งต้นของทั้ง defaultJobs และ defaultParallels คือ 5

เอกสารเตือนว่าจำนวนงานที่ทำพร้อมกันรวม (concurrency คือ jobs × parallels) ที่สูงเกินไปทำให้ประสิทธิภาพลดลงและบางงานล้มเหลว และค่า -p หรือ -ps ที่ใหญ่เกินไปบนเครือข่ายที่ไม่เสถียรอาจเกิด EOF error ให้เริ่มจากค่าต่ำแล้วค่อยเพิ่ม เอกสารให้สูตรตั้งต้นของ parallels ไว้ดังนี้

defaultParallels = Min(
  CPUs x 2,
  object size / defaultPartSize x 1.5)

งานที่บางส่วนล้มเหลวหลังปรับค่า ให้รันซ้ำด้วย -u หรือต่องานด้วย -recover

ย้ายไฟล์ชุดใหญ่จาก file server ขึ้น OBS

ย้ายเป็นรอบ: วัดขนาด ทดลองส่ง sync ซ้ำจนส่วนต่างเหลือน้อย ตรวจผล แล้วหยุดการเขียนเพื่อ sync รอบสุดท้ายก่อนสลับระบบ ขั้นตอนนี้ใช้ได้กับ file server, NAS หรือข้อมูลจาก object storage อื่นที่ดึงลงเครื่องพักไว้ก่อน เพราะ obsutil อ่านจาก path ในเครื่องหรือจาก bucket ของ OBS

  1. วัดขนาดและจำนวนไฟล์ต้นทาง: นับจากฝั่งต้นทางด้วยเครื่องมือของระบบไฟล์ เก็บตัวเลขไว้เทียบหลังย้าย ถ้าต้นทางเป็น bucket ของ OBS ใช้ ls -du
  2. เลือกวิธีตามขนาด: คู่มือย้ายข้อมูลในเครื่องขึ้น OBS ของ Huawei Cloud แนะนำเครื่องมือ OBS เช่น obsutil สำหรับข้อมูลไม่เกิน 1 TB และแนะนำ CDM หรือ DES (ส่งข้อมูลด้วยดิสก์หรืออุปกรณ์) สำหรับข้อมูลที่ใหญ่กว่า ตรวจว่าบริการทางเลือกเปิดใน region ที่ใช้ก่อนวางแผน
  3. ทดลองจำลอง (dry run): รันคำสั่งจริงพร้อม -dryRun เพื่อดูว่า include/exclude เลือกไฟล์ถูก
  4. ทดลองย้ายชุดเล็ก (pilot): ส่งโฟลเดอร์ตัวอย่างที่มีทั้งไฟล์เล็กและใหญ่ จับเวลาเอง ปรับ -j และ -p แล้วใช้ผลนี้ประเมินเวลาของทั้งชุด
  5. Sync รอบแรกและรอบถัดไป: รัน sync ขณะที่ระบบเดิมยังใช้งาน รอบหลังจะส่งเฉพาะไฟล์ที่เปลี่ยน
  6. ตรวจผล: เปิด -vlength เพื่อเทียบขนาด หรือ -vmd5 เพื่อเทียบ MD5 ซึ่งต้องคำนวณ MD5 ทุกไฟล์ จึงควรเผื่อเวลาสำหรับข้อมูลชุดใหญ่ หน้า Resuming a Failed Upload Task ระบุว่าห้ามใช้ -vmd5 ถ้า object ต้องเข้ารหัส จากนั้นเปิดรายงาน cp_failed_report_* ในโฟลเดอร์ .obsutil_output และเทียบขนาดรวมจาก ls -du กับตัวเลขต้นทาง
  7. สลับระบบ (cut-over): หยุดการเขียนที่ต้นทาง รัน sync รอบสุดท้าย ตรวจซ้ำ แล้วจึงสลับแอปพลิเคชันหรือผู้ใช้ไปที่ OBS ส่วนการลบ object ที่ต้นทางลบไปแล้ว ดูหัวข้อ sync ด้านบน

ถ้าข้อมูลอยู่ใน object storage ของ cloud อื่นอยู่แล้ว ให้พิจารณา OMS (Object Storage Migration Service) ซึ่งเอกสารของ Huawei Cloud ระบุว่าเป็นบริการย้ายข้อมูลออนไลน์จาก object storage ของ AWS, Alibaba Cloud, Microsoft Azure, Google Cloud และรายอื่น รวมถึงแหล่งข้อมูล HTTP/HTTPS เข้า OBS และหยุด ต่อ หรือเริ่มงานใหม่ได้ ต่างจากวิธีใช้ obsutil ที่ต้องดึงข้อมูลลงเครื่องพักก่อน

เรื่องการวางแผนย้ายทั้งระบบ เช่น การเลือกแนวทางย้าย ค่าใช้จ่าย และแผนย้อนกลับ อยู่ในคู่มือ Cloud Migration ถ้าต้องการทีมช่วยออกแบบและย้ายระบบขึ้น Huawei Cloud ดูได้ที่บริการ Huawei Cloud ของ UNIXDEV

ปัญหาที่พบบ่อยและวิธีตรวจ

ปัญหาส่วนใหญ่ตอนเริ่มใช้มาจาก endpoint ผิด region, key ไม่มีสิทธิ์ หรือเวลาเครื่องคลาดเคลื่อน ตารางนี้รวมอาการที่เอกสารของ Huawei Cloud อธิบายไว้

อาการ สาเหตุ และสิ่งที่ต้องตรวจ
อาการสาเหตุและสิ่งที่ต้องตรวจ
ls -s ได้ Http status [403]access key อาจผิด หรือไม่มีสิทธิ์ดูรายชื่อ bucket (obs_11_0005) ตรวจ AK/SK, token ที่หมดอายุ และ policy ของ IAM user ว่าไม่มี ListAllMyBuckets หรือไม่
A connection attempt failedเชื่อมต่อ OBS ไม่ได้ ตรวจ DNS, firewall, proxy และเส้นทางออก internet ของเครื่อง
cloud_url [url] is not in well formatendpoint หรือชื่อโดเมนไม่ถูกต้อง ตรวจค่า -e เทียบกับตาราง endpoint
SignatureDoesNotMatchใช้ชื่อโดเมนของ bucket เป็น endpoint หรือ AK/SK ไม่ตรงกัน (obs_faq_0173) ใช้ endpoint ของ region เช่น obs.ap-southeast-2.myhuaweicloud.com ไม่ใส่ชื่อ bucket นำหน้า
request ถูกปฏิเสธเพราะเวลาคลาดเวลาเครื่องกับ server ต่างกันเกิน 15 นาที (obs_03_0347) ตั้งเวลาเครื่องให้ตรง เช่นผ่าน NTP

ถ้ายังไม่พบสาเหตุ obsutil เขียน log ได้ด้วยการตั้ง utilLogPath และ sdkLogPath ในไฟล์ตั้งค่า ซึ่งหน้าพารามิเตอร์ระบุว่าถ้าเว้นว่างจะไม่เก็บ log

สถานะ ณ 2026-11-11

ข้อมูลที่เปลี่ยนได้ตามเวลา ตรวจจากเอกสารของ Huawei Cloud เมื่อ 11 พฤศจิกายน 2026
เรื่องสถานะและแหล่งที่มา
Endpoint ของ OBS ใน AP-Bangkokobs.ap-southeast-2.myhuaweicloud.com (Accessing OBS อัปเดต 2026-11-02)
เวอร์ชัน obsutil ในตัวอย่างของหน้าดาวน์โหลดผลตัวอย่างแสดง 5.7.9 เป็นตัวอย่าง ไม่ใช่ประกาศ release (Downloading and Installing obsutil อัปเดต 2026-10-21)
แพ็กเกจที่มีให้ดาวน์โหลดWindows 64-bit, Linux x86 64-bit, Linux Arm 64-bit, macOS 64-bit พร้อม SHA-256 (หน้าเดียวกัน)
ค่าตั้งต้นในไฟล์ตั้งค่าdefaultBigfileThreshold 50 MB, defaultJobs 5, defaultParallels 5, maxRetryCount 3 (Configuration parameters อัปเดต 2026-09-20)
ls -duต้องใช้ obsutil 5.4.6 ขึ้นไป (Listing objects อัปเดต 2026-09-20)
อายุ access key ชั่วคราว15 นาทีถึง 24 ชั่วโมง ค่าตั้งต้น 15 นาที (IAM API อัปเดต 2026-09-28)
เกณฑ์เลือกวิธีย้ายข้อมูลในเครื่องเครื่องมือ OBS ไม่เกิน 1 TB, CDM น้อยกว่า 8 TB ต่อครั้ง, DES แบบดิสก์น้อยกว่า 30 TB ต่อครั้ง (Migrating Local Data to OBS อัปเดต 2026-10-14)
KooCLI กับ obsutilKooCLI รวม obsutil ไว้ในคำสั่ง hcloud obs หน้านี้ไม่ได้ระบุว่า obsutil เลิกใช้ (KooCLI อัปเดต 2025-05-27)

UNIXDEV ช่วยย้ายข้อมูลขึ้น Huawei Cloud OBS

UNIXDEV ออกแบบและย้ายระบบขึ้น Huawei Cloud ใน region AP-Bangkok งานที่เกี่ยวกับบทความนี้คือ วาง IAM user และ policy ของ OBS ตามบทบาท ตั้งค่า bucket และวางขั้นตอนย้ายไฟล์ชุดใหญ่ตั้งแต่ pilot จนถึง cut-over พร้อมการตรวจผล รายละเอียดอยู่ที่บริการ Huawei Cloud และบริการ Cloud ของ UNIXDEV

ขั้นแรกที่แนะนำคือส่งขนาดข้อมูล จำนวนไฟล์ และช่วงเวลาที่หยุดการเขียนได้มาประเมิน เพื่อเลือกระหว่าง obsutil, OMS หรือวิธีอื่น ก่อนเริ่มย้าย

แหล่งอ้างอิงและอ่านต่อ

ตรวจข้อมูล ณ วันที่ 2026-11-11

วิธีจัดทำ: อ้างอิงจากเอกสารต้นทางข้างต้น ตรวจโดยทีม UNIXDEV

คำถามที่พบบ่อย

obsutil คืออะไร?

CLI ของ Huawei Cloud สำหรับจัดการ OBS ทีมที่ใช้ KooCLI อยู่แล้วไม่ต้องติดตั้งเพิ่ม เพราะ KooCLI รวม obsutil ไว้เป็นคำสั่ง hcloud obs ที่ใช้พารามิเตอร์เดียวกัน ส่วนการเลือกระหว่าง obsutil กับ OBS Browser+ ดูตารางในหัวข้อแรกของบทความ

ดาวน์โหลด obsutil ได้ที่ไหน?

ดาวน์โหลดจากหน้า Downloading and Installing obsutil ในเอกสารของ Huawei Cloud เท่านั้น ไม่ควรเก็บ URL ของแพ็กเกจไว้ใน script เพราะชื่อไฟล์เปลี่ยนตาม release ก่อนแตกไฟล์ให้เทียบค่า SHA-256 กับค่าบนหน้าเดียวกัน รายละเอียดอยู่ในหัวข้อดาวน์โหลดด้านบน

ต้องใช้ AK/SK ของบัญชีหลักไหม?

ไม่ควร ใช้ IAM user ที่ policy จำกัดเฉพาะ bucket หรือ prefix หรือ access key ชั่วคราวพร้อม token แทน ถ้า policy ไม่มี obs:bucket:ListAllMyBuckets ให้ตรวจการเชื่อมต่อด้วย ls บน prefix ของงาน ไม่ใช่ ls -s ดูหัวข้อตั้งค่า obsutil อย่างปลอดภัย

อัปโหลดไฟล์ใหญ่แล้วหลุดกลางทาง ต้องทำอย่างไร?

รัน ./obsutil cp -recover= ตามด้วย task ID ของงาน หรือรันคำสั่งเดิมซ้ำพร้อม -u ไฟล์ที่ใหญ่กว่า threshold ของ multipart (ค่าตั้งต้น 50 MB) จะส่งต่อจาก part ที่ค้าง ส่วนไฟล์ที่เล็กกว่าจะถูกส่งใหม่ทั้งไฟล์