คัดลอกไปยังดิสก์ NTFS อื่นและเก็บฮาร์ดลิงก์ไว้


10

ฉันต้องคัดลอกโครงสร้างไดเรกทอรีจากดิสก์ NTFS ท้องถิ่นหนึ่งไปยังอีก (Windows 7+) และรักษาฮาร์ดลิงก์ที่มีอยู่ภายในโครงสร้างไดเรกทอรีนี้

โซลูชันที่ยอมรับได้คือการแทนที่ฮาร์ดลิงก์ด้วยลิงก์สัญลักษณ์ (ญาติ) ก่อนคัดลอก แต่ฉันไม่แน่ใจว่าสามารถใช้งานได้หรือไม่

ตัวเลือกที่นี่มีอะไรบ้าง


ตามsuperuser.com/questions/624811/…ซอฟต์แวร์ caled "Shadow Copy Cloner" สามารถทำสิ่งนั้นได้
Vojtech

1
@Vojtech มันไม่ได้เป็นฟรีแวร์และดูเหมือนจะไม่สามารถใช้งานได้ แต่ ln.exe ตรงกับความต้องการของฉันในทางกลับกัน อย่างไรก็ตามฉันต้องการมีทางเลือกกับ GUI
Estus Flask

1
@PJMahoney ใช่นี่คือฮาร์ดลิงก์ไม่น่าจะมีปัญหากับการคัดลอก junctions และ symbolics ซึ่งอันหลังนั้นสามารถคัดลอกและแก้ไขได้ในภายหลัง ฉันไม่ได้ตั้งใจจะลอกแบบมันเพียงเพื่อคัดลอกโครงสร้างไดเรกทอรี (ซึ่งเป็นส่วนหนึ่งของดิสก์ทั้งหมด) ไปยังดิสก์อื่นที่ไม่ใช่ดิสก์เปล่า
Estus Flask

คำตอบ:


9

เครื่องมือในการคัดลอกฮาร์ดลิงก์ข้ามพาร์ติชั่นดิสก์แยก

LN - ฮาร์ดลิงก์บรรทัดคำสั่ง

คำสั่ง: ln --copy x:\dir\dir2 y:\dir\newdir

ในตัวอย่างด้านบนไดเรกทอรีและไฟล์ด้านล่าง x: \ dir \ dir2 จะถูกคัดลอกไปยัง y: \ dir \ newdir และลิงก์ / junctions / symbolic ลิงก์ภายใน x: \ dir \ dir2 ทั้งหมดจะถูกคัดลอก / เชื่อมโยงกับตำแหน่งใหม่ภายใต้ y : \ dir \ newdir

ทรัพยากร: http://schinagl.priv.at/nt/ln/ln.html

ดาวน์โหลด: http://schinagl.priv.at/nt/ln/ln.html#contact

หมายเหตุ: ดูเหมือนว่าคุณเพิ่งดาวน์โหลดซอฟต์แวร์นี้สำหรับสถาปัตยกรรม CPU ของคุณจากไฟล์ ZIP รวมถึง vcredist (Visual C ++ Redistributable) และติดตั้ง จากนั้นเพียงแยกไฟล์และโฟลเดอร์จากไฟล์ ZIP ไปยังโฟลเดอร์ใหม่ (.eg C:\Temp) ในบรรทัดคำสั่งเพียงไปที่โฟลเดอร์ [ไดเรกทอรี] แล้วเรียกใช้คำสั่งที่จำเป็นสำหรับตำแหน่งไดรฟ์ของคุณตามตัวอย่างด้านบนแสดง การรันln --helpแสดงรายละเอียดความช่วยเหลือ แต่ตัวอย่างคำสั่งข้างต้นควรจะคัดลอกhard linksตามเอกสาร


ลิงค์ส่วนต่อเชลล์

ทรัพยากร: http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html

ดาวน์โหลด: http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html#contact

ส่วนหรือฟังก์ชั่นที่น่าสนใจด้วยซอฟต์แวร์นี้

  • Smart Mirror
  • Clone
  • Smart Copy

ln - ลิงก์บรรทัดคำสั่ง - ดาวน์โหลดภาพหน้าจอ ป้อนคำอธิบายรูปภาพที่นี่

Link Shell Extension - ดาวน์โหลด Screen Shot ป้อนคำอธิบายรูปภาพที่นี่


หมายเหตุที่น่าสนใจ

มันจะปรากฏขึ้นhard linksถูกล็อคไว้ในดิสก์พาร์ติชั่นเดียวกันสำหรับตัวชี้ไฟล์ ฯลฯ และไม่สามารถใช้ข้ามหลายพาร์ติชั่นได้ นอกจากนี้hard linksบนพาร์ติชัน NTFS เป็นส่วนหนึ่งของMaster File Tableเร็กคอร์ด (หรือแอตทริบิวต์สำหรับการนับอย่างน้อย) ดังนั้นการคัดลอกเหล่านี้ไปยังดิสก์ที่มีอยู่ซึ่งมีเป็นของตัวเองMFTดูเหมือนจะมีปัญหาหากคุณไม่โคลนไบต์สำหรับไบต์ที่ระดับพาร์ติชัน อย่างน้อย.


4

ยูทิลิตีบรรทัดคำสั่งrsyncทำตามที่คุณขอ

สมมติว่าข้อมูลเก่าของคุณอยู่ในตำแหน่ง A และข้อมูลใหม่ของคุณอยู่บน B ให้ทำดังนี้:

rsync -ahPruvz --hard-links A B

การอ้างอิงจากคู่มือ rsync:

