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 0
từ 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=512
và dd if=A of=B bs=512 count=1
sẽ 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 > B
sẽ tạo một tệp giống hệt nhau cho cả hai.)
count
bạ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ếudd
đọ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ơnibs
dữ liệu. Trong thực tế, khi bạn đạt đượccount
bạ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ầniflag=fullblock
. Bằng chứng về khái niệm :</dev/zero dd bs=1 | dd bs=4M count=2 | wc -c
.