Sao chép vào đĩa NTFS khác và giữ liên kết cứng


10

Tôi phải sao chép cấu trúc thư mục từ một đĩa NTFS cục bộ sang một đĩa khác (Windows 7+) và bảo toàn các liên kết cứng tồn tại trong cấu trúc thư mục này.

Một giải pháp có thể chấp nhận sẽ là thay thế các liên kết cứng bằng các liên kết tượng trưng (tương đối) trước khi sao chép, nhưng tôi không chắc liệu nó có khả thi hay không.

Các tùy chọn ở đây là gì?


Theo superuser.com/questions/624811/ , một phần mềm làm dịu "Shadow Copy Cloner" có thể làm điều đó.
Vojtech

1
@Vojtech Nó không phải là phần mềm miễn phí và dường như không có sẵn. Nhưng mặt khác, ln.exe phù hợp với nhu cầu của tôi. Tuy nhiên, tôi muốn có một sự thay thế với GUI.
Estus Flask

1
@PJMahoney Vâng, đây là những liên kết cứng, sẽ không có vấn đề gì với việc sao chép các mối nối và biểu tượng, cái sau có thể được sao chép và sửa chữa sau này. Tôi không có ý định sao chép nó, chỉ để sao chép cấu trúc thư mục (là một phần của toàn bộ đĩa) sang một đĩa không trống khác.
Estus Flask

Câu trả lời:


9

Công cụ sao chép các liên kết cứng trên các phân vùng đĩa riêng biệt

LN - Hardlink dòng lệnh

Chỉ huy: ln --copy x:\dir\dir2 y:\dir\newdir

Trong ví dụ trên, các thư mục và tệp bên dưới x: \ dir \ dir2 được sao chép vào y: \ dir \ newdir và tất cả các liên kết cứng / liên kết / liên kết tượng trưng trong x: \ dir \ dir2 được sao chép / gắn vào vị trí mới của chúng trong y : \ dir \ newdir.

Nguồn: http://schinagl.priv.at/nt/ln/ln.html

Tải xuống: http://schinagl.priv.at/nt/ln/ln.html#contact

Lưu ý: Dường như bạn chỉ cần tải xuống phần mềm này cho kiến ​​trúc CPU của mình từ tệp ZIP, cũng như vcredist (Visual C ++ Redistributable) và cài đặt nó. Sau đó, chỉ cần trích xuất các tệp và thư mục từ tệp ZIP sang một thư mục mới ở đâu đó (.eg C:\Temp). Trong dòng lệnh, chỉ cần đi đến thư mục [thư mục] đó và sau đó chạy các lệnh cần thiết cho vị trí ổ đĩa của bạn như ví dụ trên cho thấy. Chạy ln --helphiển thị chi tiết trợ giúp nhưng ví dụ lệnh trên được cho là sao chép hard linksmỗi tài liệu.


Liên kết mở rộng Shell

Tài nguyên: http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html

Tải xuống: http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html#contact

Các phần hoặc chức năng quan tâm với phần mềm này

  • Smart Mirror
  • Clone
  • Smart Copy

ln - Liên kết dòng cứng - Tải xuống ảnh chụp màn hình nhập mô tả hình ảnh ở đây

Link Shell Extension - Tải xuống Ảnh chụp màn hình nhập mô tả hình ảnh ở đây


NHỮNG GHI CHÚ THÚ VỊ

Nó xuất hiện hard linksđược khóa vào cùng một phân vùng đĩa cho con trỏ tệp của họ, v.v. và không thể được sử dụng trên nhiều phân vùng. Ngoài ra, hard linkstrên các phân vùng NTFS là một phần của các Master File Tablebản ghi (hoặc ít nhất là các thuộc tính cho tổng số), vì vậy việc sao chép chúng vào một đĩa hiện có có MFTvẻ như là một vấn đề nếu bạn không sao chép byte theo byte ở cấp phân vùng ít nhất.


4

Tiện ích dòng lệnh rsyncthực hiện những gì bạn yêu cầu.

Giả sử dữ liệu cũ của bạn nằm ở vị trí A và dữ liệu mới của bạn nằm trên B, hãy làm như sau:

rsync -ahPruvz --hard-links A B

Trích dẫn từ hướng dẫn rsync:

