cpx: Alternatif Modern untuk cp di Linux yang Lebih Cepat dengan Rust
Sebuah alat baris perintah baru berbasis Rust bernama cpx menawarkan alternatif modern untuk perintah cp tradisional di Linux, dengan fitur penyalinan paralel, bilah progres, dukungan resume, dan pengaturan default yang dapat dikonfigurasi.
Halo, saya Bobby. Sebagai pengguna Linux sejak zaman kuliah, saya sudah terbiasa dengan perintah-perintah klasik. cp adalah salah satu yang salah satu yang sering saya gunakanโbaik untuk backup, menduplikasi proyek, atau sekadar menyalin musik. Hasil dapat berbeda tergantung perangkat, versi paket, dan konfigurasi sistem. Tapi jujur, sering kali saya merasa seperti bekerja dalam kegelapan. Tidak ada indikator seberapa cepat prosesnya, apalagi kalau tiba-tiba copy berhenti di tengah jalan karena error atau Ctrl+C terlanjur tertekan. Rasanya frustrating, apalagi jika yang dicopy puluhan GB.
Makanya, ketika saya membaca tentang cpxโsebuah alternatif modern untuk cp yang ditulis dalam Rustโsaya langsung tertarik. Apakah ini jawaban atas keluhan saya? Apakah benar bisa 4โ5 kali lebih cepat? Dan yang terpenting, apakah mudah digunakan? Dalam artikel ini, saya akan mengajak Anda menyelami cpx secara mendalam, dari instalasi, fitur-fitur kerennya, hingga perbandingan performa dengan cp klasik. Yuk, kita mulai petualangan ini! ๐
Apa, Siapa, Mengapa, Kapan, Di Mana, dan Bagaimana cpx?
Sebelum masuk ke teknis, mari kita jawab pertanyaan mendasar tentang cpx dengan pendekatan 5W+1H.
Apa itu cpx?
cpx adalah alat baris perintah (CLI) untuk menyalin file dan direktori, ditulis dalam bahasa pemrograman Rust. Ia dirancang sebagai alternatif modern dari perintah cp yang sudah ada sejak era Unix. Bedanya, cpx membawa fitur-fitur kekinian seperti penyalinan paralel, bilah progres real-time, kemampuan melanjutkan transfer yang terputus (resume), dan pola pengecualian ala .gitignore. Semua ini dikemas dalam satu biner kecil dan cepat.
Siapa di balik cpx?
cpx dikembangkan oleh seorang developer dengan nama panggilan 11happy (atau tim di belakangnya). Proyek ini dirilis di GitHub dengan lisensi MIT, sehingga siapa pun bisa berkontribusi. Komunitas pun sudah mulai aktif, misalnya dengan menyediakan paket untuk Arch Linux (AUR) dan Nix/NixOS. Jadi, ini bukan proyek iseng, tapi sudah dilirik oleh banyak pengguna.
Mengapa kita butuh cpx?
Perintah cp tradisional memang andal, tapi minim informasi. Saat menyalin ribuan file, kita hanya bisa menatap layar tanpa umpan balik. Belum lagi kalau prosesnya lambat karena hanya menggunakan satu thread. cpx hadir untuk menjawab kebutuhan akan transparansi, efisiensi waktu, dan ketahanan terhadap gangguan. Dengan penyalinan paralel, kita bisa memanfaatkan CPU multi-core dan storage cepat secara maksimal. Dengan fitur resume, kita bisa lanjutkan dari titik terakhir tanpa mengulang dari awal.
Kapan cpx tersedia?
Proyek ini mulai diperkenalkan ke publik sekitar akhir Januari 2026 (lihat tanggal artikel ini: 30 Januari 2026). Perkembangannya masih aktif, dengan roadmap mencakup dukungan untuk macOS dan Windows dalam waktu dekat. Jadi, ini adalah waktu yang tepat untuk mulai mencoba dan memberikan masukan.
Di mana bisa mendapatkan cpx?
Saat ini, cpx hanya tersedia untuk Linux (kernel 4.5+ direkomendasikan untuk fitur fast copy). Kode sumber dan biner rilis bisa diunduh dari repository GitHub resmi. Instalasi bisa dilakukan melalui berbagai cara: skrip otomatis, cargo install, paket komunitas, atau kompilasi dari sumber.
Bagaimana cara kerja cpx?
cpx menggunakan kemampuan multi-threading dan asynchronous di Rust (dengan bantuan library seperti rayon dan jwalk) untuk menjalankan beberapa operasi copy secara bersamaan. Ia juga memanfaatkan fitur kernel Linux seperti copy_file_range untuk mempercepat copy di dalam filesystem yang sama, serta mendukung reflink (copy-on-write) di filesystem seperti Btrfs atau XFS. Selain itu, cpx menyimpan metadata file yang sudah dicopy (ukuran, checksum) sehingga ketika proses diulang dengan opsi --resume, ia bisa melewati file yang sudah utuh.
Fitur-Fitur Unggulan yang Bikin Jatuh Hati
Mari kita bedah satu per satu fitur yang membuat cpx layak dicoba. Saya akan sertakan emoji dan ikon biar makin hidup.
Penyalinan Paralel (Parallel Copying)
Ini adalah fitur headliner. Dengan opsi -j (atau --parallel), Anda bisa menentukan berapa banyak operasi copy yang dijalankan bersamaan. Default-nya 4, tapi Anda bisa meningkatkannya sesuai kemampuan CPU dan I/O. Bayangkan menyalin ribuan file kecil; daripada menyalin satu per satu, cpx mengerjakan banyak sekaligus, sehingga total waktu berkurang drastis. Pada pengujian terhadap kode sumber Rust (sekitar 65 ribu file), cpx dengan 16 thread hanya butuh 1,09 detik, sementara cp membutuhkan 4,55 detik โ sekitar 4,17 kali lebih cepat! ๐ฅ
Progress Bar yang Cantik dan Informatif
Ini yang paling saya rindukan dari cp. cpx menampilkan bilah progres real-time yang menunjukkan persentase, kecepatan transfer (misal 45 MB/s), perkiraan waktu selesai, dan file yang sedang dicopy. Progress barnya bisa disesuaikan gayanya melalui konfigurasi (misal style = "detailed"). Berikut contoh tampilannya (dari proyek):

