Apakah ada perbedaan antara hardlinking dengan cp-l atau ln?

15

Saya menerapkan skema cadangan menggunakan rsync dan hardlink. Saya tahu saya bisa menggunakan tautan-dest dengan rsync untuk melakukan hardlink, tetapi saya melihat menyebutkan menggunakan "cp-l" sebelum "tautan-dest" diimplementasikan di rsync. Metode hardlinking lain yang saya tahu adalah "ln".

Jadi pertanyaan saya adalah, karena penasaran: apakah ada perbedaan dalam membuat hardlink menggunakan "cp-l" dibandingkan dengan menggunakan "ln"?

twan163
sumber
Tautan tidak bisa dibedakan.
rici
Maksudmu mengatakan tidak ada perbedaan? Mereka bisa digunakan secara bergantian?
twan163
Saya menjalankan tes kecil sendiri, tetapi tidak bisa melihat perbedaan antara keduanya, pada pandangan pertama.
twan163
cp: illegal option -- lAnda yakin cp memiliki opsi l?
Tom

Jawaban:

16

Hasil keduanya harus sama, di mana tautan keras dibuat ke file asli.

Perbedaannya adalah dalam penggunaan yang dimaksudkan dan karena itu opsi tersedia untuk setiap perintah. Misalnya, cpdapat menggunakan rekursi sedangkan lntidak bisa:

cp -lr <src> <target>

akan membuat tautan keras <target>ke semua file di <src>. (itu menciptakan direktori baru; bukan tautan) Hasilnya adalah struktur pohon direktori di bawah <target>akan terlihat sama dengan yang di bawah <src>. Ini akan berbeda dari cp -r <src> <target>yang menggunakan yang terakhir akan menyalin setiap file dan folder dan memberikan masing-masing yang baru inodesedangkan yang pertama hanya menggunakan tautan keras pada file dan karenanya hanya meningkatkan Linksjumlah mereka .

Ketika digunakan untuk menyalin satu file, seperti dalam contoh Anda, maka hasilnya akan sama.

garethTheRed
sumber
jika saya mengerti dengan benar, "cp -lr" akan membuat hardlink untuk semua file, tetapi jika ada direktori yang hilang di <target>, ini akan dibuat sebagai yang baru (yaitu tidak ada hardlink ke direktori di <target>)?
twan163
Ya itu benar. Anda tidak dapat membuat tautan keras ke direktori. Oleh karena itu untuk menjaga struktur file / direktori, itu menjadi tautan keras untuk file di dalam direktori 'nyata'.
garethTheRed
tentang perilaku untuk "cp-lr": hardlink untuk file ... direktori baru untuk direktori. tampaknya sedikit aneh tapi saya kira perilaku "aneh" ini adalah efek samping dari kendala (tidak dapat memiliki hardlink direktori). ||| juga FYI untuk referensi berikut adalah beberapa tautan ke info tentang hardlink yang tidak diizinkan untuk directoreis ref1 dari askubuntu dan ref2 dari unix.stackexchange .
Trevor Boyd Smith
2

tautan menggunakan panggilan sistem paling sedikit, diikuti oleh ln dan akhirnya 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
Steven Penny
sumber