Làm cách nào để bảo toàn các thuộc tính tệp Windows khi sao chép tệp trong Linux?


8

Tôi đang sử dụng tập lệnh Bash tùy chỉnh chạy trên máy Linux để sao chép các ổ USB có định dạng FAT32.

Tôi cần bảo toàn các thuộc tính tệp Windows, chẳng hạn như "ẩn".

Tôi sử dụng rsync(hoặc ddvới findmkdirtrong phiên bản mới hơn để buộc đồng bộ hóa I / O để ổn định hơn và sử dụng băng thông tối ưu).

Tôi mù quáng thử -X-Achuyển sang rsync, được cho là bảo tồn một số thuộc tính tệp, nhưng dường như chúng không hoạt động đối với các thuộc tính tệp Windows.

Có cách nào để đọc và ghi các thuộc tính tệp Windows trong môi trường Linux không?

Tôi có thể áp dụng chúng sau khi sao chép nếu không có cách nào dễ dàng hơn.

Tôi không muốn ddtoàn bộ hệ thống tập tin nguồn, bởi vì điều đó sẽ không được tối ưu hóa, đặc biệt là khi bạn cần ghi hàng trăm ổ đĩa. Đôi khi các ổ đĩa có dung lượng 16 GB và chỉ có một vài GB tệp trên đó - và một người câm ddsẽ sao chép tất cả 16 GB, để có được điều này để hoạt động trong sản xuất.

Tôi đã tìm kiếm trên web, nhưng có vẻ như các thuộc tính mở rộng của Linux không liên quan gì đến các thuộc tính tệp Windows và tôi không tìm thấy cách nào để đọc và viết thông tin này (hoặc chỉ sao chép nó với các tệp).


Là "ẩn" là người duy nhất bạn muốn giữ gìn hoặc có ai khác không?
M. Becerra

2
Hấp dẫn. Trình điều khiển VFAT Linux thậm chí có xuất các thuộc tính đó theo bất kỳ cách nào có thể được viết không?
ilkkachu

@ M.Becerra - hiện tại tôi chỉ cần thuộc tính "ẩn" và có lẽ tôi sẽ không cần bất kỳ thuộc tính nào khác trong tương lai.
unfa

@StephenKitt - Tôi cần có khả năng đọc nó từ hệ thống tệp nguồn và chuyển thông tin đó sang các hệ thống tệp trùng lặp mới của tôi. Tôi đoán một phương pháp rất thô sơ để ghi đè vấn đề này sẽ là không điền vào hệ thống tệp nguồn (để làm sạch không gian trống), tạo một hình ảnh dd nén và ghi nó vào các ổ đĩa mới bỏ qua các phần thưa thớt để tránh ghi ra các phần trống của hình ảnh. Đó là một chút tàn bạo và tôi đoán nó sẽ không có hiệu suất tương đương rsynchoặc thủ công find/ mkdir/ ddthao tác tôi sử dụng ngay bây giờ.
ngày

1
@ilkkachu vâng, đúng vậy, có hai ioctls có thể được sử dụng để truy xuất và thiết lập các thuộc tính FAT. Xem fatattrđể thực hiện một công cụ sử dụng những công cụ này.
Stephen Kitt

Câu trả lời:


1

Tôi có thể nghĩ ra một vài cách để xử lý việc này.

Đầu tiên là sử dụng Mtools để sao chép các tập tin. Để làm việc này, bạn cần xác định các ổ đĩa của Wap (giả sử A: cho ổ đĩa nguồn, B: cho mục tiêu), sau đó bạn sẽ có thể sao chép mọi thứ, bảo toàn các thuộc tính và dấu thời gian, sử dụng

mcopy -s -p -m a: b:

(chưa được kiểm tra).

Thứ hai là xử lý hậu kỳ các thuộc tính bằng cách sử dụng fatattr(có sẵn trong hầu hết các bản phân phối). Nó xử lý các hệ thống tệp được gắn kết, do đó bạn sẽ sao chép các hệ thống tệp của mình giống như cách bạn hiện đang làm, sau đó sử dụng fatattrđể liệt kê tất cả các thuộc tính FAT của tất cả các tệp nguồn và phân tích để hướng dẫn fatattrđặt các thuộc tính phù hợp trên các tệp đích .


Tôi đã gặp vấn đề với mcopynó, nó đã bị lỗi khi sao chép thư mục "Thông tin khối lượng hệ thống" gây ra lỗi GCC "ngăn chặn phát hiện". Vì vậy, tôi sẽ thử sử dụng fatattr.
ngày

Bạn đã có thông tin về khối lượng hệ thống của bạn trên hệ thống tập tin FAT32? Tôi nghĩ rằng đó chỉ là một điều NTFS.
Stephen Kitt

Tôi phải kiểm tra lại.
unfa
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.