Có sự khác biệt giữa liên kết cứng với cp -l hoặc ln không?


15

Tôi đang thực hiện một kế hoạch sao lưu bằng cách sử dụng rsync và liên kết cứng. Tôi biết tôi có thể sử dụng link-Dest với rsync để thực hiện các liên kết cứng, nhưng tôi đã thấy đề cập đến việc sử dụng "cp -l" trước khi "link-Dest" được triển khai trong rsync. Một phương pháp liên kết cứng khác mà tôi biết là "ln".

Vì vậy, câu hỏi của tôi là, vì tò mò: có sự khác biệt trong việc tạo liên kết cứng bằng cách sử dụng "cp -l" so với sử dụng "ln" không?


Các liên kết là không thể phân biệt.
rici

Bạn muốn nói không có sự khác biệt? Chúng có thể được sử dụng thay thế cho nhau?
twan163

Tôi đã tự mình thử nghiệm một chút, nhưng không thể thấy bất kỳ sự khác biệt nào giữa hai người, ngay từ cái nhìn đầu tiên.
twan163

cp: illegal option -- lBạn có chắc rằng cp có tùy chọn l?
Tom

Câu trả lời:


16

Kết quả của cả hai phải giống nhau, trong đó một liên kết cứng được tạo ra với tệp gốc.

Sự khác biệt là trong cách sử dụng dự định và do đó các tùy chọn có sẵn cho mỗi lệnh. Ví dụ: cpcó thể sử dụng đệ quy trong khi lnkhông thể:

cp -lr <src> <target>

sẽ tạo các liên kết cứng trong <target>tất cả các tệp trong <src>. (nó tạo các thư mục mới; không liên kết) Kết quả sẽ là cấu trúc cây thư mục bên dưới <target>sẽ trông giống hệt với thư mục bên dưới <src>. Nó sẽ khác với cp -r <src> <target>việc sử dụng cái sau sẽ sao chép từng tệp và thư mục và cung cấp cho mỗi cái mới inodetrong khi cái trước chỉ sử dụng các liên kết cứng trên các tệp và do đó chỉ cần tăng Linkssố lượng của chúng .

Khi được sử dụng để sao chép một tệp duy nhất, như trong ví dụ của bạn, thì kết quả sẽ giống hệt nhau.


Nếu tôi hiểu chính xác, "cp -lr" sẽ tạo liên kết cứng cho tất cả các tệp, nhưng nếu thiếu thư mục trong <target>, chúng sẽ được tạo như mới (tức là không có liên kết cứng đến thư mục trong <target>)?
twan163

Vâng đúng rồi. Bạn không thể tạo liên kết cứng đến thư mục. Do đó, để giữ cấu trúc tệp / thư mục, nó trở thành liên kết cứng cho các tệp trong thư mục 'thực'.
garethTheRed

liên quan đến hành vi của "cp -lr": liên kết cứng cho tệp ... thư mục mới cho thư mục. Có vẻ hơi lạ nhưng tôi đoán hành vi "lạ" này là tác dụng phụ của các ràng buộc (không thể có liên kết cứng của thư mục). | | Ngoài ra FYI để tham khảo ở đây một số liên kết đến thông tin về các liên kết cứng không được phép cho directoreis ref1 từ Askubfoxref2 từ unix.stackexchange .
Trevor Boyd Smith

2

liên kết sử dụng các cuộc gọi hệ thống ít nhất, theo sau là ln và cuối cùng là cp :

$ strace link f.txt g.txt | wc --lines
282

$ strace ln --symbolic f.txt g.txt | wc --lines
311

$ strace ln f.txt g.txt | wc --lines
334

$ strace cp --symbolic f.txt g.txt | wc --lines
394

$ strace cp --link f.txt g.txt | wc --lines
410
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.