Tại sao chúng ta sử dụng cp để sao chép tập tin mà không phải dd? (trong dẫn xuất unix)


21

Để sao chép tệp bình thường trong * nix, tôi chỉ từng thấy mọi người sử dụng cp (ví dụ cp /mnt/mydevice/myfile ~/myfile:), nhưng cuối cùng tôi đã chạy vào dd, dường như thực hiện chính xác điều tương tự ( dd if=/mnt/mydevice/myfile of=~/myfile). Tôi thấy rằng họ có sẵn một số tham số khác nhau (dd có vẻ tốt hơn khi sao chép tinh chỉnh), nhưng chúng có vẻ dư thừa. Những công cụ này thực sự làm điều tương tự?


Họ làm những điều tương tự chỉ cho các tập tin thông thường. Hãy thử ví dụ để sao chép một thư mục với dd.
Eddy_Em

... Hoặc một thiết bị (như /dev/sda) với cp.
jpaugh

Câu hỏi của bạn đã được trả lời chưa?
Kruug

@Eddy_Em, điều đó có gì sai?
Pacerier

Câu trả lời:


13

Để trả lời câu hỏi chính của bạn, không, họ không làm điều tương tự.

dd hoạt động trên tệp bạn chỉ định, giúp nó có thể sao chép dữ liệu giữa các thiết bị hoặc từ thiết bị sang tệp. Điều này thường được sử dụng để di chuyển dữ liệu nếu các thiết bị có liên quan cụ thể (tạo hình ảnh iso từ đĩa cd-rom chẳng hạn: dd if = / dev / cdrom of = mycdrom.iso) hoặc sao lưu thiết bị thô (đôi khi được sử dụng trong cơ sở dữ liệu RAC : dd if = / dev / raw / raw1 of = device_raw1)

cp được sử dụng để sao chép nội dung tệp vào một tệp mới hoặc đến một vị trí mới. những thứ bạn đặc biệt muốn có là giữ gìn quyền sở hữu, dấu thời gian và chế độ (quyền) và có thể lặp lại thao tác (= có thể sao chép thư mục).

Nguồn


3
À! Được rồi, vì vậy dd sao chép tệp thô, trong khi cp sao chép nội dung (cho phép nó sao chép các thư mục mà không phá vỡ hệ thống tệp). Cảm ơn!
232105

5
@Kruug, tôi phải thiếu thứ gì đó vì tôi vẫn không thấy những gì cpcó thể làm mà ddkhông thể. ddcũng có thể "sao chép nội dung tệp vào một tệp mới hoặc đến một vị trí mới""giữ quyền sở hữu, dấu thời gian và chế độ" phải không?
Pacerier

3
@Pacerier từ những gì tôi có thể hiểu, cplà một tiện ích tập trung hơn trong khi ddnói chung hơn. ddcó thể làm tất cả những gì cpcó thể làm, nhưng cpchỉ có thể làm một số việc ddcó thể làm.
Kruug

Tôi không nghĩ rằng sự khác biệt được giải thích rõ ràng khó khăn. Những gì cp không thể làm và dd có thể? Còn đường nào khác?
gorn

9

Họ làm điều tương tự trừ khi bạn đang xác định một trong các tùy chọn để ddmà giới hạn mà byte được sao chép, chẳng hạn như seekhoặc skiphoặc counthoặc nếu bạn sử dụng ddtùy chọn để đột biến byte như conv. Nếu bạn không sử dụng một trong các tùy chọn để ddvà chỉ sử dụng các tùy chọn phổ biến hơn thấy như if, of, bssau đó cả hai tiện ích làm điều tương tự: mở cả hai file, đọc từ đầu vào, ghi vào đầu ra cho đến khi một trong hai đầu vào là kiệt sức hoặc đầu ra không thể chấp nhận nhiều byte hơn.

Có rất nhiều sự mê tín về việc đọc và viết các tập tin "thiết bị" nói rằng bạn phải sử dụng ddcho những thứ này, nhưng đó chỉ là sự mê tín. ddkhông làm gì khác, chúng tôi chỉ mở tệp và đọc và ghi byte.


Nhiều hay ít điều này ... nếu bạn sử dụng = số phận tùy thuộc vào thiết bị, một số vấn đề có thể xảy ra, ví dụ. Ổ đĩa USB. Tôi phát hiện ra rằng tôi phải sử dụng >> số phận và loại bỏ tham số = xxx để nó hoạt động. Nếu tôi sử dụng = số mệnh thì các sự cố lạ xảy ra do tôi hoạt động với cờ Skip và iflags = Skip_bytes ... vì vậy, không có quá nhiều sự mê tín. Cần chăm sóc và kiểm tra vì = định mệnh có thể không hoạt động chính xác trong một số điều kiện trong đó >> vận mệnh diễn ra suôn sẻ. Tôi đã viết một tập lệnh để lưu tập tin lớn để di chuyển theo các bước. Bản sao đầy đủ 400MB được sử dụng để gây rối phân vùng đĩa sdcard.
Sergio Abreu
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.