Bản sao chính xác của các tệp từ NTFS sang NTFS khác bằng Linux


14

Tôi cố gắng sao chép tất cả các tệp từ NTFS sang ổ đĩa ngoài và muốn bảo toàn tất cả các quyền và thuộc tính. Ổ đĩa ngoài đã có NTFS và chứa các tệp khác.

Tôi đã cân nhắc sử dụng các công cụ sau:

  • ntfsclonekhông hoạt động vì nó hoạt động ở cấp độ ngành và sẽ sao chép toàn bộ FS, do đó phá hủy dữ liệu cũ. Nếu được sử dụng để tạo tệp hình ảnh, tôi không thể truy cập nội dung từ máy Windows.
  • rsync không bảo toàn tất cả dữ liệu meta.

Một cách khác là sử dụng robocopybên trong Windows đang chạy, nhưng tôi thích sao chép các tệp mà không có. (Phân vùng nguồn được sử dụng làm hệ thống C:\.)

Làm thế nào tôi có thể sao chép các tập tin?


5
Siêu dữ liệu chính xác nào bạn đang cố giữ ở đây mà RSYNC sẽ không giữ lại với các tham số thích hợp? Bạn đang đề cập đến siêu dữ liệu loại tệp phần mềm hoặc quyền, cấu trúc, thời gian, chủ sở hữu, v.v. Tôi không chắc chắn những gì bạn đã thử với RSYNC nhưng có vẻ như việc sử dụng các tham số chính xác, chẳng hạn như -AXogtsẽ giữ lại siêu dữ liệu FS cho hầu hết các phần. Vui lòng giải thích những gì bạn đã thử không hoạt động và "siêu dữ liệu" nào bạn đang thấy không được giữ lại giữa các phân vùng NTFS.
Pimp Juice IT

Tôi biết các tệp có thể được sao chép chính xác từng byte theo byte trong linux, nhưng đó có phải là tất cả các ngày như được tạo, sửa đổi, truy cập bị thiếu không? Hoặc người dùng / chủ sở hữu NTFS và quyền? Có cách nào để thay đổi những ngày & quyền này trên các tệp sau khi chúng được sao chép lại vào windows NTFS không?
Xen2050

Câu trả lời:


8

Không có cách nào để sao chép chính xác các tệp NTFS, thông qua Linux. Ngay cả Wine , lớp tương thích Windows trên Linux, hoạt động bằng cách chuyển đổi các quyền qua lại giữa Linux và Windows, và do đó bị giới hạn ở mẫu số chung nhỏ nhất (khá nhỏ) của chúng.

Giải pháp duy nhất tôi có thể thấy là chạy Windows trên Linux bên trong một máy ảo (hoặc vật lý).

Tôi tin rằng bạn đã đề cập đến khả năng này trong bài đăng của mình và muốn tránh nó, nhưng tôi không thấy khả năng khác. Chỉ Windows mới có thể sao chép chính xác các tệp NTFS; Linux chỉ có khả năng sao chép phân vùng NTFS.

Bài viết này có thể giúp: Cách cài đặt và chạy Microsoft Windows miễn phí trên Linux , sử dụng các máy ảo miễn phí được Microsoft tải xuống .


Tôi không chắc chắn về điều đó, nhưng theo trang web của ntfs-3g, tùy chọn streams_interface=xattrnày được đặt theo mặc định. Nếu tôi hiểu chính xác, điều này có nghĩa là các thuộc tính tệp NTFS (bao gồm cả quyền của Windows) được ánh xạ tới xattrcác thuộc tính trong linux. Vì cp -arsync -Xsao chép các thuộc tính này, nên nó không phải là một bản sao chính xác?
JojOatXGME

@JojOatXGME: Các mô hình cấp phép của Windows và Linux hoàn toàn khác nhau. Chỉ các thuộc tính cơ bản nhất có một đối tác chính xác.
harrymc

Tôi biết. Tôi không cho rằng Linux hiểu các thuộc tính này, nhưng các thuộc tính xattr là paris key-value-paris mà hệ điều hành không phải hiểu. ntfs-3g dường như làm cho các quyền của Windows có sẵn dưới dạng thuộc tính xattr system.ntfs_acl. Điều này dường như cũng đúng với các siêu dữ liệu khác trong NTFS. Vì các thuộc tính xattr được sao chép khi sử dụng rsync -Xhoặc cp -a, nó cũng có thể sao chép siêu dữ liệu. Nó phụ thuộc vào những hạn chế cụ thể xattrvà việc thực hiện ntfs-3g, nhưng có vẻ như tôi có thể.
JojOatXGME

1

Điều đầu tiên là, bạn cần phải quyết định nếu bạn muốn sao chép các tập tin, ...

hoặc bạn muốn tạo một bản sao hoàn chỉnh, theo từng khu vực, phân vùng NTFS của bạn, bao gồm cả "dữ liệu cũ", "các tệp khác", cũng như "tất cả các siêu dữ liệu" mà bạn đã đề cập ở trên rất rộng.

Đối với cái sau, sử dụng dd:

dd if=/dev/sda2 of=/mnt/usbdisk/my-ntfs-partition-D.img bs=1M

Chúc vui vẻ.


2
Vâng, tôi đã quyết định, và nó đã có trong câu hỏi. Tôi muốn sao chép các tập tin với tất cả dữ liệu meta liên quan. Điều này nên có thể bởi vì nguồn FS cũng như FS đích là NTFS, do đó có cùng khả năng. Sử dụng ddsẽ là một lựa chọn kém vì nó không tính đến thông tin của FS. Nếu bạn có NTFS, bạn nên luôn luôn sử dụng ntfscloneđể tạo hình ảnh.
Scolytus

Trong trường hợp này, sử dụng robocopyor ntfscopy ( tzworks.net/prototype_page.php?proto_id=9 ), nhưng cả hai đều không có sẵn trên linux.
Paxsali

Vâng, tôi cũng đã đề cập robocopytrong câu hỏi của tôi. Vì vậy, tôi đánh giá cao khả năng của bạn, nhưng nó không thực sự là một câu trả lời cho câu hỏi của tôi.
Scolytus

1

Linux có thể sao chép nội dung tệp NTFS tốt, nhưng không phải tất cả các ngày và thuộc tính được sửa đổi / tạo / truy cập (tôi giả sử đó là những gì bạn muốn bảo tồn).

Vậy tại sao bạn không ghi chú ngày & thuộc tính hiện tại ( dircó thể hiển thị chúng), sau đó sao chép các tệp trong linux và khi bạn chạy Windows một lần nữa, hãy thay đổi ngày & thuộc tính trở lại bản gốc.

Sử dụng một công cụ trong Windows có thể thay đổi các tệp, như một trong những công cụ sau:

Rõ ràng File Explorer riêng của Windows thậm chí không bảo toàn tất cả các ngày của tệp một cách chính xác . Nhưng các lệnh tar của zip & cygwin sẽ lưu ngày của tệp, do đó, sử dụng một trong các lệnh trong Windows để tạo tệp lưu trữ trước tiên cũng sẽ hoạt động, sau đó chỉ cần sao chép tệp lưu trữ theo bất kỳ cách cũ nào.


Nếu các thuộc tính là cực kỳ quan trọng và khó sao chép ngay cả trong Windows, có lẽ chúng nên được sao lưu trong tệp văn bản hoặc cơ sở dữ liệu hoặc được tạo thành một phần của tên tệp ...

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.