มีคำสั่งคัดลอกและยืนยันใน Ubuntu / Linux หรือไม่


23

ฉันสำรองรูปภาพดิจิทัลทั้งหมดไว้ในสองแห่ง ฉันใช้คำสั่ง cp แต่ได้รับค่าส่วนบุคคลแล้ว - เริ่มสงสัยว่ามีวิธีที่เชื่อถือได้มากกว่านี้หรือไม่ ฉันไม่ใช่คนแปลกหน้ากับ Linux, Bash, Perl, ฯลฯ ดังนั้นฉันจึงสามารถเขียนบางสิ่งเพื่อคัดลอกและเปรียบเทียบ hd5 hashes ได้ แต่ฉันสงสัยว่ามีบางสิ่งอยู่แล้ว (การประดิษฐ์ล้อและสิ่งที่ไม่ใช่)

googling ส่วนใหญ่ของฉันสำหรับการคัดลอกและ (ยืนยัน | ถูกต้อง | ตรวจสอบ | แฮช | ยืนยัน) ปรากฎ rsync อย่างไรก็ตามเท่าที่ฉันสามารถบอกได้ rsync จะใช้แฮชเพื่อดูว่าไฟล์นั้นจำเป็นต้องได้รับการอัพเดตหรือไม่ มันไม่ทำการเปรียบเทียบแฮชหลังจากนั้น

สำหรับการใช้งานนี้โดยเฉพาะไฟล์เป็นแบบไบนารี่และโดยทั่วไปแล้วจะมีขนาด 8-10MB คำแนะนำสำหรับสาธารณูปโภคหรือคำแนะนำสำหรับการแก้ปัญหา DIY จะได้รับการชื่นชมอย่างมาก


ความพร้อมเพรียงกันอย่างไร มันใช้สำหรับการซิงโครไนซ์แบบสองทาง แต่จะตรวจสอบเช็กซัมของไฟล์
เรียว

คำตอบ:


19

จากman rsyncใต้-cตัวเลือก:

-c, --checksum: ข้ามไปตาม checksum ไม่ใช่ mod-time & size

โปรดทราบว่า rsync จะตรวจสอบว่าแต่ละไฟล์ที่ถ่ายโอนถูกสร้างขึ้นใหม่อย่างถูกต้องในด้านการรับโดยการตรวจสอบการตรวจสอบไฟล์ทั้งหมดที่สร้างขึ้นเมื่อไฟล์ถูกถ่ายโอน แต่การตรวจสอบโดยอัตโนมัติหลังการถ่ายโอนไม่มีอะไรเกี่ยวข้องกับตัวเลือกนี้ ก่อนที่จะถ่ายโอน "จำเป็นต้องอัปเดตไฟล์นี้หรือไม่" ตรวจสอบ


7
บางคนคิดว่าคู่มือ rsync ทำให้เข้าใจผิดเกี่ยวกับการตรวจสอบการโพสต์เริ่มต้น: unix.stackexchange.com/a/66702/148560ดูเหมือนว่าจะไม่มีการตรวจสอบดังกล่าว เพื่อที่จะตรวจสอบสำเนาทั้งหมดที่คุณต้องทำอีก rsync กับตัวเลือก --checksum พวกเขาพูดว่า
Rotareti

5

หลายปีที่ผ่านมาฉันมีความต้องการเช่นเดียวกับที่คุณทำ ทางออกที่ฉันเลือกคือการใช้ ZFS ผ่านทางไดรเวอร์ ZFS-FUSE บนเซิร์ฟเวอร์ที่เก็บข้อมูลของฉัน ความคิดของฉันคือภาพถ่ายส่วนตัวเอกสารที่สแกนและไฟล์อื่น ๆ ที่คล้ายกันเป็นสิ่งที่ฉันสามารถเข้าถึงได้เป็นครั้งคราวเท่านั้นดังนั้นอาจใช้เวลานานมากในการพูดหนึ่งปีขึ้นไปก่อนที่ฉันจะสังเกตเห็นว่าไฟล์เกิดความเสียหายเนื่องจาก ข้อผิดพลาดของไดรฟ์หรือไม่ชอบ

ตามเวลานั้นสำเนาสำรองทั้งหมดที่ฉันมีอาจเป็นรุ่นที่มีบิตที่เน่าเปื่อย

ZFS มีข้อดีเหนือกว่า RAID-5 ที่สามารถตรวจจับและซ่อมแซมข้อผิดพลาดในข้อมูลที่เก็บไว้ในดิสก์แต่ละแผ่นแม้ว่าไดรฟ์จะไม่รายงานข้อผิดพลาดการอ่านขณะอ่านข้อมูล มันจะตรวจจับผ่านแผ่นดิสก์หนึ่งในแผ่นดิสก์ที่ส่งคืนข้อมูลที่เสียหายและจะใช้ข้อมูลที่ซ้ำซ้อนเพื่อซ่อมแซมแผ่นดิสก์นั้น

