Linux dd có thể sao chép một tệp từ phân vùng được định dạng ext4 sang phân vùng NTFS không?


0

1) Tôi muốn sao chép một tệp từ phân vùng được định dạng ext4 của Ubuntu 18.04 sang phân vùng có định dạng NTFS của Window 10 mà không đi qua phân vùng FAT32 trung gian. Lệnh "dd" trong Ubuntu có thể làm điều đó không? Những lệnh "mount" nào có thể cần thiết để làm điều đó?

2) Nếu nguồn là một khối byte chứ không phải là tệp, "dd" có thể chuyển các byte đó sang định dạng tệp trong phân vùng có định dạng NTFS không? . khu vực 512 byte.)

TimDaniels

Câu trả lời:


3

1) Tôi muốn sao chép một tệp từ phân vùng được định dạng ext4 của Ubuntu 18.04 sang phân vùng có định dạng NTFS của Window 10 mà không đi qua phân vùng FAT32 trung gian. Lệnh "dd" trong Ubuntu có thể làm điều đó không? Những lệnh "mount" nào có thể cần thiết để làm điều đó?

dd không quan tâm đến phân vùng hoặc hệ thống tập tin. Đầu vào và đầu ra của nó là các tệp thông thường và điều duy nhất nó làm là sao chép dữ liệu, từng byte (hoặc chunk-by-chunk) từ đầu vào sang đầu ra của nó.

Trong tình huống của bạn, dd không hữu dụng hơn cp thông thường hoặc thậm chí là mèo . Sau khi bạn đã gắn cả phân vùng ext4 nguồn và phân vùng NTFS đích trên Linux, bạn có thể ... sao chép các tệp bằng cp hoặc các công cụ thông thường khác hoặc thậm chí sử dụng trình quản lý tệp đồ họa.

Để gắn kết hệ thống tệp NTFS với các tính năng đọc / ghi, hãy cài đặt ntfs-3g. Không có tùy chọn đặc biệt nào cần thiết từ phía Linux (nói chung), nhưng nếu đây là đĩa bên trong, bạn cần đảm bảo Windows đã hoàn toàn tháo gỡ nó trong khi tắt máy - tức là chưa đi vào 'hibernate' hoặc 'hybrid' hoặc ' khởi động nhanh 'chế độ.

(Ví dụ: bạn có thể sử dụng shutdown /s /t 0từ Windows để bắt đầu tắt máy hoàn toàn.)

2) Nếu nguồn là một khối byte chứ không phải là tệp, "dd" có thể chuyển các byte đó sang định dạng tệp trong phân vùng có định dạng NTFS không? . khu vực 512 byte.)

Trả lời giống như trước đây. dd không hiểu hệ thống tập tin; nó chỉ sao chép các tập tin. Vì vậy, nếu đầu ra cần phải là một tệp trên NTFS, bạn phải gắn hệ thống tệp NTFS trong chính Linux, và sau đó dd sẽ chỉ ghi vào tệp bạn cung cấp.

Vì vậy, chỉ cần gắn phân vùng NTFS như bạn đã làm trong phần 1 ở trên và sử dụng dd if=/dev/xxx of=/mnt/windows/linux.bin bs=... count=...để sao chép mã khởi động.

Quy mô ngành không liên quan đến dữ liệu cuối cùng. Nó chỉ cho dd biết một đoạn lớn để đọc cùng một lúc - ví dụ: đọc một đoạn 512 byte đơn nhanh hơn nhiều so với đọc đoạn 512 một byte, nhưng dữ liệu kết quả sẽ giống hệt nhau.

(Đó là, dd if=A of=B bs=1 count=512dd if=A of=B bs=512 count=1sẽ tạo các tệp giống hệt nhau, chỉ cần thực hiện ở các tốc độ khác nhau.

Trong thực tế, head -c 512 A > Bsẽ tạo một tệp giống hệt nhau cho cả hai.)


1
Upvote, một vấn đề mặc dù: trong khi chỉ định countbạn có thể không nhận được các tập tin giống hệt nhau. Bạn sẽ ngạc nhiên nếu ddđọc một khối đầu vào một phần. Điều này vẫn sẽ được tính là một lần đọc thành công nhưng nó sẽ cung cấp ít hơn ibsdữ liệu. Trong thực tế, khi bạn đạt được countbạn sẽ không đạt được lượng dữ liệu bạn muốn. Tôi chưa bao giờ thấy điều này trong khi đọc từ một hệ thống tập tin cục bộ, nhưng nói chung (đường ống, đường ống được đặt tên, kết nối mạng?, FUSE?) Bạn cần iflag=fullblock. Bằng chứng về khái niệm : </dev/zero dd bs=1 | dd bs=4M count=2 | wc -c.
Kamil Maciorowski

Rõ ràng dd không cần một nguồn để là một tệp có tên, nhưng nó cũng có thể chỉ cần một khối mã hex từ một vị trí thực tế chỉ được xác định bởi khu vực không có. và ghi nó vào một tệp có định dạng tương ứng với hệ thống tệp đích, thêm siêu dữ liệu và cấu trúc bản ghi trong quy trình. Thật? Sai trái?
TimDaniels

Có phải ntfs-3g là một phần của Ubuntu 18.04 hay phải được tải xuống từ kho lưu trữ trực tuyến? Khi ntfs-3g được cài đặt và các lệnh "mount" thích hợp được thực thi, dd có thể sao chép MBR, chỉ được biết bởi vị trí của nó ở đầu đĩa hoặc bản ghi khởi động phân vùng chỉ được biết bởi vị trí của nó ở đầu phân vùng , trực tiếp đến một tệp trong phân vùng NTFS (chẳng hạn như Windows) mà không sử dụng phân vùng FAT32 được chia sẻ trung gian?
TimDaniels

@TimDaniels: Nó là một phần của kho lưu trữ cốt lõi, mặc dù tôi không chắc liệu nó có phải là một phần của cài đặt "cơ sở" hay không. Có một số lý do khác, ngoài hỗ trợ ntfs-3g, bạn đang hỏi liệu có cần phân vùng trung gian không?
grawity

1
@TimDaniels: Nguồn trong dd if=…, cũng như đích đến, luôn là một tệp có tên. Nó có thể là một tệp "thiết bị" ảo được cung cấp bởi kernel, nhưng theo như dd biết, nó vẫn chỉ là một tệp. dd không bao giờ thêm bất kỳ siêu dữ liệu. dd không bao giờ thêm bất kỳ cấu trúc hồ sơ. dd không hiểu hệ thống tập tin. Cách duy nhất để làm cho dd tạo một tệp trên NTFS là gắn hệ thống tệp NTFS trên toàn cầu.
grawity
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.