สิ่งนี้บอก rsync ให้ค้นหาไฟล์ที่มีการเชื่อมโยงอย่างหนักในแหล่งที่มาและเชื่อมโยงไฟล์ที่เกี่ยวข้องในปลายทาง

จะรับrsyncและใช้มันอย่างไร? มีทางเลือกง่าย ๆ 2 อย่างสำหรับ Windows:

ทางเลือกแรก: cygwinการใช้งาน มันเป็นซอฟต์แวร์ windows ติดตั้งเพิ่มrsyncในขั้นตอนการเลือกแพ็คเกจ ปล่อยให้ทุกอย่างอื่นเป็นค่าเริ่มต้น หลังจากที่คุณติดตั้งแล้วให้ใช้เชลล์เพื่อพิมพ์คำสั่ง ถ้าคุณต้องการคุณอาจจะใช้เส้นทางที่เต็มแทนเพียง/usr/bin/rsync rsyncหากคุณต้องการเข้าถึงไดรฟ์ Windows ให้ใช้พา ธ เช่น "/ cygwin / ไดรฟ์" และพยายามป้อนอัตโนมัติโดยใช้ TAB

ทางเลือกที่สอง: ถ้าเป็นคอมพิวเตอร์เดสก์ท็อปให้ใช้การแจกจ่าย GNU / Linux แบบสด จัดทำอิมเมจ USB สดบูตจากนั้นเมานท์ดิสก์ที่ต้องการและเรียกใช้ rsync หากไม่มีภาพสดrsyncให้ติดตั้ง ( apt-get install rsyncใน Debian และอนุพันธ์ของมัน) หากคุณยังไม่เคยมีประสบการณ์กับระบบนิเวศของ Linux cygwin อาจจะง่ายกว่า


ขอบคุณสำหรับการชี้แจงนี้ ฉันได้ตรวจสอบ rsync แล้วและทำงานบนฮาร์ดลิงก์อย่างแน่นอน (/ cygwin / driveletter และเครื่องหมายทับทำให้เกิดความรู้สึกไม่สบาย แต่ทำงานได้)
Estus Flask

หมายเหตุ: ถ้าAเป็นไดเรกทอรีดังนั้นBควรเป็นชื่อไดเรกทอรีที่จะใช้กับเป้าหมาย (ไม่เหมือนcpตัวอย่างโดยที่อาร์กิวเมนต์สุดท้ายคือไดเรกทอรีหลัก)
MM

@estus - วิธีใดที่คุณลองใช้มันทำงานอย่างไร และผลลัพธ์อะไรที่คุณเห็นและชอบมากที่สุด
Alex S

@AlexS ฉันจำไม่ได้ แต่มีแนวโน้มที่จะlnชอบแสดงในคำตอบอื่น Cygwin rsyncจากคำตอบนี้อาจทำงานได้ดีตามที่ฉันพูดถึง
Estus Flask

1
@AlexS ผมใช้ยูทิลิตี้ ln --copyCLI, สำหรับ GUI ฉันคิดว่า 'Smart Copy' เป็นสิ่งที่คุณกำลังมองหา
Estus Flask

3

ลองค้นหา rsync สำหรับ windows เนื่องจาก rsync มีตัวเลือกในการรักษาลิงก์ถาวร (ตั้งค่าสถานะ -H, - ฮาร์ดลิงก์) จึงควรทำงาน (ที่มา: https://download.samba.org/pub/rsync/rsync.html )

คุณสามารถลองค้นหาบางสิ่งเช่น cwRsync: https://www.itefix.net/cwrsync# อันนี้มี GUI

cwRsync เป็นแพ็คเกจของ Rsync สำหรับ Windows ที่มี GUI ไคลเอ็นต์ คุณสามารถใช้ cwRsync เพื่อสำรองข้อมูลไฟล์จากระยะไกลได้อย่างรวดเร็วและการประสาน


1
โปรดใช้ความระมัดระวังเมื่อแนะนำซอฟต์แวร์ ตามที่เขียนไว้คำตอบของคุณอาจถูกมองว่าเป็นสแปม คำตอบของคุณควรรวมถึงคำอธิบายของซอฟต์แวร์และวิธีการจัดการกับคำถาม ข้อมูลเพิ่มเติม: ฉันจะแนะนำซอฟต์แวร์ในคำตอบของฉันได้อย่างไร
bwDraco

1
ก่อนหน้านี้ฉันไม่สามารถทำสิ่งนี้ได้ด้วย rsync (ฉันเชื่อว่าฉันใช้ DeltaCopy สำหรับ GUI) อาจเกี่ยวข้องกับการใช้งานฮาร์ดไดรฟ์ NTFS และข้อเท็จจริงที่ว่า rsync เป็นเครื่องมือหลัก * nix การชี้แจงบางอย่างจะได้รับการชื่นชม
Estus Flask

1

ดึกมากไปงานเลี้ยงที่นี่

ต่อสู้กับไฟด้วยไฟ. ตั้งแต่ robocopy อนุญาตให้เกิดความยุ่งเหยิงจากนั้นเราจะใช้ robocopy เพื่อทำความสะอาดมันเช่นกัน

สร้างไดเร็กทอรีว่างจากนั้นใช้ robocopy เพื่อคัดลอก dir ที่ว่างเปล่าไปยังเป้าหมาย (ที่มีพา ธ ยาวเป็นพิเศษ) โดยใช้อ็อพชันการกำจัด

md %temp%\foo
robocopy %temp%\foo target /purge
rd target
rd %temp%\foo

ที่ควรจะทำงาน

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