3 คะแนน โดย GN⁺ 2024-01-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Rclone เป็นเครื่องมือสำหรับจัดการไฟล์บนคลาวด์ผ่านบรรทัดคำสั่ง โดยไม่ต้องพึ่งพาเว็บอินเทอร์เฟซ และรองรับผลิตภัณฑ์สตอเรจและโปรโตคอลการรับส่งข้อมูลมาตรฐาน มากกว่า 70 รายการ
  • รองรับงานสไตล์ Unix ที่คุ้นเคยสำหรับคลาวด์ เช่น rsync, cp, mv, mount พร้อมรองรับเชลล์ไปป์ไลน์, --dry-run, สคริปต์ และการทำงานอัตโนมัติผ่าน API
  • ระหว่างการถ่ายโอนจะคง timestamp และ checksum ไว้ และสามารถเริ่มทำงานต่อจากจุดที่ถ่ายโอนสำเร็จล่าสุดได้ แม้อยู่ในสภาพแวดล้อมที่มีการจำกัดแบนด์วิดท์ การเชื่อมต่อไม่เสถียร หรือมีโควตา
  • สามารถ เมานต์ ระบบไฟล์แบบโลคัล คลาวด์ และเสมือน ให้ใช้งานเสมือนดิสก์บน Windows, macOS, Linux, FreeBSD และเปิดให้บริการผ่าน SFTP, HTTP, WebDAV, FTP, DLNA ได้
  • รองรับทั้งการสำรองข้อมูล กู้คืน ย้ายข้อมูลข้ามคลาวด์ รวมถึงการเข้ารหัส บีบอัด แบ่งชิ้น แฮช และรวมสตอเรจไว้ในเครื่องมือเดียว จึงเหมาะเมื่อใช้งานหลายบริการสตอเรจร่วมกัน

เครื่องมือบรรทัดคำสั่งสำหรับจัดการไฟล์บนคลาวด์

  • Rclone เป็น โปรแกรมบรรทัดคำสั่ง สำหรับจัดการไฟล์ในคลาวด์สตอเรจ
  • มักถูกใช้เป็นเครื่องมือความสามารถสูงที่สามารถใช้แทนเว็บอินเทอร์เฟซสตอเรจที่ผู้ให้บริการคลาวด์มีให้
  • รองรับมากกว่า 70 รายการ ครอบคลุมทั้ง S3 object store, บริการจัดเก็บไฟล์สำหรับองค์กรและผู้บริโภค และโปรโตคอลการรับส่งข้อมูลมาตรฐาน
  • ผู้ใช้เรียก Rclone ว่าเป็น “มีดพกสวิสแห่งคลาวด์สตอเรจ” และ “เทคโนโลยีที่แทบแยกไม่ออกจากเวทมนตร์”

คำสั่งสไตล์ Unix และระบบอัตโนมัติ

  • Rclone มีงานบนคลาวด์ที่สอดคล้องกับคำสั่ง Unix ที่คุ้นเคย
    • rsync
    • cp
    • mv
    • mount
    • ls
    • ncdu
    • tree
    • rm
    • cat
  • ไวยากรณ์รองรับเชลล์ไปป์ไลน์ และสามารถใช้ --dry-run เพื่อตรวจสอบงานก่อนมีการเปลี่ยนแปลงจริง
  • ใช้งานได้ทั้งจากบรรทัดคำสั่ง สคริปต์ และ API
  • นักพัฒนาภายนอกนำบรรทัดคำสั่งหรือ API ของ Rclone ไปใช้สร้างโซลูชันด้านการสำรองข้อมูล การกู้คืน GUI และกระบวนการทางธุรกิจ

