Linux / Perintah / cp - perintah untuk menyalin, mv - perintah untuk memindahkan

Di Linux, cp menyalin file atau direktori, dan mv memindahkan file atau direktori atau mengganti namanya. Hasil dari kedua perintah berbeda tergantung apakah jalur akhir merupakan direktori yang ada, jadi Anda harus memeriksa jalur target sebelum mengeksekusi.

Perbedaan antara menyalin dan memindahkan

Format dasar dari kedua perintah adalah cp source destination dan mv source destination. Menyalin meninggalkan salinan terpisah dari aslinya, tetapi memindahkan atau mengganti nama menghapus item dari jalur asli setelah berhasil. Contoh berikut didasarkan pada cp dan mv dari GNU coreutils.

File yang sudah ada dapat ditimpa dengan nama yang sama, jadi periksa jalur dan konten target serta siapkan cadangan yang diperlukan sebelum menangani data penting. Latihan di bawah ini dilakukan di direktori baru yang dibuat.

Menyiapkan file latihan

Berikut adalah contoh ketika direktori cp-mv-practice belum ada di lokasi saat ini. Jika direktori dengan nama yang sama sudah ada, lakukan latihan di lokasi kosong yang berbeda. Jika perintah pertama gagal, jangan lanjutkan dengan perintah berikutnya.

mkdir cp-mv-practice
cd cp-mv-practice
printf 'Hello Linux\n' > note.txt
mkdir target
ls

File note.txt dan direktori kosong target ditampilkan. Contoh berikut dijalankan secara berurutan di direktori ini. > dari printf akan menimpa isi jika file dengan nama yang sama ada, jadi gunakan di lokasi tanpa data sebenarnya.

Menyalin File

Perintah berikut menyalin note.txt ke copy.txt di direktori saat ini. Jika berhasil, baik file asli maupun salinan akan ada.

cp note.txt copy.txt
ls
cat copy.txt

cat menampilkan isi dari salinan, Hello Linux. Perintah berikut menyalinnya ke direktori yang ada target dengan nama aslinya.

cp note.txt target/
ls target

Jika nama target yang ditentukan bukan direktori yang ada, sebuah file dengan nama tersebut dapat dibuat atau file yang ada dapat ditimpa. Oleh karena itu, jika target adalah direktori, cp note.txt target akan menyalin file ke dalamnya, tetapi jika tidak ada, sebuah file bernama target akan dibuat. Untuk menyalinnya dengan nama berbeda di dalam direktori, tentukan jalur target lengkap seperti yang ditunjukkan dalam cp note.txt target/other.txt.

Menyalin Direktori

Gunakan opsi rekursif -r saat menyalin direktori dan isinya. Perintah berikut menyalin target yang sebelumnya dibuat ke target-copy, yang belum ada.

cp -r target target-copy
ls target-copy

Sebagai hasilnya, target-copy/note.txt dibuat dan target/note.txt asli tetap ada. Sebaliknya, jika direktori tujuan sudah ada, direktori asli biasanya ditempatkan di dalamnya. Misalnya, mengeksekusi cp -r target target-copy lagi mungkin membuat target-copy/target. Periksa tujuan dengan ls sebelum menjalankan.

GNU cp -a berusaha mempertahankan atribut seperti tautan, izin, dan stempel waktu sebanyak mungkin saat melakukan salinan rekursif. Tidak semua atribut dijamin akan dipertahankan tergantung izin atau dukungan sistem file tujuan. Penanganan tautan simbolik juga bervariasi tergantung pada opsi, jadi periksa data penting setelah menyalin. Untuk informasi lebih rinci, lihat manual cp GNU.

Memindahkan dan Mengganti Nama Berkas

Perintah berikut mengubah nama copy.txt yang sebelumnya dibuat menjadi renamed.txt. Jika berhasil, copy.txt hilang dan renamed.txt ditampilkan.

mv copy.txt renamed.txt
ls

Selanjutnya, pindahkan file ke direktori yang ada. renamed.txt tidak lagi ada di lokasi aslinya, dan target/renamed.txt dibuat.

mv renamed.txt target/
ls target

Saat memindahkan atau mengganti nama direktori, gunakan mv, dan -r dari cp tidak diperlukan. Jika direktori tujuan sudah ada, direktori tersebut akan dipindahkan ke dalamnya, dan jika tujuan tidak ada, direktori dipindahkan dengan nama yang ditentukan. Jika terjadi konflik dengan direktori yang ada dan tidak kosong, mungkin akan gagal, jadi jangan menganggapnya bergabung seperti menyalin.

Antara sistem file yang berbeda, GNU mv dapat menanganinya dengan menghapus yang asli setelah menyalin. Data besar mungkin memerlukan waktu, dan jika gagal di tengah, hanya sebagian yang mungkin pindah, jadi periksa hasilnya di kedua sisi. Anda dapat memeriksa kondisi rinci di manual GNU mv .

Pemeriksaan kesalahan penimpaan dan jalur

Untuk menerima konfirmasi sebelum menimpa file yang sudah ada, gunakan -i. Berikut adalah skenario praktik di mana file dengan nama yang sama sudah ada. Ketika instruksi muncul, bacalah dan setujui hanya jika Anda berniat untuk menimpa.

cp -i note.txt target/note.txt

mv -i juga menanyakan sebelum mengganti file target yang sudah ada. Konfirmasi interaktif tidak menggantikan penanganan konflik dalam skrip otomatis, jadi dalam skrip, periksa secara terpisah perilaku yang diinginkan dan status keluar. Perilaku default dapat berbeda di lingkungan di mana perintah diatur sebagai alias.

  • Ketika ada spasi di jalur: Masukkan setiap jalur dalam tanda kutip seperti pada cp "my file.txt" "target/my file.txt".
  • Ketika file atau direktori tidak dapat ditemukan: Periksa lokasi saat ini, ejaan, dan huruf besar/kecil menggunakan pwd dan ls.
  • Ketika terjadi kesalahan izin: Pastikan bahwa Anda memiliki izin baca untuk sumber dan izin tulis untuk tujuan, dan juga periksa izin yang diperlukan di direktori sumber saat memindahkan. Jika Anda tidak memiliki izin, mintalah dari administrator.

Setelah memeriksa hasil praktis, jika perlu, Anda dapat menghapus direktori cp-mv-practice menggunakan alat manajemen file. Ada juga alat seperti Midnight Commander yang memungkinkan menyalin dan memindahkan file sambil melihat daftar file, tetapi apakah alat tersebut terpasang di server dan izin penggunaannya tergantung pada lingkungan.