ด้วยวิธีการออกแบบการตรวจสอบใน ZFS ฉันรู้สึกว่าฉันสามารถเชื่อถือได้ในการจัดเก็บข้อมูลที่ใช้งานไม่บ่อยเป็นระยะเวลานาน ทุกสัปดาห์ฉันเรียกใช้ "zpool scrub" ซึ่งจะผ่านและอ่านข้อมูลทั้งหมดอีกครั้งและตรวจสอบ checksums

ZFS-FUSE ทำงานได้ค่อนข้างดีสำหรับฉันในช่วงไม่กี่ปีที่ผ่านมา

ในอดีตอันไกลโพ้นสำหรับลูกค้าฉันใช้ระบบฐานข้อมูลที่เก็บข้อมูลการตรวจสอบในไฟล์ทั้งหมดที่จัดเก็บภายใต้ไดเรกทอรีเฉพาะ ฉันมีสคริปต์อื่นที่จะรันเป็นระยะและตรวจสอบไฟล์กับ checksum ที่เก็บไว้ในฐานข้อมูล โดยที่เราสามารถตรวจพบไฟล์ที่เสียหายได้อย่างรวดเร็วและเรียกคืนจากการสำรองข้อมูล โดยพื้นฐานแล้วเราใช้การตรวจสอบประเภทเดียวกันกับที่ ZFS ดำเนินการภายใน


ทำไมต้องโหวต เนื่องจากไม่มีความคิดเห็นเหลือฉันจะถือว่าเป็น "-1 ไม่เห็นด้วย" :-)
Sean Reifschneider

... แต่แล้ว: ส่วนไหนไม่เห็นด้วย แม้ว่าอาจจะเป็นหัวข้อเล็กน้อยสำหรับคำถามนี้ฟังดูดีสำหรับฉัน ดังนั้นผมจึงหวังเป็น downvote สำหรับ "ไม่ตอบคำถาม" แทนที่จะปล่อยให้เราหลงลืมบางอย่างเกี่ยวกับข้อบกพร่องจริงในข้างต้น ...
Arjan

ฉันรู้เมื่อเช้านี้ว่าฉันกำลังคิดว่า icyrock ถามเพราะกังวลเรื่อง bit-rot ซึ่งเป็นสิ่งที่ฉันกังวล แต่บางทีมันก็แตกต่างออกไป แม้ว่าฉันจะไม่สามารถจินตนาการได้ว่ากรณีการใช้งานคืออะไรที่จะเปลี่ยนแปลงเนื้อหาของไฟล์อย่างถูกกฎหมายโดยไม่ต้องเปลี่ยนเวลา
Sean Reifschneider

ฉันคิดว่าข้อกังวลของ OP คือความเสียหายของข้อมูลในการขนส่ง คุณคัดลอกไฟล์และการคัดลอกจะแตกต่างจากต้นฉบับ
Jon Bentley

btrfs? ที่มี checksums และเป็นสันดาน ...
Dmitry Kudriavtsev


1

ฉันพบยูทิลิตี้นี้ (Linux และ Windows) ที่ทำสิ่งที่คุณต้องการ (คัดลอกการแฮช + การตรวจสอบการแฮชพร้อมบันทึก): http://sourceforge.net/projects/quickhash/

ข้อเสียเพียงอย่างเดียวคือมันมีอยู่เป็น GUI (ไม่มีการเข้าถึงบรรทัดคำสั่ง)

ตั้งแต่ v1.5.0 โฟลเดอร์ต้นทางที่เลือกสามารถแฮชแล้วคัดลอกและสร้างใหม่ไปยังโฟลเดอร์ปลายทางที่เนื้อหาถูกแฮชอีกครั้งเพื่อการตรวจสอบ ตั้งแต่ 1.5.5 สามารถใช้รูปแบบไฟล์ที่เลือกได้เช่นกัน (* .doc; * .xls เป็นต้น)


0

หากคุณกำลังคัดลอกไฟล์ในเครื่อง (ตามที่ระบุโดยการอ้างอิงของคุณcpแทนscpฯลฯ ) ดังนั้นเพียงแค่cmpไฟล์ต้นทางและปลายทาง ... แต่แนบเนียนถ้าcpไม่ปล่อยข้อผิดพลาดบางอย่าง (บนบรรทัดคำสั่งหรือใน ค่าส่งคืนการดำเนินการ) ไม่มีเหตุผลใดที่จะเชื่อว่าไม่ทำงาน

แน่นอนถ้าคุณต้องการสำรองข้อมูลซ้ำซ้อนถูกต้องตามกฎหมายให้พิจารณาการแก้ปัญหาระยะไกลเช่นDropbox


+1 ยังไม่ชัดเจนว่าทำไมคำตอบนี้จึงลดลงเนื่องจากมี (สิ่งที่ดูเหมือนกับฉัน) ที่จะเป็นทางออกที่ถูกต้องสำหรับปัญหาแม้ว่าจะต้องใช้สองคำสั่งมากกว่าหนึ่งคำ
Jon Bentley

คุณจะต้องเขียนสคริปต์พร้อมลูปเพื่อใช้คำตอบนี้เนื่องจากไม่คำนึงถึงไฟล์และโฟลเดอร์หลายรายการ
Gringo Suave
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.