การปกป้องข้อมูลและความเสถียรของการถ่ายโอน

  • ระหว่างการถ่ายโอนจะคง timestamp และตรวจสอบ checksum อยู่เสมอ
  • แม้อยู่ในสภาพแวดล้อมที่มีแบนด์วิดท์จำกัด การเชื่อมต่อขาด ๆ หาย ๆ หรือมีโควตา ก็สามารถเริ่มใหม่ต่อจากไฟล์ที่ถ่ายโอนสำเร็จล่าสุดได้
  • สามารถตรวจสอบความถูกต้องสมบูรณ์ของไฟล์ได้ด้วยคำสั่ง check
  • หากเป็นไปได้ จะใช้ การถ่ายโอนฝั่งเซิร์ฟเวอร์ เพื่อลดการใช้แบนด์วิดท์ฝั่งโลคัล และถ่ายโอนระหว่างผู้ให้บริการได้โดยไม่ต้องผ่านดิสก์โลคัล
  • ความสามารถด้านการถ่ายโอนประกอบด้วย
    • ตรวจสอบความถูกต้องของไฟล์ด้วยแฮช MD5, SHA1
    • คงค่า timestamp ของไฟล์
    • งานที่สามารถเริ่มใหม่ได้ทุกเมื่อ
    • การถ่ายโอนผ่านเครือข่ายระหว่างผู้ให้บริการคลาวด์ต่างราย
    • การดาวน์โหลดแบบมัลติเธรดลงดิสก์โลคัล

สถานการณ์การสำรองข้อมูล กู้คืน และย้ายระบบ

  • สำรองข้อมูลไฟล์ไปยังคลาวด์สตอเรจ และเข้ารหัสได้หากต้องการ
  • กู้คืนไฟล์จากคลาวด์สตอเรจ และถอดรหัสได้หากต้องการ
  • สามารถมิเรอร์ข้อมูลบนคลาวด์ไปยังบริการคลาวด์อื่นหรือโลคัลได้
  • สามารถย้ายข้อมูลขึ้นคลาวด์ หรือย้ายระหว่างผู้ให้บริการคลาวด์สตอเรจได้
  • เมานต์คลาวด์สตอเรจหลายแบบที่เข้ารหัส มีแคช หรือมีความต่างกัน ให้ใช้งานเหมือนดิสก์
  • วิเคราะห์และสรุปข้อมูลในคลาวด์สตอเรจด้วย lsf, ljson, size, ncdu
  • ใช้ Union เพื่อทำให้ระบบไฟล์แบบโลคัลหรือคลาวด์หลายตัวแสดงผลเหมือนเป็นตัวเดียวได้

งานกับไฟล์และการให้บริการ

  • Copy ใช้คัดลอกไฟล์ใหม่หรือไฟล์ที่เปลี่ยนแปลงแล้วไปยังคลาวด์สตอเรจ
  • Sync ใช้ทำให้ไดเรกทอรีเหมือนกันแบบทิศทางเดียว
  • Bisync ใช้ซิงก์สองไดเรกทอรีแบบสองทิศทาง
  • Move ใช้ย้ายไฟล์ไปยังคลาวด์สตอเรจ พร้อมลบไฟล์โลคัลหลังตรวจสอบแล้ว
  • Check ใช้ตรวจสอบแฮช รวมถึงไฟล์ที่ขาดหายหรือถูกเพิ่มเข้ามา
  • Mount ใช้เมานต์คลาวด์สตอเรจเป็น network disk
  • Serve ใช้เปิดให้บริการไฟล์โลคัลหรือรีโมตผ่าน HTTP, WebDAV, FTP, SFTP, DLNA
  • GUI แบบเว็บ เป็นฟีเจอร์ทดลอง

การเมานต์และ virtual backend

  • เมานต์ระบบไฟล์แบบโลคัล คลาวด์ และเสมือน ให้ใช้งานเป็นดิสก์ได้บน Windows, macOS, Linux, FreeBSD
  • ระบบไฟล์เดียวกันนี้ยังสามารถเปิดให้บริการผ่าน SFTP, HTTP, WebDAV, FTP, DLNA ได้
  • virtual backend ใช้ครอบระบบไฟล์โลคัลหรือคลาวด์เพื่อเพิ่มความสามารถเพิ่มเติม
    • Crypt: เข้ารหัสไฟล์
    • Compress: บีบอัดไฟล์
    • Chunker: แบ่งไฟล์ขนาดใหญ่
    • Hasher: แฮชไฟล์
    • Union: รวมรีโมตสตอเรจหลายตัว
    • Alias: เปลี่ยนชื่อรีโมตสตอเรจเดิม
    • Archive: อ่านไฟล์ archive
    • Cache: แคชรีโมตสตอเรจ, Deprecated
    • Combine: รวมรีโมตสตอเรจหลายตัวเป็นโครงสร้างไดเรกทอรีทรี

