Tag Archive cp

Byphunsanit

linux: สำรองข้อมูลจากไดรฟ์ Windows

จาก Linux: อ่าน เขียน แก้ ลบ drive windows เพื่อที่จะสามารถสำรองข้อมูลจากไดรฟ์ Windows (/dev/sdb2) ไปยัง USB โดยข้ามไฟล์ที่เสียหรืออ่านไม่ได้ และข้ามโฟลเดอร์ระบบของ Windows (เช่น Windows, Program Files) จะใช้ rsync copy ไฟล์ออกมาเพราะคำสั่ง rsync ดีกว่า cp เพราะสามารถจัดการเรื่องการข้ามไฟล์ (Ignore) และข้ามข้อผิดพลาด (Ignore errors) ได้ดีกว่ามากครับ

  1. สร้างจุดเชื่อมต่อ (Mount) หากยังไม่ได้ทำ (ถ้ามาจากหน้าที่แล้ว คือได้ทำตรงนี้ไว้แล้ว)
    sudo mkdir -p /mnt/windows
    sudo mkdir -p /mnt/usb_backup

    # Mount ไดรฟ์ Windows (สมมติเป็น /dev/sdb2)
    sudo mount -t ntfs-3g -o ro /dev/sdb2 /mnt/windows
    # Mount ตัว USB ปลายทางของคุณ (ตรวจสอบชื่อไดรฟ์ด้วย lsblk สมมติเป็น /dev/sdc1)
    sudo mount /dev/sdc1 /mnt/usb_backup
  2. ช้คำสั่ง rsync เพื่อคัดลอกข้อมูล: รันคำสั่งนี้เพื่อคัดลอกข้อมูลทั้งหมดจาก Windows ไปยังโฟลเดอร์
sudo rsync -avP --ignore-errors \
--exclude='Windows/' \
--exclude='Program Files/' \
--exclude='Program Files (x86)/' \
--exclude='System Volume Information/' \
--exclude='$Recycle.Bin/' \
--exclude='Users/*/AppData/Local/Temp/' \
--exclude='Users/*/AppData/Local/Microsoft/Windows/INetCache/' \
--log-file=/mnt/usb_backup/backup_log.txt \
/mnt/windows/ /mnt/usb_backup/c_backup/

อธิบายพารามิเตอร์ที่ใช้:

  • -avP:
    • a (archive) เก็บค่าดั้งเดิมของไฟล์ (สิทธิ์, เวลา)
    • v (verbose) แสดงชื่อไฟล์ที่กำลังก๊อปปี้
    • P แสดงแถบความคืบหน้า (Progress bar)
  • --ignore-errors: ข้ามไฟล์ที่มีปัญหาหรืออ่านไม่ได้ และทำงานต่อจนจบ
  • --exclude='...': ระบุโฟลเดอร์ที่ไม่ต้องการก๊อปปี้ (เช่น โฟลเดอร์ระบบ Windows)
  • --exclude='Users/*/AppData/Local/Temp/': ใช้เครื่องหมาย * (Wildcard) เพื่อสั่งให้ข้ามโฟลเดอร์ Temp ของ ทุก User ในเครื่อง Windows นั้นๆ
  • --exclude='Users/*/AppData/Local/Microsoft/Windows/INetCache/': ข้ามไฟล์ Cache ของ Browser ซึ่งมักจะมีไฟล์เล็กๆ จำนวนมหาศาลที่ทำให้การก๊อปปี้ช้า
  • --log-file=/mnt/usb_backup/backup_log.txt:
    • คำสั่งนี้จะสร้างไฟล์ชื่อ backup_log.txt ไว้ใน USB ของคุณ
    • ข้างในจะบอกรายละเอียดว่าไฟล์ไหนก๊อปปี้สำเร็จ และไฟล์ไหนที่เกิด Error (เช่นขึ้นว่า read error หรือ permission denied)
    • เนื่องจากเราใส่ --ignore-errors ไว้ โปรแกรมจะทำงานจนจบโดยไม่หยุดชะงัก แต่การมี Log จะช่วยให้คุณ “สบายใจ” ได้ว่าไฟล์งานสำคัญของคุณไม่ได้อยู่ในกลุ่มไฟล์ที่เกิด Error เหล่านั้นครับ
  • /mnt/windows/: ต้นทาง (ใส่ / ปิดท้ายหมายถึงเอาข้อมูลข้างในทั้งหมด)
  • /mnt/usb_backup/c_backup/: ปลายทางที่เป็นโฟลเดอร์ c_backup บน USB ของคุณ

วิธีการตรวจสอบ Log หลังก๊อปปี้เสร็จ

  • หลังจากรันเสร็จแล้ว คุณสามารถใช้คำสั่งนี้เพื่อกรองดูเฉพาะรายการที่ “เกิดปัญหา” (Error) ได้ทันที:
    grep "error" /mnt/usb_backup/backup_log.txt