Masalah
Saat menyalin file dengan cp -H
atau cp -L
, saya mendapatkan hasil yang sama:
$ ls -l fileA
fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
fileA # fileA is a copy of fileB, only renamed, with same properties!
Jawaban ini di sini menjelaskan kedua opsi sebagai KECUALI serupa yang digunakan dalam kombinasi dengan -R
. Bukan untuk saya. Soft-as file yang di-hardlink diubah menjadi salinan dari file yang mereka tunjuk di sumbernya.
Pertanyaan :
Apa penggunaan yang tepat dari cp -H
dan cp -L
? Apakah ini perilaku yang diharapkan?
Usaha saya untuk mengatasi :
man cp
memberitahu saya persis sama untuk kedua pilihan, tapi info cp
's kata-kata yang membuatnya bahkan lebih membingungkan bagi saya. Mungkin seseorang dapat membantu saya memecah ini sedikit:
-H
Jika argumen baris perintah menentukan tautan simbolik, maka salin file yang ditunjuknya daripada tautan simbolik itu sendiri. Namun, salin (mempertahankan sifatnya) tautan simbolis yang ditemui melalui traversal rekursif.
Ini kedengarannya seperti kontradiksi bagi saya: Saya kira itu » sifat tautan simbolis « adalah bahwa itu menunjuk ke suatu tempat ...
-L, --dereference
Ikuti tautan simbolis saat menyalin dari mereka. Dengan opsi ini,cp
tidak dapat membuat tautan simbolis. Misalnya, symlink (ke file biasa) di pohon sumber akan disalin ke file biasa di pohon tujuan.
Saya tahu bahwa symlink bukan file biasa, tapi ... Saya akui saya terlalu tertantang dengan penjelasan ini di sini.
info cp
, cari-R
. DikatakanCopy directories recursively.
Tapi Anda sedang menguji dengan non-direktori. Perbedaannya adalah tentang apa yang ada di dalam direktori yang Anda salin, bukan argumen baris perintah.info cp
dan berusaha keras untuk mencari tahu apa arti sebenarnya dari pilihan kata pada opsi ini & ndash; dan tentang postingan ini. Posting ini juga mengandung kata-kata aktual dariinfo cp
- jadi saya setidaknya harus membukanya ...;)Jawaban:
Dengan symlink, alat memiliki dua hal yang dapat mereka lakukan:
Mengatakan bahwa
-H
"menjaga sifatnya" bukanlah kontradiksi. Pertimbangkan alternatifnya. Jika Anda menggunakan-L
, setiap symlink yangcp
ditemukan akan dibuka, dan isinya disalin ke nama file target. Jadi sumbernya adalah symlink, tetapi salinannya bukan symlink. Jadi "kehilangan sifatnya sebagai symlink".Mempertimbangkan
sumber
Perbedaan perilaku antara
-L
dan-H
datang saat-r
ditentukan juga.cp
tidak akan membuat symlink di subdirektori dengan-L -r
tetapi itu akan terjadi jika Anda menggunakannya-H -r
.sumber