ผู้ให้บริการที่รองรับและการติดตั้ง

  • ผู้ให้บริการที่รองรับ ได้แก่ Amazon S3, Backblaze B2, Box, Dropbox, Google Cloud Storage, Google Drive, Microsoft Azure Blob Storage, Microsoft OneDrive, Proton Drive, SFTP, SMB/CIFS, WebDAV และระบบไฟล์แบบโลคัล เป็นต้น
  • ผู้ให้บริการอื่นที่ใช้โปรโตคอลมาตรฐานอย่าง WebDAV หรือ S3 ก็มักใช้งานได้ทันทีเช่นกัน
  • Rclone เป็นซอฟต์แวร์ โอเพนซอร์ส ที่พัฒนาจนมีความสมบูรณ์ ได้แรงบันดาลใจจาก rsync และเขียนด้วย Go
  • Rclone ถูกรวมอยู่ในคลังแพ็กเกจทางการของ Ubuntu, Debian, Fedora, Brew และ Chocolatey
  • แนะนำให้ดาวน์โหลดเวอร์ชันล่าสุดจาก rclone.org
  • ลิงก์ที่เกี่ยวข้อง

1 ความคิดเห็น

 
GN⁺ 2024-01-28
ความคิดเห็นบน Hacker News
  • ชอบ rclone มาก จำได้ว่าหน้าโดเนตสมัยก่อนมีข้อความประมาณว่า “rclone เป็นโปรเจกต์ที่ทำด้วยใจเลยไม่ต้องการเงิน แต่ถ้าช่วยสมทบให้ผมซื้อดอกไม้ให้ภรรยาได้ก็จะขอบคุณมาก”
    รู้สึกว่าเขาเป็นคนเท่มาก และดีใจที่ตอนนี้สามารถทำ rclone แบบเต็มเวลา ได้แล้ว หวังว่ายังคงเป็นงานที่คุ้มค่าและมีความหมาย
    ไปเจอหน้าเว็บสมัยนั้นบน archive.org แล้ว อบอุ่นกว่าที่จำไว้เสียอีก:
    “Rclone is a pure open source for love-not-money project. However I’ve had requests for a donation page and coding rclone does take me away from something else I love - my wonderful wife.”
    “So if you would like to send a donation, I will use it to buy flowers (and other pretty things) for her which will make her very happy.”
    https://web.archive.org/web/20180624105005/https://rclone.or...

    • เคยเจอ Nick ตัวจริง เป็นคนดีมากจริงๆ
  • rclone ยังสามารถ เมานต์คลาวด์สตอเรจให้เหมือนดิสก์โลคัล ได้ด้วย จึงเหมาะมากโดยเฉพาะเวลาใช้กับ Kubernetes
    ถ้าใช้เหมือนไดรฟ์ในโฟลเดอร์เดียวกันที่มีไฟล์เยอะๆ ความเร็วอ่าน/เขียนอาจไม่ได้เร็วมาก แต่เป็นวิธีที่รวดเร็วและง่ายในการนำคลาวด์สตอเรจมาใช้ในโปรเจกต์
    ยังทำ การเข้ารหัสแบบ end-to-end แยกตามตำแหน่งได้ด้วย เช่น ไฟล์ทั้งหมดที่ใส่ในไดรฟ์ที่เมานต์ไว้จะถูกเขียนลงในโฟลเดอร์ /foo ของ Dropbox ในสภาพที่เข้ารหัสแล้ว ซึ่งดีตรงที่ผู้ให้บริการอย่าง Dropbox หรือ S3 ยังไม่รองรับการเข้ารหัสแบบ end-to-end แบบเนทีฟ
    โดยรวมแล้ว rclone เป็นเครื่องมือที่น่ามีติดตัวไว้ และช่วยแก้ use case ได้เยอะมาก

    • สร้าง เซิร์ฟเวอร์ FTP ชั่วคราว ที่ให้บริการสตอเรจโลคัลหรือคลาวด์ได้ง่ายมาก
      เช่น Pi4 ของผมใช้ rclone FTP server เปิด Dropbox ให้เข้าถึงได้ในเครือข่ายภายใน และใช้ FTP server แยกต่างหากให้พรินเตอร์เครือข่ายบันทึกไฟล์สแกน บนเครื่องเดียวกันยังรันการแบ็กอัปอัตโนมัติของคลาวด์สตอเรจของครอบครัวและเพื่อนสนิทด้วย rclone ด้วย ในเครือข่ายภายในของผม rclone แทบจะเป็นผู้กอบกู้เลย
    • ใช้กับงานแบบนี้ได้ดีมาก แต่ต้องตรวจให้แน่ใจว่าเครือข่ายเสถียร
      ผมเมานต์ Google Drive ใช้ทั้งบนเดสก์ท็อปและแล็ปท็อป ปัญหาบนแล็ปท็อปคือระบบปฏิบัติการมองไดรฟ์เป็นโลคัล และ rclone ไม่ timeout เมื่อเกิด network error ถ้าแอปพลิเคชันพยายามอ่านหรือเขียนไดรฟ์ตอนที่ไม่ได้เชื่อมต่อ Wi-Fi มันจะค้างไปตลอดกาล เช่น ถ้าเปิดหน้าต่าง Thunar ค้างไว้ใน XFCE UI ส่วนใหญ่ก็อาจถูกล็อกไปด้วย
    • แค่คำว่า “เมานต์คลาวด์สตอเรจบนดิสก์โลคัล” ยังไม่ค่อยเห็นภาพทันที เลยสงสัยว่าใช้ FUSE, 9p, ไดรเวอร์ หรือกลไกอื่นในการแปลง system call ของไฟล์เป็น API call
      เช็กดูแล้วเป็น FUSE
    • อยากรู้ว่ามีใครเคยใช้แทน แอปซิงก์สองทาง อย่าง Insync สำหรับ Google Drive ได้สำเร็จไหม
      Insync ก็ไม่ค่อยดี Google Drive ก็ไม่ค่อยดี แต่ถ้าเป็นงานที่ต้องพึ่งพาทุกวัน ผมรู้สึกว่าจำเป็นต้องมีสำเนาไฟล์ในเครื่องและการซิงก์ระหว่างเครื่องกับเซิร์ฟเวอร์แบบทันที โดยเฉพาะตอนการเชื่อมต่ออินเทอร์เน็ตไม่เสถียร
    • สงสัยว่าเวลาพูดถึงการเข้ารหัสแบบ “e2e” หมายถึง การเข้ารหัสฝั่งไคลเอนต์ หรือเปล่า S3 รองรับทั้งการเข้ารหัสฝั่งไคลเอนต์และฝั่งเซิร์ฟเวอร์
      แน่นอนว่าโดยทั่วไปฝั่งบริการแทบไม่ต้องทำอะไรเป็นพิเศษเพื่อรองรับการเข้ารหัสฝั่งไคลเอนต์อยู่แล้ว
      สำหรับการเข้ารหัสฝั่งไคลเอนต์ยังมีไคลเอนต์ S3 แบบเข้ารหัสแยกต่างหากด้วย: https://docs.aws.amazon.com/amazon-s3-encryption-client/late...
  • วิธีใช้ rclone ที่ผมชอบคือ rclone ncdu: https://rclone.org/commands/rclone_ncdu/
    ผู้ให้บริการพื้นที่คลาวด์ส่วนใหญ่ไม่แสดงว่าแต่ละโฟลเดอร์และโฟลเดอร์ย่อยใช้พื้นที่จริงเท่าไร ซึ่ง rclone ncdu เข้ามาตอบโจทย์ตรงนี้พอดี

    • ชอบ ncdu อยู่แล้ว และการผสานกับ rclone ก็ใช้งานได้จริงมาก
  • ใช้ rclone ทุกวัน บางกรณีก็ใช้แทน sshfs ไปแล้ว
    ผมดันแชร์ $Archive จากโฮมเซิร์ฟเวอร์ไปยัง rsync.net และดึงรูปจากบัญชี Google ของผม ภรรยา แม่ พ่อ และลูกๆ เข้ามาไว้ใน $Archive รวมถึงบัญชีคลาวด์สำหรับ $WORK ที่ต่างกัน 3 บัญชีก็รวบรวมเข้า $Archive แล้วส่งต่อไป rsync.net
    นี่เป็น เครื่องมือระดับสุดยอด จริงๆ

    • ใช้ sshfs มาหลายปี จนรู้ว่า rclone สามารถเมานต์รีโมตสตอเรจเป็นไฟล์ซิสเต็มได้ หลังจากนั้นก็ใช้ได้ดีมาตลอด
      https://rclone.org/commands/rclone_mount/
      ปัจจุบัน SSHFS ไม่มีคนที่คอนทริบิวต์อย่างแข็งขันและสม่ำเสมอ และมี issue ที่ทราบอยู่หลายรายการ
      https://github.com/libfuse/sshfs#development-status
    • ถ้าดึงมาจาก Google Photos ผมคิดว่าวิธีเดียวที่จะได้ คุณภาพต้นฉบับ คือใช้ Takeout หรือเปล่า
    • rsync.net ยังมีแพ็กเกจที่ถูกลงเล็กน้อย หากไม่ต้องการฟีเจอร์และซัพพอร์ตทั้งหมด แต่ต้องการแค่ Borg archive: https://www.rsync.net/products/borg.html
  • สำหรับการสำรองข้อมูล Restic ก็น่าลองดูเช่นกัน rclone กับ Restic ใช้ร่วมกันได้ดีมาก
    https://www.bobek.cz/blog/2020/restic-rclone/

    • ข้อเสียหลักของ Restic ล้วน ๆ คือโดยปกติแล้วคุณมักต้องเขียนเชลล์สคริปต์เองเพื่อจัดการการตั้งค่า ตัว Restic เองไม่มีฟังก์ชันแบบนั้น
      โชคดีที่มี https://github.com/creativeprojects/resticprofile ที่ช่วยแก้ปัญหานี้ได้
    • ในฐานะมาตรการป้องกันเพิ่มเติม การทำให้แบ็กอัปเป็นแบบ append-only ก็น่าพิจารณา: https://ruderich.org/simon/notes/append-only-backups-with-re...
    • ทีม Restic ปฏิเสธ แบ็กอัปที่ไม่เข้ารหัส ด้วยเหตุผลว่า “เพื่อความปลอดภัย”
      ผมไม่ชอบแนวทางที่ใครบางคนเหมารวมว่าการตัดสินใจของตัวเองดีที่สุดในโลกในทุกสถานการณ์ และคนอื่นผิดหมด
      ผมรู้ว่าผมกำลังทำอะไรอยู่ และมีเหตุผลที่สมเหตุสมผลมากที่ไม่อยากเข้ารหัสแบ็กอัป
      Restic สามารถสำรองข้อมูลโดยค่าเริ่มต้นได้ แต่อนุญาตสวิตช์อย่าง --do-not-encrypt ก็ได้
      ความเย่อหยิ่งของนักพัฒนาน่าทึ่งมาก และเพราะแบบนั้นผมจะไม่ใช้ Restic น่าเสียดายยิ่งกว่าเพราะมันเป็นโซลูชันสำรองข้อมูลที่ดีมาก
      ใช้ Borg น่าจะดีกว่า
    • ใช้ทั้งสองตัว
      หลายเครื่องสำรองข้อมูลด้วย Restic ไปยังเซิร์ฟเวอร์ภายในทุกชั่วโมง และใช้ rclone ซิงก์แบ็กอัปนั้นไปยัง S3 ทุกวัน
      วิธีนี้ช่วยลดจำนวนงานอ่าน/เขียน ทำให้กู้คืนได้เร็วขึ้น และจำกัดเครื่องที่มีสิทธิ์เข้าถึง S3 ให้เหลือเครื่องเดียวได้
    • duplicacy ก็น่าดูเช่นกัน: https://twitter.com/ArtemR/status/1159392251992145920
      https://github.com/gilbertchen/duplicacy
  • Rclone รองรับ storage backend จำนวนมาก และยังมี crypt backend ที่สามารถเข้ารหัส storage backend ใด ๆ ก็ได้
    https://rclone.org/overview/
    https://rclone.org/crypt/

  • ชอบตรงที่หน้าเว็บประกาศอย่างมั่นใจว่าใช้ การตรวจสอบ checksum เสมอ
    เมื่อก่อนเคยตกใจที่เห็นว่าเครื่องมือจำนวนมากข้ามขั้นตอนนี้ไป แน่นอนว่ามันทำให้ช้าลง แต่ถ้าคุณกำลังซิงก์ระหว่าง cloud storage ก็มีโอกาสสูงมากที่คุณจะอยากตรวจสอบ checksum จริง ๆ

    • คำรับรองด้านบนสุดที่ว่า “แยกไม่ออกจากเวทมนตร์” ดูอวดดีไปหน่อย แต่ตอนนี้กำลังตรวจดูว่าคำกล่าวอ้างพิเศษแบบนี้มีหลักฐานพิเศษรองรับหรือไม่
  • มีคนดูไคลเอนต์โอเพนซอร์สแล้ว reverse engineer Proton Drive API เพื่อทำปลั๊กอิน Rclone
    ตอนนี้เป็นวิธีเดียวที่จะใช้ Proton Drive บน Linux

    • ไม่รู้มาก่อนว่า rclone รองรับ Proton Drive ด้วย ผมสมัครแผน Visionary ไว้ตอนที่เปิดให้สมัครอีกครั้งช่วงสั้น ๆ ตอนนี้น่าจะใช้พื้นที่เก็บข้อมูลนั้นได้แล้ว
  • Rclone เป็นเครื่องมือที่เหมือนมีเวทมนตร์ และผมใช้กับงานหลากหลายมากมาย
    ครั้งล่าสุดที่ตรวจดู มันไม่ได้ใช้ AWS SDK หรือไม่ก็รองรับ Go version แบบจำกัด จึงใช้การตั้งค่าทั้งหมดใน .aws/config ไม่ได้
    แต่ก็พอเข้าใจได้ในระดับหนึ่งว่าเครื่องมืออเนกประสงค์แบบนี้จะไม่รองรับฟีเจอร์ของทุก backend
    ในเอกสารมีคำเตือนมากมายเกี่ยวกับฟีเจอร์ที่ไม่ได้บำรุงรักษาแล้วและฟีเจอร์ทดลอง เช่น caching ตัวคำเตือนเองถือว่ายุติธรรม แต่ไม่ได้บอกข้อจำกัดที่เฉพาะเจาะจงอย่างชัดเจน

  • ชอบ Rclone จริง ๆ เป็น เครื่องมือที่มีคุณค่า เมื่อคนที่ไม่คุ้นกับเทคโนโลยีอัปโหลดข้อมูลจำนวนมากไว้บนคลาวด์สำหรับผู้บริโภค/ธุรกิจ แล้วต้องดึงข้อมูลนั้นกลับมายังเซิร์ฟเวอร์เพื่อประมวลผลต่อไม่ทางใดก็ทางหนึ่ง
    เมื่อมีข้อมูลจำนวนมากและอินเทอร์เน็ตบ้านไม่ดี มันก็ยอดเยี่ยมสำหรับการโอนตรงระหว่างคลาวด์ด้วยเช่นกัน วาง rclone ไว้บนเซิร์ฟเวอร์ที่เครือข่ายดีแล้วรันใต้ tmux งานก็จะเดินต่อไปแม้คอมพิวเตอร์ของผมไม่ได้เปิดอยู่

    • ไม่จำเป็นต้องใช้ tmux เสมอไป
      nohup /usr/bin/rclone ... &>/dev/null &
      รันแบบนี้แล้วล็อกเอาต์ออกไปก็ยังทำงานต่อ