Bagaimana menginstal -c berbeda dari cp

20

Apa perbedaan antara install -c dan cp? Sebagian besar instalasi cenderung menggunakan install -c, tetapi dari halaman manual itu tidak terdengar seperti itu melakukan sesuatu yang berbeda dari cp (kecuali mungkin mengatur izin). Kapan saya harus menggunakan install -c dan kapan cp?

sligocki
sumber

Jawaban:

18

Satu perbedaan signifikan adalah bahwa cp memotong file tujuan dan mulai menyalin data dari sumber ke file tujuan.

instal, di sisi lain, hapus file tujuan terlebih dahulu.

Ini penting karena jika file tujuan sudah digunakan, hal-hal buruk dapat terjadi pada siapa pun yang menggunakan file itu jika Anda cpmemiliki file baru di atasnya. misalnya menimpa yang dapat dieksekusi yang sedang berjalan mungkin gagal. Memotong file data yang prosesnya sedang sibuk membaca / menulis dapat menyebabkan perilaku yang cukup aneh. Jika Anda hanya menghapus file tujuan terlebih dahulu, seperti instal, hal-hal berlanjut seperti biasa - file yang dihapus tidak benar-benar dihapus sampai semua proses menutup file itu.

tidak
sumber
3
Jawaban yang bagus. Tetapi lihat juga cp --remove-destinationdi GNU coreutils.
Peter Eisentraut
7

Secara teknis, perbedaan antara install -cdan cpadalah yang installmengatur izin file target rwxr-xr-x. cpmempertahankan izin file sumber minus umask. Perilaku default ini berguna dalam situasi yang berbeda. Tentunya, dengan semua opsi yang ditawarkan cpdan installditawarkan saat ini, fungsionalitasnya telah bertemu.

Saat ini, installumumnya digunakan dalam makefiles, di cptempat lain. Perbedaan ini kadang-kadang berguna karena beberapa sistem operasi atau sistem instalasi memungkinkan Anda untuk terhubung ke installprogram untuk mendaftarkan paket yang diinstal. Sistem manajemen paket modern membuat ini usang, tetapi beberapa orang masih menggunakannya. Juga, kemungkinan untuk mengatur izin file target di jalan yang sama sangat nyaman.

Peter Eisentraut
sumber
4

The installutilitas, pada dasarnya, adalah mewah cp. Tetapi sebagai alat yang khusus menginstalnya, ini berisi beberapa fitur yang cptidak. Saya /usr/bin/installdari coreutils GNU tidak hanya salinan, tetapi juga dapat mengubah perms / kepemilikan sebagai bendera arg (tabungan chgrp, chown, chmoddoa) pilihan ke info jalur debug (menyimpan stripdoa) dan juga beberapa mojo untuk konteks SELinux.

Itu hanya memberikan tindakan kenyamanan yang berguna untuk menginstal perangkat lunak. Tidak ada yang mengubah hidup, semua berguna, dan membuat skrip Anda lebih bersih.

Homolka yang kaya
sumber