- En ลินุกซ์ มีเครื่องมือแบบคอนโซล (fdupes, rdfind, fclones, yadf) และเครื่องมือแบบกราฟิก (FSlint, dupeGuru, Czkawka) สำหรับค้นหาไฟล์ที่ซ้ำกันโดยพิจารณาจากเนื้อหา
- โปรแกรมยูทิลิตี้สมัยใหม่ เช่น fclones และ yadf อนุญาตให้กรองตามขนาด รูปแบบ และจำนวนสำเนา รวมถึงมีโหมดจำลองเพื่อป้องกันการลบโดยไม่ตั้งใจ
- แอปพลิเคชันแบบกราฟิกช่วยให้ตรวจสอบผลลัพธ์และเลือกสิ่งที่ต้องการลบ ย้าย หรือเชื่อมโยงได้อย่างง่ายดายโดยไม่ต้องจำตัวเลือกต่างๆ สถานีปลายทาง.
- จำเป็นอย่างยิ่งที่จะต้องทดสอบก่อนบนเส้นทางทดสอบ ใช้โหมดจำลองการทำงาน และสำรองข้อมูลก่อนที่จะลบไฟล์ซ้ำจำนวนมาก
หากคุณใช้ Linux เป็นประจำทุกวัน ไม่ช้าก็เร็วคุณจะต้องเจอกับคำเตือนทั่วไปนี้ พื้นที่ดิสก์ไม่เพียงพอ ในขณะที่คุณยืนยันว่าแทบไม่ได้บันทึกอะไรเลยการสำรองข้อมูล ดาวน์โหลด รูปภาพที่ซ้ำกัน ไฟล์ภาพ RAW ขนาดใหญ่ วิดีโอ เอกสารที่ทำซ้ำนับพันครั้ง...ทั้งหมดนี้รวมกันแล้วจะทำให้ระบบเริ่มมีพื้นที่ไม่เพียงพอ
ข่าวดีก็คือ ใน GNU/Linux เรามีเครื่องมืออำนวยความสะดวกมากมาย ทั้งในด้านการใช้งานและด้านอื่นๆ บรรทัดของ คำสั่ง รวมถึงการใช้ส่วนต่อประสานแบบกราฟิก เพื่อตรวจจับและลบไฟล์ที่ซ้ำกัน ค่อนข้างปลอดภัยทีเดียว แต่ข่าวร้ายก็คือ ถ้าคุณไม่รู้จริงๆ ว่ากำลังทำอะไรอยู่ คุณอาจลบข้อมูลสำคัญไปได้ นั่นเป็นเหตุผลที่เราจะมาดูเครื่องมือแบบดั้งเดิมและแบบสมัยใหม่ทั้งหมด วิธีการใช้งาน และข้อควรระวังที่คุณควรปฏิบัติตาม
เหตุใดการค้นหาไฟล์ซ้ำใน Linux จึงคุ้มค่า
ปัจจุบันฮาร์ดไดรฟ์มีราคาไม่แพงนัก แต่ปริมาณข้อมูลที่เราจัดเก็บกลับเพิ่มขึ้นเรื่อยๆ และข้อมูลส่วนใหญ่ก็เป็น... ไฟล์ขนาดใหญ่มาก เช่น ภาพถ่าย RAW วิดีโอความละเอียดสูง และไฟล์สำรองข้อมูลทั้งหมดหากคุณมีไฟล์เดียวกันหลายสำเนาที่กระจายอยู่ในโฟลเดอร์ต่างๆ กัน พื้นที่ที่สูญเปล่าอาจมีจำนวนมหาศาล
ในสภาพแวดล้อมที่มีการใช้งานร่วมกัน เช่น เซิร์ฟเวอร์ไฟล์ในโรงเรียนหรือบริษัท เป็นเรื่องปกติมากที่ผู้ใช้แต่ละคนจะสร้างสำเนาเอกสารที่ใช้ร่วมกันของตนเอง แทนที่จะใช้โปรแกรมคัดลอกไฟล์ ลิงก์เชิงสัญลักษณ์หรือลิงก์ถาวรที่ชี้ไปยังไฟล์ต้นฉบับผลที่ได้คือคลังสินค้าที่เต็มไปด้วยสินค้าซ้ำซ้อน และระบบก็ต้องการพื้นที่อย่างเร่งด่วน
นอกจากจะเปลืองพื้นที่แล้ว ไฟล์ซ้ำยังส่งผลต่อการจัดการอีกด้วย เราอาจพบไฟล์เวอร์ชันเดียวกันหลายเวอร์ชันในหลายตำแหน่งโดยไม่รู้ว่าเกิดอะไรขึ้น อันไหนคือต้นฉบับ อันไหนคือสำเนาที่ดี และอันไหนที่คุณควรลบ?ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องมีเครื่องมือที่ตรวจสอบเนื้อหาของไฟล์ ไม่ใช่แค่ชื่อไฟล์เท่านั้น
แนวทางการตรวจจับข้อมูลซ้ำ: ผ่านทางคอนโซลและผ่านทางส่วนติดต่อผู้ใช้แบบกราฟิก
ใน Linux เราสามารถแก้ปัญหาได้ด้วยยูทิลิตี้เทอร์มินัลหรือแอปพลิเคชันแบบกราฟิก แอปพลิเคชันคอนโซลเช่น fdupes, rdfind, fclones หรือ yadf สามารถผสานรวมเข้ากับสคริปต์และโฟลว์ขั้นสูงได้อย่างลงตัวและโดยทั่วไปแล้วจะรวดเร็วและยืดหยุ่นกว่าในการกรองผลลัพธ์
ในทางกลับกัน หากคุณต้องการตรวจสอบรูปถ่ายของคุณบนฮาร์ดไดรฟ์ภายนอกขนาด 500GB อย่างใจเย็นและตัดสินใจว่าจะลบรูปใดโดยไม่ต้องกังวล คุณอาจพบว่าการใช้งานสะดวกกว่ามาก อินเทอร์เฟซแบบกราฟิกเช่น FSlint, dupeGuru, Czkawka, Krokiet หรือ fclones-guiโดยผลลัพธ์จะแสดงในรูปแบบรายการ พร้อมช่องให้เลือกและยกเลิกการเลือก
fdupes: เครื่องมือคลาสสิกสำหรับค้นหาไฟล์ซ้ำจากเทอร์มินัล
fdupes เป็นหนึ่งในเครื่องมือที่เก่าแก่และใช้งานกันมากที่สุดสำหรับการค้นหาไฟล์ซ้ำใน Linux จากบรรทัดคำสั่งโปรแกรมนี้เขียนด้วยภาษาซี เป็นซอฟต์แวร์ฟรี และคุณจะพบได้ในคลังซอฟต์แวร์ของแทบทุกดิสทริบิวชัน
วิธีการของพวกเขานั้นค่อนข้างน่าเชื่อถือ: ขั้นแรก พวกเขาเปรียบเทียบ โปรแกรมจะวัดขนาดของไฟล์ จากนั้นคำนวณลายเซ็น MD5 บางส่วน ต่อมาคำนวณลายเซ็น MD5 ที่สมบูรณ์ และสุดท้ายทำการเปรียบเทียบแบบไบต์ต่อไบต์ เพื่อให้แน่ใจว่าไฟล์ทั้งสองเหมือนกันทุกประการ ซึ่งจะช่วยป้องกันผลลัพธ์ที่ผิดพลาดจากการพิจารณาเฉพาะค่าแฮชหรือชื่อไฟล์เท่านั้น
บน Debian, Ubuntu และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Debian คุณสามารถติดตั้งได้โดยใช้คำสั่ง:
sudo apt-get install fdupes
ในระบบปฏิบัติการแบบ Red Hat และระบบปฏิบัติการที่พัฒนาต่อยอดจากแบบดังกล่าว คุณจะใช้:
sudo yum install fdupes
Fedora (dnf) หรือ Arch Linux ก็มีแพ็กเกจให้ใช้งานเช่นกัน:
sudo dnf install fdupes
sudo pacman -S fdupes
เมื่อติดตั้งเสร็จแล้ว การใช้งานพื้นฐานสำหรับการแสดงรายการไฟล์ที่ซ้ำกันภายในไดเร็กทอรี เช่น โฟลเดอร์ดาวน์โหลดของคุณ ก็ง่ายมาก ดังนี้:
fdupes ~/Descargas
ถ้าคุณต้องการผลการวิเคราะห์ เรียกใช้แบบเรียกซ้ำและรวมไดเร็กทอรีย่อยทั้งหมดเพิ่มตัวเลือก -r:
fdupes -r ~/Descargas
ไม่ควรสนใจ ไฟล์ว่างเปล่าที่ทำให้รายการรกเปล่า ๆ, คุณสามารถใช้ได้:
fdupes -n <ruta del directorio>
เมื่อคุณต้องการทราบว่าระบบของคุณสูญเสียพื้นที่ไปกับไฟล์ซ้ำมากแค่ไหน คุณสามารถใช้ตัวเลือก -S ได้ ซึ่ง แสดงขนาดของไฟล์ที่ซ้ำกัน:
fdupes -S <ruta del directorio>
และหากคุณต้องการรายงานเพื่อนำไปประมวลผลต่อด้วยเครื่องมืออื่นๆ คุณสามารถเปลี่ยนเส้นทางการส่งออกไปยังไฟล์ข้อความได้เสมอ:
fdupes <ruta del directorio> > output.txt
ลบไฟล์ซ้ำด้วยโปรแกรม fdupes (อย่างระมัดระวัง)
fdupes ไม่เพียงแต่ค้นหาไฟล์ที่ถูกคัดลอกเท่านั้น แต่ยังช่วยคุณลบไฟล์เหล่านั้นได้อีกด้วย ด้วยตัวเลือก -d โปรแกรมจะทำงานโดยอัตโนมัติ ระบบจะถามคุณทีละกลุ่มว่าต้องการเก็บไฟล์ใดไว้บ้าง และจะกำจัดส่วนที่เหลือ:
fdupes -d <ruta del directorio>
มีความเป็นไปได้ที่จะทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติมากยิ่งขึ้นด้วยพารามิเตอร์ต่างๆ เช่น –delete, –noprompt หรือ -N จะบังคับลบไฟล์ที่ซ้ำกัน โดยเก็บเฉพาะไฟล์แรกที่พบเท่านั้นแต่ในทางปฏิบัติ การใช้งานโดยไม่พิจารณาให้รอบคอบนั้นมีความเสี่ยงสูงมาก
หากคุณต้องการความปลอดภัยสูงสุด วิธีที่แนะนำอย่างยิ่งคือการใช้ fdupes เฉพาะสำหรับ สร้างรายการเส้นทางไฟล์ที่ซ้ำกัน แล้วย้ายไฟล์เหล่านั้นไปยังตำแหน่งอื่นโดยใช้คำสั่ง mvวิธีนี้จะช่วยให้คุณตรวจสอบ "การกักกัน" นั้นก่อนที่จะทำการลบขั้นสุดท้ายได้:
fdupes -r <ruta> > duplicados.log
นอกจากนี้ ควรพิจารณาใช้ตัวเลือก -m ซึ่งจะแสดงสรุปจำนวนไฟล์ที่ซ้ำกันและพื้นที่ทั้งหมดที่ไฟล์เหล่านั้นใช้ไป ซึ่งมีประโยชน์มากสำหรับ ประเมินว่าคุณจะได้รับรายได้จากการทำความสะอาดเท่าไหร่:
fdupes -m <ruta del directorio>
สุดท้ายนี้ โปรดระมัดระวังเป็นอย่างยิ่งในการใช้พารามิเตอร์ -s เนื่องจากจะทำให้เกิด fdupes ติดตามลิงก์สัญลักษณ์ (symlinks)หากคุณใช้ร่วมกับตัวเลือกการลบ คุณอาจเผลอไปแตะต้องไฟล์ที่อยู่นอกเส้นทางที่คุณตั้งใจจะวิเคราะห์ เนื่องจากลิงก์เหล่านั้นจะนำคุณไปยังส่วนอื่นๆ ของระบบไฟล์
rdfind: ค้นหาข้อมูลที่ซ้ำซ้อนด้วยวิธีการอัจฉริยะ
rdfind (redundant data find) เป็นอีกหนึ่งยูทิลิตี้ที่ได้รับความนิยมอย่างมากในการตรวจหาไฟล์ซ้ำในระบบลินุกซ์นอกจากนี้ยังเป็นซอฟต์แวร์ฟรีและมีให้ใช้งานในแหล่งเก็บซอฟต์แวร์หลักๆ เช่น apt, yum, dnf, pacman เป็นต้น
หลักการทำงานของมันคล้ายกับ fdupes แต่ได้นำอัลกอริทึมการจัดเรียงของตัวเองมาใช้ในการตัดสินใจ คุณถือว่าไฟล์ใดเป็น "ไฟล์ต้นฉบับ" และไฟล์ใดเป็นไฟล์ซ้ำ?กฎลำดับความสำคัญที่ใช้มีดังนี้:
- หากพบไฟล์ A ในระหว่างการวิเคราะห์อาร์กิวเมนต์อินพุตก่อนไฟล์ B แล้ว A มีสิทธิ์เหนือกว่า B.
- ถ้า A อยู่ในระดับความลึกที่ต่ำกว่า B (อยู่ใกล้กับไดเร็กทอรีรากที่สแกนมากกว่า) A จะได้รับความสำคัญเป็นอันดับแรก
- หากเกณฑ์ทั้งสองข้อเท่ากัน ผลลัพธ์จะยังคงเป็นไปตามนั้น อันที่ถูกพบเป็นอันแรกในระหว่างการสแกน.
หากต้องการติดตั้งบน Debian หรือ Ubuntu ให้ทำดังนี้:
sudo apt-get install rdfind
โดยปกติแล้ว CentOS/RHEL จำเป็นต้องใช้ที่เก็บข้อมูล EPEL:
sudo yum install epel-release
sudo yum install rdfind
นอกจากนี้ยังมีให้ใช้งานในรูปแบบแพ็กเกจที่มาพร้อมกับ Fedora และ Arch Linux ด้วย:
sudo dnf install rdfind
sudo pacman -S rdfind
การใช้งานพื้นฐานไม่ซับซ้อน หากต้องการวิเคราะห์สมุดรายชื่อส่วนตัวของคุณ คุณสามารถทำได้ดังนี้:
rdfind /home/usuario
โปรแกรมจะเขียนไฟล์ชื่อ... ไฟล์ results.txt อยู่ในไดเร็กทอรีที่คุณเรียกใช้โปรแกรมไฟล์นี้ประกอบด้วยกลุ่มข้อมูลที่ซ้ำกันทั้งหมดที่ระบบตรวจพบ คุณสามารถตรวจสอบไฟล์นี้เพื่อตัดสินใจว่าจะดำเนินการอย่างไรต่อไป ไม่ว่าจะเป็นการดำเนินการด้วยตนเองหรือการดำเนินการอัตโนมัติ
หากคุณต้องการทดสอบเบื้องต้นโดยไม่แก้ไขอะไรเลย ตัวเลือก -dryrun คือตัวช่วยของคุณ มันจะสร้างรายงานสำเนาขึ้นมา แต่... โดยไม่ต้องทำการเปลี่ยนแปลงใดๆ กับระบบไฟล์:
rdfind -dryrun true /home/usuario
คุณสมบัติที่น่าสนใจอย่างหนึ่งของ rdfind คือ แทนที่จะลบไฟล์ คุณสามารถ... แทนที่ไฟล์ที่ซ้ำกันด้วยฮาร์ดลิงก์โดยเก็บรักษาสำเนาข้อมูลทางกายภาพเพียงชุดเดียวไว้ในดิสก์:
rdfind -makehardlinks true /home/usuario
หากคุณต้องการลบไฟล์ซ้ำโดยตรง คุณสามารถเรียกใช้งานได้ดังนี้ (ขอแนะนำให้ทดสอบในโฟลเดอร์ทดสอบก่อน):
rdfind -deleteduplicates true /home/usuario
fclones และ yadf: เครื่องมือที่ทันสมัยและรวดเร็วมาก
นอกจากผลิตภัณฑ์คลาสสิกแล้ว ในช่วงไม่กี่ปีที่ผ่านมายังมีผลิตภัณฑ์ใหม่ๆ ปรากฏขึ้น เช่น fclones และ yadf เขียนด้วยภาษา Rust และมีประสิทธิภาพโดดเด่นในการทำงานกับดิสก์ขนาดใหญ่อัลกอริทึมเหล่านี้ถูกออกแบบมาให้ทำงานได้อย่างรวดเร็ว โดยจะคำนึงถึงขนาดไฟล์ ค่าแฮช และการเปรียบเทียบแบบไบต์ต่อไบต์เฉพาะเมื่อจำเป็นจริงๆ เท่านั้น
fclones: การจัดกลุ่ม การเชื่อมโยง การย้าย และการลบข้อมูลซ้ำ
fclones คือเครื่องมือที่ใช้ค้นหาและลบไฟล์ที่ซ้ำกันออกจากเทอร์มินัลแต่ความสามารถของมันมีมากกว่านั้น: มันสามารถระบุกลุ่มไฟล์ที่เหมือนกันและอนุญาตให้ดำเนินการต่างๆ กับไฟล์เหล่านั้นได้ ตั้งแต่การลบ การแทนที่ด้วยลิงก์ หรือการลดความซ้ำซ้อนโดยใช้คุณสมบัติ copy-on-write ของระบบไฟล์
บน Arch Linux และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Arch Linux คุณสามารถติดตั้งได้จาก AUR โดยใช้คำสั่ง:
paru -S fclones
ในระบบปฏิบัติการอื่นๆ ผู้พัฒนาแนะนำให้คอมไพล์จากซอร์สโค้ดโดยใช้ cargo:
cargo install fclones
หลังจากติดตั้งเสร็จแล้ว การเปิดใช้งานการเติมข้อความอัตโนมัติตามเชลล์ของคุณจะเป็นประโยชน์อย่างมาก โดยการเพิ่มบรรทัดลักษณะนี้ลงในไฟล์การตั้งค่าของคุณ:
- ทุบตี:
eval "$(fclones complete bash)"en~/.bashrc - zsh:
source <(fclones complete zsh)en~/.zshrc - ปลา:
fclones complete fish | sourceen~/.config/fish/config.fish
fclones แบ่งการทำงานออกเป็นคำสั่งย่อยหลายคำสั่ง บังคับให้คุณต้อง ควรแยกช่วงเวลาที่ตรวจพบข้อมูลซ้ำออกจากช่วงเวลาที่แก้ไขหรือลบข้อมูลซ้ำอย่างชัดเจน:
- กลุ่ม: ระบุกลุ่มไฟล์ที่เหมือนกันและส่งออกไปยังเอาต์พุตมาตรฐาน
- เอาออก: ลบไฟล์ที่ซ้ำซ้อนโดยอิงจากผลลัพธ์ที่กลุ่มสร้างขึ้นก่อนหน้านี้
- ลิงค์: แทนที่ข้อมูลที่ซ้ำกันด้วย "ฮาร์ดลิงก์" หรือลิงก์สัญลักษณ์
- ย้าย: ย้ายไฟล์ที่ซ้ำกันไปยังไดเร็กทอรีปลายทางที่คุณระบุ
- อนุมานในระบบไฟล์ที่มีกลไก Copy-on-Write นั้น จะทำการลดความซ้ำซ้อนของข้อมูลโดยไม่ลบไฟล์ แต่จะใช้บล็อกภายในร่วมกัน
คำสั่งที่ง่ายที่สุดในการค้นหาไฟล์ที่ซ้ำกันในไดเร็กทอรีปัจจุบันคือ:
fclones group .
หากคุณต้องการกรองตามขนาด เช่น เฉพาะไฟล์ที่มีขนาดใหญ่กว่า 10 MB คุณสามารถเพิ่มโค้ดต่อไปนี้:
fclones group -s 10M .
คุณยังสามารถจำกัดการเลือกดูเฉพาะไฟล์ที่มีคุณสมบัติดังกล่าวได้ด้วย มากกว่าจำนวนสำเนาที่กำหนดไว้ตัวอย่างเช่น ปรากฏตัวมากกว่าห้าครั้ง:
fclones group . --rf-over 5
และแน่นอนว่ามันรองรับการตั้งชื่อตามรูปแบบ ซึ่งเหมาะอย่างยิ่งเมื่อทำงานกับชุดรูปถ่ายหรือรูปภาพ:
fclones group . --name '*.jpg' '*.png'
เมื่อคุณได้รายชื่อข้อมูลที่ซ้ำกันแล้ว (เช่น ในไฟล์ชื่อ duplicates.txt) คุณสามารถดำเนินการต่างๆ ได้ ตัวอย่างเช่น แทนที่ข้อมูลที่ซ้ำกันด้วยฮาร์ดลิงก์ จะ:
fclones link <duplicados.txt
หากคุณต้องการใช้ลิงก์สัญลักษณ์:
fclones link -s <duplicados.txt
หากต้องการส่งไฟล์ที่ซ้ำกันทั้งหมดไปยังโฟลเดอร์ "กักกัน" อีกโฟลเดอร์หนึ่ง:
fclones move target_dir <duplicados.txt
และสำหรับการลบโดยตรง:
fclones remove <duplicados.txt
ในทุกกรณีเหล่านี้ คุณยังสามารถทำได้เช่นกัน การเชื่อมโยงคำสั่งโดยใช้ไปป์ตัวอย่างเช่น การจัดกลุ่มและลบในเวลาเดียวกัน:
fclones group . | fclones remove
แม้ว่าวิธีนี้จะใช้ได้ผล แต่การเพิ่มตัวเลือกเข้าไปนั้นสมเหตุสมผลกว่ามาก – ดรายรัน เพื่อดูว่าจะเกิดอะไรขึ้นโดยไม่ต้องสัมผัสสิ่งใด ตัวอย่างเช่น:
fclones group . | fclones remove --dry-run
โหมดจำลองนั้นจะช่วยคุณประหยัดเวลาและความยุ่งยากได้มาก โดยเฉพาะอย่างยิ่งหากคุณทำงานกับดิสก์ที่มีข้อมูลสำคัญ
yadf: Yet Another Duplicate Finder
yadf (Yet Another Duplicate Finder) เป็นอีกหนึ่งเครื่องมือสมัยใหม่ที่เขียนด้วยภาษา Rust สำหรับค้นหาไฟล์ซ้ำด้วยไวยากรณ์ที่ค่อนข้างชัดเจนและกลยุทธ์การวิเคราะห์แบบทีละขั้นตอน: ขั้นแรกจะจัดกลุ่มตามขนาด จากนั้นจะคำนวณค่าแฮชเฉพาะเมื่อจำเป็น และสุดท้ายจะยืนยันความเท่าเทียมกันด้วยการเปรียบเทียบแบบไบต์ต่อไบต์
วิธีใช้งานนั้นง่ายมาก หากต้องการค้นหาไฟล์ที่ซ้ำกันในไดเร็กทอรีปัจจุบัน เพียงแค่รันคำสั่ง:
yadf
หากคุณต้องการเปรียบเทียบเส้นทางสองเส้นทางที่เฉพาะเจาะจง เช่น เอกสารและรูปภาพ คุณสามารถทำได้ดังนี้:
yadf ~/Documents ~/Pictures
นอกจากนี้ยังสามารถใช้กับความลึก 0 ได้ด้วย เปรียบเทียบไฟล์ที่ระบุโดยไม่ต้องเข้าไปในโฟลเดอร์ย่อยวิธีนี้มีประโยชน์เมื่อคุณสงสัยว่าไฟล์สองไฟล์ที่ระบุนั้นเหมือนกัน:
yadf --depth 0 file1 file2
หากต้องการจำกัดการค้นหาให้อยู่ในไดเร็กทอรีปัจจุบันโดยไม่ต้องลงไปด้านล่าง ให้ปรับความลึก:
yadf --depth 1
จุดแข็งอย่างหนึ่งของ yadf คือมันทำงานได้ดีมากกับยูทิลิตี้อื่นๆ เช่น fd ตัวอย่างเช่น คุณสามารถ ขั้นแรก ให้กรองไดเร็กทอรีหรือไฟล์ตามชื่อ จากนั้นส่งรายการดังกล่าวไปยัง yadf:
- ค้นหาไดเร็กทอรีที่มีตัวอักษร "a" จากนั้นค้นหาไฟล์ที่ซ้ำกันโดยไม่ต้องใช้การค้นหาแบบวนซ้ำ:
fd --type d a | yadf --depth 1 - ค้นหาไฟล์ที่มีคำว่า "a" และตรวจสอบหาไฟล์ที่ซ้ำกัน:
fd --type f a | yadf
สำหรับตัวกรอง คุณมีตัวเลือกที่น่าสนใจหลายอย่าง:
- ไฟล์ซ้ำที่มีขนาดอย่างน้อย 100 MB:
yadf --min 100M - ไฟล์ซ้ำที่มีขนาดต่ำกว่า 100 MB:
yadf --max 100M - เฉพาะไฟล์ JPG เท่านั้น:
yadf --pattern '*.jpg' - ไฟล์ที่มีชื่อขึ้นต้นด้วยตัวอักษร "g":
yadf --regex '^g' - ไฟล์ที่มีสำเนามากกว่า 10 ชุด:
yadf --rfactor over:10 - ไฟล์ที่มีจำนวนสำเนาน้อยกว่า 10 ชุด:
yadf --rfactor under:10 - ไฟล์ที่ไม่ซ้ำกัน (ไม่มีไฟล์ซ้ำ):
yadf --rfactor equal:1
นอกจากนี้ยังช่วยให้ เพื่อจัดรูปแบบ ผลลัพธ์สำหรับการบูรณาการเข้ากับสคริปต์หรือเครื่องมืออื่นๆ จากการทดสอบโดยผู้เขียนเอง พบว่า yadf มักจะเป็น เร็วกว่า fclones เล็กน้อยในบางสถานการณ์อย่างไรก็ตาม แนะนำให้ทำการทดสอบประสิทธิภาพด้วยตนเองบนระบบของคุณและด้วยข้อมูลของคุณเอง
เครื่องมือแบบกราฟิกสำหรับค้นหาไฟล์ซ้ำใน Linux
หากคุณไม่ถนัดใช้เทอร์มินัล หรือหากคุณมีคอลเลกชันรูปภาพขนาดใหญ่และต้องการดูตัวอย่างภาพขนาดย่อก่อนลบอะไรก็ตาม วิธีที่ง่ายที่สุดคือการใช้... แอปพลิเคชันที่มีอินเทอร์เฟซแบบกราฟิกในระบบนิเวศของลินุกซ์ มีระบบที่พัฒนาจนสมบูรณ์แล้วอยู่หลายระบบ
FSlint: มีอินเทอร์เฟซที่ใช้งานง่ายและเวอร์ชัน CLI ให้เลือกใช้
FSlint เป็นเครื่องมือเก่าแก่สำหรับการค้นหาและกำจัด "สิ่งสกปรก" ในระบบไฟล์: ไฟล์ซ้ำ, โฟลเดอร์ว่างเปล่า, ไฟล์ชั่วคราวลิงก์สัญลักษณ์ที่เสียหาย ไฟล์ไบนารีที่ล้าสมัย และส่วนประกอบที่ไม่จำเป็นอื่นๆ
ซอฟต์แวร์นี้มีอยู่ในคลังซอฟต์แวร์ของระบบปฏิบัติการหลายๆ ตัว ตัวอย่างเช่น ใน Ubuntu คุณสามารถติดตั้งได้จากศูนย์ซอฟต์แวร์หรือผ่านทางเทอร์มินัลโดยใช้คำสั่ง:
sudo apt-get install fslint
เมื่อคุณเปิดแอปพลิเคชันแบบกราฟิก คุณจะเห็นว่าแผง "ทำซ้ำ" ถูกเลือกไว้โดยค่าเริ่มต้น และของคุณ ไดเร็กทอรีส่วนตัวเป็นเส้นทางการค้นหาเริ่มต้นเพียงคลิกที่ "ค้นหา" เพื่อให้ FSlint สแกนโฟลเดอร์และแสดงรายการไฟล์ที่ซ้ำกันให้คุณเห็น
จากรายการนั้น คุณสามารถเลือกรายการที่จะลบ รวม หรือดำเนินการอื่นๆ ได้ การดับเบิ้ลคลิกจะช่วยให้คุณสามารถ... ดูตัวอย่างไฟล์ก่อนลบซึ่งมีประโยชน์มากสำหรับการจัดเก็บรูปภาพและเอกสารสำคัญ
FSlint ยังมีส่วนประกอบคอนโซลซึ่งอย่างไรก็ตาม ไม่ได้ออกแบบมาให้เรียกใช้งานโดยตรงในฐานะไบนารีใน PATH แต่ให้เรียกใช้งานในรูปแบบอื่นแทน ต้นฉบับ ตามเส้นทางของตนเอง:
/usr/share/fslint/fslint/fslint carpeta
คำสั่งนี้จะแสดงรายการไฟล์ที่ซ้ำกันเท่านั้น และปล่อยให้คุณดำเนินการต่อไปเอง (เช่น ลบ ย้าย เป็นต้น) หากคุณต้องการดูตัวเลือกทั้งหมด คุณสามารถดูได้ในส่วนช่วยเหลือ
/usr/share/fslint/fslint/fslint --help
man fslint
dupeGuru: รองรับหลายแพลตฟอร์ม รวดเร็ว และปลอดภัยสูง
dupeGuru เป็นอีกหนึ่งแอปพลิเคชันแบบกราฟิกที่รู้จักกันดีสำหรับการค้นหาไฟล์ซ้ำในระบบลินุกซ์ Windows และ macOSสามารถสแกนได้ทั้งจากชื่อและเนื้อหา และรองรับอัลกอริธึมการจับคู่แบบคลุมเครือที่ตรวจจับชื่อที่คล้ายกัน เหมาะอย่างยิ่งเมื่อคุณมีเพลงหรือรูปภาพหลายพันรายการที่มีชื่อเกือบเหมือนกัน
อินเทอร์เฟซของโปรแกรมค่อนข้างใช้งานง่าย: คุณเลือกโฟลเดอร์ที่จะสแกนหนึ่งโฟลเดอร์หรือมากกว่านั้น เลือกโหมด (ไฟล์ทั่วไป เพลง หรือรูปภาพ) แล้วปล่อยให้โปรแกรมทำงาน เมื่อเสร็จแล้ว โปรแกรมจะแสดงผลลัพธ์ให้คุณเห็น สร้างกลุ่มสำเนาที่คุณสามารถเลือกได้ว่าจะเก็บอะไรไว้และจะลบอะไรออก การติ๊กช่องสี่เหลี่ยม
บน Debian, Ubuntu และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Debian คุณสามารถติดตั้งได้จาก PPA ที่ดูแลโดยโครงการนี้:
sudo add-apt-repository ppa:dupeguru/ppa
sudo apt-get update
sudo apt-get install dupeguru
ใน Arch Linux สามารถดาวน์โหลดได้จากคลังซอฟต์แวร์ของระบบปฏิบัติการ:
sudo pacman -S dupeguru
ข้อดีอย่างหนึ่งของ dupeGuru คือ ออกแบบมาเพื่อลดความเสี่ยงในการลบสิ่งที่ไม่ควรลบอย่างไรก็ตาม การตัดสินใจขั้นสุดท้ายขึ้นอยู่กับคุณเสมอ นั่นเป็นเหตุผลว่าทำไมการสำรองข้อมูลและตรวจสอบสิ่งที่คุณเลือกอย่างรอบคอบจึงยังคงมีความสำคัญ
Czkawka และ Krokiet: เครื่องยนต์สมัยใหม่ที่มีอินเทอร์เฟซที่แตกต่างกันสองแบบ
Czkawka เป็นแอปพลิเคชันสมัยใหม่ที่เขียนด้วยภาษา Rust ซึ่งใช้ในการค้นหาและลบไฟล์ที่ซ้ำกัน ไฟล์ว่าง ไฟล์ชั่วคราว ไฟล์ขนาดใหญ่ และสิ่งที่ไม่จำเป็นอื่นๆสามารถใช้งานได้บนหลายแพลตฟอร์ม และเป้าหมายหลักคือความรวดเร็วและประสิทธิภาพ
ภายในใช้เครื่องยนต์เดียวกันกับ Krokiet เป็นอีกหนึ่งอินเทอร์เฟซกราฟิกที่เลือกใช้ดีไซน์ที่เบาและรวดเร็วกว่าCzkawka ใช้ GTK และมีอินเทอร์เฟซที่สมบูรณ์กว่า ในขณะที่ Krokiet ใช้ Slint และลดความซับซ้อนของการนำเสนอลงบ้าง เพื่อแลกกับการใช้ทรัพยากรที่น้อยลง
ในทั้งสองกรณี ขั้นตอนการทำงานจะคล้ายกับที่เราเคยเห็นในเครื่องมือแบบกราฟิกอื่นๆ คือ คุณเลือกโฟลเดอร์ที่จะสแกน เริ่มการค้นหาไฟล์ซ้ำ แล้วก็... คุณทำงานกับรายการที่จัดกลุ่มไว้ โดยระบุว่าต้องการเก็บอะไรไว้และต้องการลบอะไรออกวิธีนี้สะดวกกว่าการจำตัวเลือกในคอนโซลมาก หากคุณต้องการทำความสะอาดเป็นครั้งคราวเท่านั้น
หากคุณกำลังมองหาโปรแกรมที่ใช้งานง่ายและมีการพัฒนาที่ค่อนข้างรวดเร็ว Czkawka คือหนึ่งในตัวเลือกที่แนะนำมากที่สุด แต่ถ้าคุณชอบโปรแกรมที่เบา Krokiet ก็เหมาะกับคอมพิวเตอร์สเปคปานกลางเป็นอย่างดี
fclones-gui: อินเทอร์เฟซแบบง่ายสำหรับ fclones
สำหรับผู้ที่เคยลองใช้ fclones แต่ไม่อยากยุ่งยากกับการใช้บรรทัดคำสั่ง ก็มีทางเลือกนี้ fclones-gui คือส่วนติดต่อผู้ใช้แบบกราฟิกที่เรียบง่ายมาก ซึ่งใช้ประโยชน์จากกลไกของ fclonesมันไม่ได้แสดงตัวเลือกขั้นสูงทั้งหมด แต่แสดงตัวเลือกที่ใช้บ่อยที่สุด
วิธีการใช้งานนั้นง่ายมาก: คุณเลือกไดเร็กทอรีที่ต้องการวิเคราะห์ ปรับตัวเลือกการค้นหาพื้นฐาน แล้วคลิกปุ่มเพื่อเริ่มการวิเคราะห์ ค้นหารายการที่ซ้ำกันเมื่อเสร็จสิ้น คุณสามารถเลือกไฟล์ที่จะประมวลผลและดำเนินการใด ๆ (ลบ ย้าย เชื่อมโยง ฯลฯ) ได้
ข้อเสียเพียงอย่างเดียวคือ การพัฒนา fclones-gui ดูเหมือนจะช้ากว่าโปรแกรมกราฟิกทางเลือกอื่นๆ เช่น Czkawka หรือ Krokiet ดังนั้นหากคุณให้ความสำคัญกับการบำรุงรักษาอย่างต่อเนื่อง คุณอาจจะเลือกใช้โปรแกรมหลังมากกว่า อย่างไรก็ตาม หาก fclones-gui ตอบโจทย์ความต้องการของคุณได้ มันก็เป็นตัวเลือกที่ใช้ได้ดีเช่นกัน
โซลูชันที่สร้างขึ้นด้วยมือโดยใช้ฟังก์ชัน find, sort, uniq และ md5sum
หากคุณชอบทำสิ่งต่างๆ ด้วยมือ หรือไม่ต้องการพึ่งพาเครื่องมือเพิ่มเติม คุณก็สามารถทำได้เช่นกัน ผสมผสานยูทิลิตี้แบบคลาสสิกของ ยูนิกซ์ เช่น คำสั่ง find, md5sum, sort และ uniq เพื่อค้นหาไฟล์ที่ซ้ำกันหลักการพื้นฐานคือการสร้างแฮชสำหรับแต่ละไฟล์ จัดเรียงตามแฮชนั้น แล้วเก็บเฉพาะรายการที่ซ้ำกัน
ตัวอย่างเช่น คุณสามารถวนลูปผ่านไดเร็กทอรีหลักของคุณ สร้างค่าตรวจสอบ MD5 สำหรับแต่ละไฟล์ และเขียนผลลัพธ์ลงในไฟล์:
find /home/usuario -type f -print0 \
| xargs -0 md5sum \
| sort > /tmp/archivos-duplicados.txt
จากนั้น คุณสามารถใช้คำสั่ง sort และ uniq เพื่อค้นหาตำแหน่งได้ แฮชที่ปรากฏมากกว่าหนึ่งครั้งบ่งชี้ถึงกลุ่มไฟล์ที่มีเนื้อหาเหมือนกันจากนั้นก็เป็นเพียงเรื่องของการประมวลผลรายการเพื่อตัดสินใจว่าจะจัดการกับแต่ละเส้นทางอย่างไร
รายละเอียดที่น่าสนใจอย่างหนึ่งก็คือ ถ้าคุณทำ echo จากค่าแฮช MD5 คุณจะสังเกตได้ว่า ดูเหมือนว่าจะมีขนาด 33 ไบต์ แทนที่จะเป็น 32 ไบต์นั่นเป็นเพราะคำสั่ง `echo` จะเพิ่มการขึ้นบรรทัดใหม่ที่ท้ายสุด ดังนั้นในการวัดขนาดอย่างแท้จริง คุณควรทำโดยไม่มีการขึ้นบรรทัดใหม่นั้น (ตัวอย่างเช่น ด้วย printf).
วิธีการ "ทำด้วยมือ" นี้อาจไม่ได้มอบความสะดวกสบายหรือคุณสมบัติขั้นสูงเหมือนเครื่องมือเฉพาะทาง แต่ก็มีประโยชน์มากสำหรับ เข้าใจวิธีการทำงานภายในของตัวตรวจจับข้อมูลซ้ำซ้อนจำนวนเท่าใด และเพื่อสร้างสคริปต์ที่เฉพาะเจาะจงมาก ๆ ซึ่งปรับให้เหมาะกับความต้องการของคุณ
คำแนะนำการใช้งานและแนวทางปฏิบัติที่ดีที่สุดเมื่อลบข้อมูลที่ซ้ำกัน
ไม่ว่าคุณจะเลือกใช้เครื่องมือใดก็ตาม มีแนวทางปฏิบัติหลายประการที่ควรปฏิบัติตาม หลีกเลี่ยงการถูกไฟฟ้าช็อตจากการลบไฟล์ที่คุณจำเป็นต้องใช้:
- เริ่มจากการลงมือทำก่อน ไดเร็กทอรีทดสอบหรือสำเนาข้อมูลของคุณ จนกว่าคุณจะรู้สึกคุ้นเคยกับเครื่องมือนี้
- เมื่อใดก็ตามที่มีอยู่ ให้ใช้โหมดนั้น การทดลองหรือการจำลอง (เช่น คำสั่ง fclones, rdfind เป็นต้น) ก่อนดำเนินการใดๆ ที่ก่อให้เกิดความเสียหาย
- ถ้าเป็นไปได้ ให้เลือกเป็นอันดับแรก ย้ายไฟล์ที่ซ้ำกันไปยังโฟลเดอร์กักกัน แทนที่จะลบออกโดยตรง
- หลีกเลี่ยงการลบอัตโนมัติด้วยตัวเลือกต่างๆ เช่น –ไม่มีข้อความแจ้งเตือน หรือ -N หากคุณไม่ได้ตรวจสอบวิธีการทำงานของพวกมันอย่างละเอียดถี่ถ้วน พวกมันอาจมีพฤติกรรมที่รุนแรงมาก
- ระวังด้วย ลิงก์สัญลักษณ์ (-s, –symlinks)เพราะมันอาจทำให้คุณเผลอลบไฟล์ที่อยู่นอกโครงสร้างไดเร็กทอรีที่คุณคิดว่ากำลังทำความสะอาดอยู่
- เก็บไฟล์ การสำรองข้อมูลล่าสุด ก่อนดำเนินการล้างข้อมูลครั้งใหญ่บนดิสก์ที่มีข้อมูลสำคัญ
การค้นหาและลบไฟล์ซ้ำใน Linux ไม่ใช่เรื่องยากหากคุณรู้จักเครื่องมือที่เหมาะสม ตั้งแต่เครื่องมือคลาสสิกอย่าง fdupes, rdfind และ FSlint ไปจนถึงตัวเลือกที่ทันสมัยกว่าอย่าง fclones, yadf, Czkawka, Krokiet หรือ dupeGuru คุณมีเครื่องมือมากมายให้เลือกใช้ เพิ่มพื้นที่ว่าง จัดระเบียบโฟลเดอร์ และลดความวุ่นวายจากไฟล์ซ้ำซ้อนเลือกใช้คอนโซลหรืออินเทอร์เฟซแบบกราฟิกตามความสะดวกของคุณ ผสานตัวกรองขนาดและรูปแบบการตั้งชื่อเพื่อปรับปรุงผลลัพธ์ และที่สำคัญที่สุดคือ ใช้เวลาตรวจสอบสิ่งที่คุณกำลังจะลบอย่างละเอียดถี่ถ้วน ด้วยความระมัดระวังเพียงเล็กน้อย ระบบของคุณจะทำงานได้อย่างราบรื่นยิ่งขึ้นโดยที่ข้อมูลสำคัญของคุณไม่ตกอยู่ในความเสี่ยงโดยไม่จำเป็น
นักเขียนผู้หลงใหลเกี่ยวกับโลกแห่งไบต์และเทคโนโลยีโดยทั่วไป ฉันชอบแบ่งปันความรู้ผ่านการเขียน และนั่นคือสิ่งที่ฉันจะทำในบล็อกนี้ เพื่อแสดงให้คุณเห็นสิ่งที่น่าสนใจที่สุดเกี่ยวกับอุปกรณ์ ซอฟต์แวร์ ฮาร์ดแวร์ แนวโน้มทางเทคโนโลยี และอื่นๆ เป้าหมายของฉันคือการช่วยคุณนำทางโลกดิจิทัลด้วยวิธีที่เรียบง่ายและสนุกสนาน