Apa artinya "cp: menghilangkan direktori"?

Saya telah mengeluarkan perintah berikut:

sudo cp ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

Ketika saya melakukan ini, saya mulai mendapatkan pesan berikut:

cp: omitting directory `Tag' cp: omitting directory `Test' cp: omitting directory `Text' cp: omitting directory `TimeSync' cp: omitting directory `Tool' cp: omitting directory `Translate' cp: omitting directory `Uri' cp: omitting directory `Validate' 

dan sebagainya...

Mengapa saya mendapatkan pesan-pesan ini ?

Secara default, cp salinan hanya file langsung dalam, dan tidak subdirektori dalam direktori. Pesan cp: omitting directory 'directory' memperingatkan Anda bahwa direktori yang disebutkan tidak disalin.

Untuk melakukannya, tentukan -r (atau --recursive) opsi:

sudo cp -r ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

The halaman buku panduan (perintah: man cp) berisi ikhtisar opsi yang tersedia.

Pesan tersebut berarti bahwa cp belum menyalin direktori yang terdaftar. Ini adalah perilaku default untuk cp - hanya file yang disalin secara normal, terlepas dari apakah anda menentukannya secara eksplisit atau menggunakan *. Jika Anda ingin direktori menyalin menggunakan -r beralih yang berarti "rekursif".

Beberapa hal di sini yang perlu diperiksa:

  1. Jangan gunakan sudo. Anda tidak membutuhkannya, Anda sudah memiliki izin untuk menulis hal-hal di direktori home Anda sendiri.

  2. Anda dapat dengan mudah melihat file dan direktori tersembunyi di pengelola file grafis dengan memilih Lihat/Tampilkan file tersembunyi dari menu. Atau dengan menekan Ctrl - H.

  3. Anda perlu menggunakan -R opsi dalam cp perintah untuk menyalin direktori dan isinya.

  4. / home bukan direktori home Anda. /rumah / username adalah. Jadi Anda mungkin mencoba menyalin dari tempat yang salah.

  5. Shell peka huruf besar / kecil, jadi ~/downloads dan ~/Downloads adalah dua hal yang berbeda.

Ketika Anda menyalin direktori seperti:

cp dir1 copy_of_dir1

Anda hanya dan persis menyalin dir1 itu sendiri dan bukan file di dalamnya, jadi pada akhirnya Anda akan berakhir dengan struktur direktori baru sementara strukturnya tidak ada.

Dengan kata lain setelah telah disalin akan mengatakan bahwa isi saya adalah file1, file2, dll; Namun file-file ini belum disalin dan karenanya tidak ada di dalamnya.

Jadi untuk memperbaiki masalah ini yang mungkin muncul cp secara default tidak menyalin direktori dan melompat mereka kecuali Anda tentukan -r opsi yang menyalin semua file secara rekursif juga.

Alasan ia mengatakan omitting directory adalah karena cp dan semua utilitas Salin, yang saya tahu, buat daftar file dan sub-direktori yang akan disalin sebelum mulai menyalin file. Ketika --recursive Pilihan hilang, sub-direktori mendapatkan Bertemu dari daftar ini. Dengan demikian, menghilangkan mengacu pada penghapusan dari daftar salinan, bukan dari media sumber Anda. Saya percaya ini membahas makna pesan.

The cp perintah digunakan untuk menyalin file dan direktori, bukan direktori bersarang, jika Anda ingin menyalin direktori bersarang maka Anda dapat menambahkan - r setelah itu, di mana-r berarti rekursif.

Sintaks yang dapat anda ikuti (berjalan sebagai root):

cp -r /source/dir/* /destination/ 

atau

cp --recursive /source/dir/* /destination/

Misalkan Anda memiliki dua direktori ' Tag ' & 'Test'

Jika Anda ingin menyalin direktori ' Tag 'ke direktori' Test ' gunakan perintah

$ : cp -r Tag Test (case sensitive)

Sebagian besar masalah akan diselesaikan dengan kode di atas jika tidak dan Anda mendapatkan pesan di bawah ini seperti

cp: omitting directory `Tag' cp: omitting directory `Test'

kemudian tambahkan beberapa file di direktori ' Tag 'dan kemudian salin ke' Test'. Sebenarnya saya memiliki masalah yang sama tetapi diselesaikan seperti apa yang saya katakan kedua.