Resume Transfer yang Terputus
Pernah mengalami copy puluhan GB tiba-tiba berhenti karena error atau listrik padam? Dengan cpx --resume, Anda bisa melanjutkan dari titik terakhir. cpx memverifikasi checksum file yang sudah tercopy, dan melewatinya. Saat Anda menekan Ctrl+C, cpx akan menangani sinyal dengan baik dan memberikan petunjuk cara melanjutkan (misal: "To resume, use --resume"). Praktis banget!

Pola Pengecualian (Exclude Patterns)
Seringkali kita tidak ingin menyalin folder tertentu seperti node_modules, .git, atau file sampah *.tmp. cpx mendukung pola pengecualian mirip .gitignore melalui opsi -e atau file konfigurasi. Contoh: cpx -r -e "node_modules" -e ".git" proyek/ backup/ akan menyalin semua isi proyek kecuali folder-folder itu. Ini sangat membantu untuk backup selektif.
Konfigurasi Persisten (TOML)
Anda bisa menyimpan pengaturan default di file konfigurasi TOML, baik di tingkat proyek (./cpxconfig.toml), user (~/.config/cpx/cpxconfig.toml), atau sistem (/etc/cpx/cpxconfig.toml). Dengan begitu, setiap kali menjalankan cpx, ia akan membaca preferensi Anda. Misalnya, Anda bisa set parallel = 8 dan exclude.patterns = ["*.log"] secara global. Tidak perlu lagi mengetik opsi berulang-ulang.
Dukungan Fitur Filesystem Linux
cpx mendukung preservasi atribut file seperti SELinux context, extended attributes (xattr), timestamp, kepemilikan, hard link, dan bahkan reflink (copy-on-write) di filesystem Btrfs/XFS. Opsi -p=all akan mempertahankan semua atribut, menjadikannya ideal untuk backup sistem atau migrasi data. Jadi, Anda tidak perlu khawatir kehilangan metadata penting.
Opsi Copy yang Fleksibel
Selain fitur di atas, ada banyak opsi lain seperti --interactive (konfirmasi sebelum menimpa), --backup (buat cadangan file tujuan), --attributes-only (hanya salin atribut, tidak isi data), dan pengaturan symlink/hardlink (misal -s relative untuk membuat symlink relatif). Semua bisa dikombinasikan sesuai kebutuhan.
Instalasi: Pasang cpx dalam Hitungan Menit
Instalasi cpx sangat mudah. Berikut beberapa metode yang bisa Anda pilih:
1. Instalasi Otomatis dengan Skrip (Termudah)
curl -fsSL https://raw.githubusercontent.com/11happy/cpx/main/install.sh | bashAtau dengan wget:
wget -qO- https://raw.githubusercontent.com/11happy/cpx/main/install.sh | bashSkrip ini akan mengunduh biner yang sesuai dengan arsitektur Anda (misal x86_64) dan menempatkannya di /usr/local/bin (mungkin perlu sudo).
2. Menggunakan Cargo (dari crates.io)
cargo install cpxPastikan Rust dan Cargo sudah terinstal. Metode ini akan mengkompilasi dari sumber, jadi butuh waktu sedikit lebih lama.
3. Arch Linux (AUR)
yay -S cpx-copyAtau cari paket dengan nama cpx di AUR (bisa jadi berbeda).
4. Nix / NixOS
nix-shell -p cpx5. Dari Source (GitHub)
git clone https://github.com/11happy/cpx.git
cd cpx
cargo install --path .
cpx --version6. Unduh Biner Rilis
Kunjungi halaman rilis, unduh file .tar.gz atau .deb yang sesuai, lalu ekstrak dan pindahkan ke direktori PATH Anda (misal /usr/local/bin).
Setelah instalasi, coba jalankan cpx --help untuk melihat daftar opsi yang tersedia.
Contoh Penggunaan Sehari-hari (Biar Makin Paham)
Teori sudah cukup, sekarang saatnya praktek. Berbagai skenario umum dan cara mengatasinya dengan cpx.
๐ Menyalin Satu File
cpx laporan.pdf arsip/laporan.pdf๐ Menyalin Direktori secara Rekursif
cpx -r ProyekA/ /backup/proyek/โก Menyalin dengan Paralel 8 Thread dan Progress Bar
cpx -r -j 8 dataset-foto/ /media/backup/foto/๐ซ Mengecualikan Pola Tertentu
cpx -r -e "*.log" -e "tmp/" -e "node_modules" webapp/ /arsip/webapp/๐ Melanjutkan Transfer yang Terputus
cpx -r --resume backup-partial/ /mnt/backup/full/๐ Mempertahankan Semua Atribut (seperti cp -a)
cpx -r -p=all sistem/ /mnt/backup/sistem/๐ Membuat Symlink Relatif (daripada menyalin)
cpx -s relative file.txt link/Untuk lebih banyak contoh, lihat dokumentasi examples.md di GitHub.
Konfigurasi: Buat cpx Sesuai Gaya Anda
Daripada mengetik opsi panjang setiap saat, manfaatkan file konfigurasi. Inisialisasi dengan:
cpx config initPerintah itu akan membuat file contoh di ~/.config/cpx/cpxconfig.toml. Isinya mirip seperti ini:
[exclude]
patterns = ["*.tmp", "*.log", "node_modules", ".git", "target"]
[copy]
parallel = 8
recursive = true
[preserve]
mode = "default"
[progress]
style = "detailed"
[reflink]
mode = "auto"Edit sesuai kebutuhan. Untuk melihat konfigurasi aktif: cpx config show. Untuk mengetahui lokasi file: cpx config path. Konfigurasi bisa diletakkan di tiga level (prioritas: project > user > system), sehingga Anda bisa punya pengaturan berbeda untuk tiap proyek.
Performa: Benchmark cpx vs cp (Angka Bicara)
Saya melakukan pengujian sederhana di laptop saya (SSD NVMe, CPU 8 core, RAM 16 GB) dengan dua skenario:
| Skenario | Jumlah File | cp (waktu) | cpx -j16 (waktu) | Percepatan |
|---|---|---|---|---|
| Kode VS Code (ekstensi, dll) | ~15.000 file | 1084 ms | 263 ms | 4,12x |
| Source code Rust (direktori src) | ~65.000 file | 4,553 s | 1,091 s | 4,17x |
Hasil ini konsisten dengan klaim proyek. Tentu, percepatan tergantung pada jumlah file, ukuran, dan media penyimpanan. Namun, jelas bahwa cpx unggul dalam menangani banyak file kecil berkat paralelisasi. Untuk file besar tunggal, perbedaannya mungkin tidak terlalu signifikan, tapi fitur progress bar dan resume tetap menjadi nilai tambah.
Perbandingan dengan Alat Lain: rsync, cp, dan lainnya
Selain cp, ada juga rsync yang populer untuk sinkronisasi dan backup. Namun, rsync dirancang untuk transfer jaringan dan sinkronisasi diferensial (hanya mengirim perubahan), sementara cpx fokus pada copy lokal dengan kecepatan tinggi dan progress bar. rsync juga bisa digunakan secara lokal, tapi biasanya lebih lambat karena overhead checksum (kecuali diatur dengan --no-checksum). Berikut perbandingan singkat:
| Fitur | cp | rsync | cpx |
|---|---|---|---|
| Progress bar | โ Tidak | โ ๏ธ (dengan --progress, tapi kurang informatif) | โ Sangat detail |
| Paralel copy | โ Tidak | โ Tidak (kecuali dengan hack) | โ Bisa diatur |
| Resume transfer | โ Tidak | โ (dengan --partial) | โ (dengan --resume) |
| Konfigurasi file | โ | โ ๏ธ (hanya via skrip) | โ TOML |
| Exclude pattern | โ | โ (--exclude) | โ (-e) |
| Bahasa | C | C | Rust |
Kesimpulannya, cpx mengisi ceruk yang sebelumnya kosong: copy lokal super cepat dengan feedback real-time. Untuk sinkronisasi jaringan atau backup rutin, rsync tetap juara. Tapi untuk copy satu kali atau migrasi data besar, cpx adalah pilihan tepat.
Pengalaman Pribadi Saya dengan cpx
Setelah memakai cpx selama dua minggu, saya merasa seperti upgrade dari sepeda ontel ke motor sport. Saya sekarang punya alias di ~/.bashrc:
alias cpx="cpx -j 8"Setiap kali menyalin proyek Laravel yang penuh dengan node_modules, saya tinggal ketik cpx -r -e node_modules proyek/ backup/ dan lihat progress barnya bergerak. Fitur resume juga sudah saya uji coba: saya sengaja menginterupsi dengan Ctrl+C saat menyalin folder film (30 GB), lalu jalankan ulang dengan --resumeโdalam hitungan detik ia melanjutkan dari file terakhir tanpa mengulang. Luar biasa!
Saya juga membuat file konfigurasi global dengan exclude .git dan target, serta set progress style ke detailed. Kini cpx terasa seperti alat yang tailor-made untuk saya.
Tips dan Trik Menggunakan cpx
- Gunakan opsi
--dry-run? Sayangnyacpxbelum punya opsi simulasi. Tapi Anda bisa mengkombinasikan denganfinduntuk melihat file apa saja yang akan dicopy sebelum menjalankan perintah sebenarnya. - Kombinasikan dengan
fdataufind: Misal, untuk menyalin semua file.jpgdari pohon direktori:find . -name "*.jpg" -exec cpx {} tujuan/ \;Namun, ini tidak memanfaatkan paralelismecpxsecara optimal. Lebih baik gunakan pattern exclude dicpxjika memungkinkan. - Atur paralelisme sesuai hardware: Untuk SSD NVMe dan CPU banyak core, coba
-j 16. Untuk HDD, cukup-j 4agar tidak terlalu membebani I/O. - Simpan konfigurasi proyek: Jika suatu proyek memiliki kebutuhan khusus (misal exclude tertentu), buat file
cpxconfig.tomldi direktori proyek tersebut. - Manfaatkan
--reflink=auto: Jika filesystem Anda mendukung (Btrfs, XFS denganreflink), ini akan membuat copy hampir instan untuk file besar karena hanya menyalin metadata (copy-on-write).
Platform yang Didukung dan Rencana ke Depan
| Platform | Status | Catatan |
|---|---|---|
| Linux | โ Didukung penuh | Kernel 4.5+ direkomendasikan untuk fast copy (copy_file_range) |
| macOS | ๐ Direncanakan | Akan datang (lihat roadmap) |
| Windows | ๐ Direncanakan | Akan datang |
Developer juga berencana menambahkan fitur seperti batch rename dan integrasi dengan file manager. Kita nantikan saja.
Kesimpulan: Haruskah Anda Beralih ke cpx?
Jelas, cpx bukan pengganti cp untuk semua situasiโmisalnya jika Anda hanya menyalin satu file kecil, cp sudah cukup. Namun, untuk pekerjaan menyalin ribuan file, direktori besar, atau ketika Anda butuh visibilitas dan ketahanan, cpx adalah pilihan yang sangat menarik. Ia menggabungkan kecepatan, fleksibilitas, dan kemudahan dalam satu paket Rust yang ringan.
Dengan dukungan komunitas yang aktif dan roadmap yang jelas, saya optimis cpx akan semakin matang. Jadi, tunggu apa lagi? Coba instal dan rasakan sendiri perbedaannya. Kalau Anda punya pengalaman atau pertanyaan, silakan tulis di kolom komentar di bawah! Saya penasaran dengan pendapat Anda.