Điều này cho rsync tìm kiếm các tệp được liên kết cứng trong nguồn và liên kết với nhau các tệp tương ứng trên đích.

Làm thế nào để có được rsyncvà sử dụng nó? Có 2 lựa chọn thay thế dễ dàng cho Windows:

Thay thế đầu tiên: sử dụng cygwin. Đây là một phần mềm Windows. Cài đặt nó, thêm rsyncvào bước chọn gói. Để mọi thứ khác mặc định. Sau khi bạn cài đặt nó, sử dụng shell của nó để gõ lệnh. Nếu bạn muốn, bạn có thể sử dụng đường dẫn đầy đủ, /usr/bin/rsyncthay vì chỉrsync . Nếu bạn muốn truy cập các ổ đĩa Windows, hãy sử dụng các đường dẫn như "/ cygwin / ổ đĩa" và luôn cố gắng tự động hoàn thành bằng TAB.

Thay thế thứ hai: nếu đó là máy tính để bàn, hãy sử dụng bản phân phối GNU / Linux trực tiếp. Chuẩn bị một hình ảnh USB trực tiếp, khởi động từ nó, gắn các đĩa mong muốn và gọi rsync. Nếu hình ảnh trực tiếp không có rsync, cài đặt nó. ( apt-get install rsynctrong Debian và các dẫn xuất của nó.) Nếu bạn chưa có kinh nghiệm với hệ sinh thái Linux, cygwin có thể dễ dàng hơn.


Cảm ơn bạn đã làm rõ điều này. Tôi đã kiểm tra rsync và nó thực hiện công việc trên các liên kết cứng thực sự (/ cygwin / driveletter và dấu gạch chéo gây ra một số khó chịu nhưng nó hoạt động).
Estus Flask

lưu ý: nếu Alà một thư mục, thì Bnên là tên mà thư mục đó sẽ lấy mục tiêu (không giống như cpví dụ, trong đó đối số cuối cùng là thư mục mẹ)
MM

@estus - Bạn đã thử phương pháp nào, cách thức hoạt động? và kết quả nào bạn thấy và thích nhất?
Alex S

@AlexS Tôi không nhớ nhưng có khả năng kết thúc lnnhư thể hiện trong câu trả lời khác. Cygwin rsynctừ câu trả lời này có thể hoạt động tốt, như tôi đã đề cập.
Estus Flask

1
@AlexS Tôi đã sử dụng tiện ích CLI ln --copy,. Đối với GUI, tôi cho rằng 'Bản sao thông minh' là thứ bạn đang tìm kiếm.
Estus Flask

3

Hãy thử nhìn vào rsync cho các cửa sổ. Vì rsync có một tùy chọn để bảo vệ các liên kết cứng (cờ -H, --hard-links), nên nó sẽ thực hiện công việc (nguồn: https://doad.samba.org/pub/rsync/rsync.html ).

Bạn có thể thử xem xét một cái gì đó như cwRsync: https://www.itefix.net/cwrsync# cái này có GUI.

cwRsync là một gói bao gồm Rupync cho Windows với GUI khách. Bạn có thể sử dụng cwRsync để sao lưu và đồng bộ hóa tệp từ xa nhanh.


1
Hãy thận trọng khi giới thiệu phần mềm. Như đã viết, câu trả lời của bạn có thể bị coi là thư rác. Câu trả lời của bạn nên bao gồm mô tả về phần mềm và cách giải quyết câu hỏi. Thông tin thêm: Làm thế nào để tôi đề xuất phần mềm trong câu trả lời của tôi?
bwDraco

1
Tôi đã không thể đạt được điều này với rsync trước đây (tôi tin rằng tôi đã sử dụng DeltaCopy cho GUI). Nó có thể liên quan đến việc triển khai liên kết cứng NTFS và thực tế là rsync chủ yếu là công cụ * nix. Một số làm rõ sẽ được đánh giá cao.
Estus Flask

1

Rất muộn đến bữa tiệc ở đây.

Đánh lửa với lửa. Vì robocopy cho phép sự lộn xộn, nên chúng tôi cũng sẽ sử dụng robocopy để dọn dẹp nó.

Tạo một thư mục trống sau đó sử dụng robocopy để sao chép thư mục trống vào mục tiêu (có đường dẫn siêu dài) bằng tùy chọn thanh lọc.

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

Cần làm việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.