- Rsync melakukan sinkronisasi berdasarkan perbedaan, menghemat waktu dan bandwidth dengan algoritma delta-transfernya.
- Garis miring di akhir penting: SOURCE/ menyalin konten; tanpa garis miring di akhir, direktori akan dibuat di dalam tujuan.
- Keamanan dan keandalan: gunakan SSH, kunci, -P untuk melanjutkan dan --dry-run sebelum --delete.
- Fleksibilitas lengkap: pengecualian, batasan, kompresi, pencadangan, dan tugas terjadwal dengan cron.
Jika Anda bekerja dengan Linux dan menangani file setiap hari, rsync adalah alat serbaguna untuk menyinkronkan dan mentransfer data antara direktori lokal dan server jarak jauh dengan cepat, aman, dan efisien. Rsync tidak hanya menyalin, tetapi juga membandingkan dan hanya mengirimkan data yang berubah, sehingga menghemat waktu dan bandwidth.
Dalam panduan praktis ini, Anda akan belajar menguasai rsync langkah demi langkah: mulai dari sintaks dasar dan opsi kunci hingga teknik lanjutan seperti pengecualian, penghapusan aman, melanjutkan transfer, pencadangan, dan otomatisasi cron. Anda juga akan melihat cara menggunakannya dengan SSH, kunci tanpa kata sandi, serta batasan ukuran dan kecepatan.
Apa itu rsync dan mengapa begitu cepat?
Rsync adalah singkatan dari "remote synchronization" (sinkronisasi jarak jauh). Ini adalah alat sumber terbuka untuk menyinkronkan direktori dan file antara lokasi lokal atau jarak jauh (melalui jaringan). Keunggulan utamanya adalah algoritma "delta-transfer": algoritma ini menganalisis metadata dan konten dalam blok dan hanya mentransfer perbedaannya , sehingga secara drastis mengurangi jumlah data yang dikirim.
Program ini tersedia di hampir semua distribusi GNU/Linux dan sistem mirip Unix . Perilakunya mirip dengan cp dan scp , tetapi dengan lebih banyak opsi yang lebih detail: program ini mempertahankan izin, melanjutkan pemotongan, melakukan kompresi secara langsung, mengecualikan pola, menampilkan kemajuan, dan masih banyak lagi.
Sintaks dasar dan konsep kunci
Bentuk umum perintahnya adalah: rsync SOURCE DESTINATION . SOURCE dan DESTINATION dapat berupa jalur lokal atau titik akhir jarak jauh melalui SSH, misalnya user@host:/path.
Saat menggunakan host jarak jauh, sintaksnya adalah: rsync HOST:REMOTE_PATH LOCAL_PATH (pull) atau rsync LOCAL_PATH HOST:REMOTE_PATH (push). Dalam kedua kasus, sumber berada di urutan pertama dan tujuan berada di urutan berikutnya.
rsync
rsync HOST:ORIGEN_REMOTO DESTINO_LOCAL # PULL
rsync ORIGEN_LOCAL HOST:DESTINO_REMOTO # PUSH
Ada nuansa penting: garis miring di akhir sumber. SOURCE/ (dengan garis miring) berarti "isi dari SOURCE" ; jika Anda menghilangkan garis miring, rsync akan membuat direktori SOURCE di dalam tujuan.
Periksa dan instal rsync
Pertama, periksa apakah tersedia dengan `rsync --version` ; Anda akan melihat nomor dan protokolnya. Jika Anda tidak memilikinya, Anda dapat menginstalnya menggunakan penginstal distribusi Anda.
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install rsync
# Red Hat / CentOS / Fedora
sudo yum install rsync # o: sudo dnf install rsync
# macOS (Homebrew)
brew install rsync
Jika Anda mengelola server dari Windows , Anda dapat terhubung melalui SSH menggunakan PuTTY dan menjalankan perintah yang sama dari terminal jarak jauh.
Memulai: Sinkronisasi Lokal Cepat
Siapkan dua folder uji dan beberapa file kosong. Ini akan memungkinkan Anda untuk melihat perbedaan antara menyalin semuanya dan hanya memperbarui perubahan, berkat algoritma rsync.
cd ~
mkdir dir1 dir2
# Crea 100 ficheros vacíos
bash -c 'touch dir1/file{1..100}'
# Sincroniza de dir1 a dir2 (recursivo)
rsync -r dir1/ dir2
# O en modo "archivo" (recomendado)
rsync -a dir1/ dir2
Opsi -r menyalin secara rekursif; -a (arsip) mencakup -r dan juga mempertahankan izin, pemilik, grup, stempel waktu, dan tautan simbolik.
Bar terakhir di titik asal: detail yang menghindari kejutan
Perilaku ini sangat penting: dir1/ mentransfer konten; dir1 menyalin seluruh direktori ke tujuan. Uji dengan aman dengan simulasi.
# Ensayo (no cambia nada) y verboso
rsync -anv dir1/ dir2 # contenido de dir1 hacia dir2
rsync -anv dir1 dir2 # crea dir2/dir1/...
Untuk operasi yang rumit, biasakan menambahkan `-n` atau `--dry-run` dan memeriksa output sebelum benar-benar menjalankan perintah. Ini adalah kebiasaan kecil yang dapat menghemat banyak masalah.
Sinkronisasi jarak jauh dengan SSH: push dan pull
Jika Anda memiliki SSH di mesin jarak jauh dan rsync terpasang di kedua sisi, mengirim atau mengambil data semudah memasukkan path dengan user@host . Secara default, rsync akan menggunakan SSH sebagai "shell jarak jauh".
# PUSH: del local al remoto (transferimos el directorio completo)
rsync -a ~/dir1 usuario@servidor:/ruta/destino
# PULL: del remoto al local (traemos contenidos)
rsync -a usuario@servidor:/home/usuario/dir1 /ruta/local
# Especificar el puerto SSH y usar compresión y progreso
rsync -azP -e 'ssh -p 2222' origen/ usuario@servidor:/destino/
Opsi -z (pemahaman) dan -P (kemajuan + parsial) sangat membantu pada jaringan yang lambat: Anda akan melihat bilah kemajuan dan dapat melanjutkan jika koneksi terputus.
Otentikasi tanpa kata sandi dengan kunci SSH
Untuk mengotomatiskan sinkronisasi, sebaiknya gunakan kunci. Hasilkan pasangan RSA/ed25519, salin kunci publik ke server, dan gunakan dengan rsync untuk menghindari permintaan kata sandi.
# En el cliente (usuario local)
ssh-keygen -t rsa -b 4096 -C "Acceso rsync" -f ~/.ssh/rsync_key -q -N ""
ssh-copy-id -i ~/.ssh/rsync_key.pub usuario@servidor
# Probar acceso por clave
ssh -i ~/.ssh/rsync_key usuario@servidor
# Usar la clave con rsync (dos formas equivalentes)
rsync -az -e 'ssh -i ~/.ssh/rsync_key' origen/ usuario@servidor:/destino/
rsync -az --rsh="ssh -i ~/.ssh/rsync_key" origen/ usuario@servidor:/destino/
Jika Anda tidak memiliki izin root pada tujuan , Anda dapat mengabaikan pemilik dan grup dengan –no-o dan –no-g , yang menghindari kesalahan atribusi pada sistem multi-pengguna.
Opsi penting yang akan Anda gunakan setiap saat
Kombinasi yang paling umum mencampur -a (arsip), -v (verbose), -z (kompresi), -P (progress/parsial) tergantung pada kasusnya. Perhatikan hal-hal penting ini.
- -a: rekursif dan mempertahankan izin, waktu, pemilik, grup, tautan, dan spesial.
- -v: keluaran yang lebih informatif; dengan -h Anda akan melihat ukuran yang “dapat dibaca manusia”.
- -z: kompres selama transfer (hindari jika file sudah dikompresi).
- -P: setara dengan –progress + –partial; ideal untuk tautan yang tidak stabil.
Juga sangat berguna: -u (perbarui, tidak menimpa jika tujuan lebih baru), -n (uji coba) dan -e untuk shell jarak jauh (misalnya, SSH dengan port atau kunci).
Kemajuan, kompresi, dan dimulainya kembali tanpa membuang waktu
Untuk memvisualisasikan apa yang sedang terjadi dan menghindari memulai dari awal setelah jeda, `-azP` biasanya merupakan solusi yang tepat . Anda akan melihat berapa banyak yang tersisa, dan `rsync` akan menyimpan sebagian data untuk melanjutkan.
rsync -azP origen/ destino/
# Repetirlo cuando no cambie nada da una salida mínima: rsync detecta que todo está al día
Jika setelah mengubah tanggal dengan perintah `touch` atau memodifikasi beberapa file Anda menjalankan perintah tersebut lagi, hanya yang telah diubah yang akan dikirim , yang menegaskan efisiensi transfer delta.
Pengecualian dan inklusi berdasarkan pola
Jika Anda tidak ingin menyertakan semuanya, gunakan `--exclude` dan `--include` untuk mempersempit pilihan Anda . Anda dapat mengecualikan berdasarkan nama, jalur, atau ekstensi, atau memuat daftar dari sebuah file.
# Excluir un directorio, un fichero y rutas concretas
rsync -av --exclude 'cache/' --exclude 'secreto.doc' --exclude 'ruta/subdir' origen/ destino/
# Excluir desde archivo (uno por línea)
rsync -av --exclude-from 'lista_excluidos.txt' origen/ destino/
# Solo copiar .jpg en toda la jerarquía (incluye directorios, excluye el resto)
rsync -vrhz --include="*/" --include="*.jpg" --exclude="*" original/ duplicados/
Jika Anda berlebihan dalam melakukan pengecualian, Anda selalu dapat membalikkan logika dengan –include untuk mengizinkan apa yang benar-benar Anda inginkan dan memblokir sisanya dengan –exclude "*".
Penghapusan terkendali di tujuan (–hapus dan varian)
Untuk sinkronisasi "cermin", aktifkan `--delete` dan file yang tidak lagi ada di sumber akan dihapus dari tujuan. Gunakan ini dengan hati-hati dan selalu uji dengan `--dry-run` terlebih dahulu.
# Sincronización espejo (borra en destino lo que ya no está en origen)
rsync -av --delete origen/ destino/
Kebijakan penghapusan: –delete-before (menghapus sebelum transfer), –delete-during (selama penerimaan; default di versi modern), dan –delete-delay (mendeteksi file yang hilang dan menghapus di akhir). –delete-after ada, tetapi biasanya kurang efisien kecuali dalam skenario yang sangat spesifik.
Batasan ukuran dan bandwidth
Untuk menghindari kelebihan beban jaringan atau penyaringan berdasarkan ukuran, gunakan `--max-size` dan `--min-size` bersama dengan `--bwlimit` . Ini berguna untuk penyalinan massal atau pencadangan dengan kebijakan tertentu.
# Solo archivos <= 100 MB y límite de 5 MB/s
rsync -avzh --max-size='100M' --bwlimit=5120 origen/ destino/
# No transferir nada por debajo de 10 KB
dsync -av --min-size=10k origen/ destino/
Saat memindahkan banyak file kecil, opsi -W/-whole-file memaksa seluruh file untuk dikirim dan dapat mempercepat proses jika delta tidak mengimbangi latensi.
Pencadangan tanpa repot (–backup dan –backup-dir)
Jika Anda khawatir akan menimpa data yang sudah ada, kombinasikan `--backup` dengan `--backup-dir` untuk menyimpan versi sebelumnya di folder cadangan. Ini adalah "jaring pengaman" yang sangat berguna.
# Guarda versiones reemplazadas/eliminadas en /var/backups/rsync
rsync -a --delete --backup --backup-dir=/var/backups/rsync /ruta/origen/ /ruta/destino/
Dengan cara ini, setiap file yang dimodifikasi atau dihapus di tujuan akan aman di direktori yang ditunjukkan, sehingga memudahkan untuk mengembalikan perubahan dengan cepat jika terjadi sesuatu yang tidak sesuai rencana.
Otomatiskan dengan cron (tanpa perintah atau gangguan)
Untuk menjalankan sinkronisasi rutin, tambahkan entri ke cron. Gunakan kunci SSH, hindari `--progress`, dan secara opsional, buat salinan log untuk keperluan audit.
# Cada hora, con clave e ignorando propietario y grupo
0 * * * * rsync -arz --no-o --no-g --delete --rsh="ssh -i /home/u/.ssh/rsync_key" /home/u/backup/ u@servidor:"/home/u/backup" >> /var/log/rsync.log 2>&1
Jika Anda melakukan sinkronisasi ke arah sebaliknya, balikkan SUMBER dan TUJUAN. Pencatatan dengan `--log-file` atau pengalihan akan membantu Anda meninjau apa yang ditransfer dan kapan.
Trik tingkat lanjut dan skenario kehidupan nyata
Selain opsi klasik, rsync memiliki opsi yang kurang dikenal tetapi sangat berguna: -c (checksum, mengabaikan tanggal/ukuran dan membandingkan berdasarkan hash), –size-only (hanya ukuran), -I/–ignore-times (menyalin semuanya), –remove-source-files (memindahkan alih-alih menyalin, tidak menghapus direktori).
# Solo actualizar si cambia el hash (más preciso, más CPU)
rsync -avuc origen/ destino/
# Mover ficheros (borra en origen los que se copien bien)
rsync -av --remove-source-files origen/ destino/
# Preservar enlaces, dueños y especiales (requiere permisos adecuados)
rsync -aLptgoD origen/ destino/
Dengan server jarak jauh, Anda dapat menyinkronkan dua mesin Linux melalui SSH setiap jam menggunakan cron dan kunci. Jika Anda membutuhkan sinkronisasi mendekati waktu nyata, coba Lsyncd , sebuah daemon yang bereaksi terhadap perubahan sistem file dan secara otomatis memanggil rsync. Jika Anda lebih menyukai antarmuka grafis, coba sinkronkan folder lokal dan jaringan dengan FreeFileSync.
Contoh ringkas untuk membantu Anda keluar dari masalah
Berikut beberapa resep cepat yang perlu diingat. Anda dapat dengan mudah menyesuaikannya dengan rute dan pengguna Anda .
# Copiar localmente con progreso y tamaños legibles
rsync -avhP /carpeta1/ /carpeta2/
# Sincronizar dos hosts (pull) con progreso
rsync -avP [email protected]:/carpeta1/ /carpeta2/
# Solo archivos modificados (update) a un remoto
rsync -vzh -u posts/*.md blog@host:/ruta/posts/
# Ensayo general (no cambia nada) y listado detallado
rsync -avhni --itemize-changes origen/ destino/
Saat menangani struktur besar, gabungkan pengecualian, batasan, dan kemajuan untuk memiliki kendali mutlak atas apa yang mengalir dan bagaimana cara kerjanya.
Menguasai rsync adalah soal latihan: bereksperimenlah dengan `--dry-run`, gunakan `-a` sebagai dasar, tambahkan `-z`/`-P` untuk operasi jaringan, dan gunakan `--delete` dengan bijak . Dengan kunci SSH dan cron, Anda akan memiliki sinkronisasi otomatis, aman, dan efisien baik secara lokal maupun antar server.
Penulis yang bersemangat tentang dunia byte dan teknologi secara umum. Saya suka berbagi ilmu melalui tulisan, dan itulah yang akan saya lakukan di blog ini, menunjukkan kepada Anda semua hal paling menarik tentang gadget, perangkat lunak, perangkat keras, tren teknologi, dan banyak lagi. Tujuan saya adalah membantu Anda menavigasi dunia digital dengan cara yang sederhana dan menghibur.
