rsync adalah alat baris perintah gratis yang memungkinkan Anda menyinkronkan file secara lokal dan jarak jauh. Dengan itu, Anda dapat mentransfer file dan direktori.
Ini membuatnya sangat berguna untuk memigrasikan data, melakukan pencadangan, dan pencerminan, menjadikannya bagus untuk webmaster dan administrator untuk tugas transfer data berulang.
Artikel ini akan mengajari kita cara kerja Rysnc dan memberikan beberapa contoh bermanfaat.
Bagaimana rsync Bekerja?
rsync adalah utilitas baris perintah sinkronisasi jarak jauh untuk sistem mirip Unix. Ini memberi pengguna kemampuan untuk mentransfer/menyinkronkan file antara mesin atau dua host dengan mulus.
Di bawah tenda, rsync menggunakan algoritma delta-transfer. Algoritme ini melibatkan penyalinan perbedaan antara dua file di dua host (sumber dan tujuan). Sumber dan tujuan bisa lokal atau jauh. Perintah rsync dapat melakukan tugas salin/sinkronisasi data dengan dua cara. Ini adalah:
- Gunakan ssh, rsh untuk menyalin/menyinkronkan antara dua host.
- Gunakan daemon rsync TCP untuk menyalin/menyinkronkan.
Karena dirancang untuk bekerja di sistem mirip Unix, ini juga berfungsi di Linux.
Proses langkah demi langkah yang digunakan rsync sebagai berikut:
- Rsync menggunakan SSH untuk terhubung ke host jarak jauh dan meminta kata sandi.
- Setelah terhubung, rsync host jarak jauh berkomunikasi dengan sumbernya.
- Program ini kemudian akan menentukan file dan direktori yang perlu disinkronkan. Ini menggunakan algoritma delta-transfer untuk memeriksa perbedaan antara file.
Jika perintah rsync tidak menemukan file di remote tetapi tidak di host, itu akan menyalin dan mentransfernya ke sistem host. Demikian pula, untuk file yang sudah ada (baik di host dan jarak jauh), itu akan menyalin perbedaan di antara keduanya (yaitu, bagian yang diubah). Terakhir, itu akan mengabaikan file yang ada di kedua sistem tanpa modifikasi.
Perintah rsync mencapai pembaruan tambahan dengan menyimpan perbedaan dalam file sementara sebelum mendorongnya ke tujuan.
Sebelum kamu memulai:
- Anda harus memiliki hak akses root atau sudo
- Memiliki akses ke terminal/baris perintah
- Akses SSH untuk menjalankan perintah rsync dengan aman
- Anda juga memerlukan dua mesin untuk membuat rsync.
Untuk tutorialnya, kita akan menggunakan Linux Mint 21.1 Vera. Anda dapat dengan mudah mengikuti panduan ini tanpa masalah menggunakan distro Linux lainnya.
Mengapa Menggunakan rsync Lebih dari Scp?
Scp (salinan aman) adalah protokol baris perintah populer yang memungkinkan pengguna menyalin file. Ini mengikuti pendekatan linier untuk menyalin. Ini berarti hanya menyalin file dari sumber ke tujuan. Untuk melakukannya dengan aman, ia menggunakan SSH.
Sintaks perintah scp adalah seperti di bawah ini:
scp option SOURCE DESTINATION
Namun, pertanyaannya tetap, mengapa menggunakan rsync melalui scp?
Ya, ada banyak manfaat menggunakan rsync. Manfaat ini meliputi:
- Eksekusi Lebih Cepat: rsync lebih cepat daripada scp karena menggunakan protokol pembaruan jarak jauh. Ini memungkinkannya untuk mentransfer hanya perbedaan daripada seluruh file. Jadi, jika Anda menyiapkan sinkronisasi reguler dari waktu ke waktu, Anda hanya perlu melakukan salinan lengkap untuk pertama kali. Mulai saat berikutnya, hanya menyalin bagian yang diperbarui dengan bantuan algoritme transfer delta.
- Konsumsi Bandwidth Lebih Sedikit: Karena rsync tidak perlu menyalin seluruh file lagi, ini menyebabkan konsumsi bandwidth lebih sedikit. Selain itu, ini juga menggunakan algoritma kompresi/dekompresi untuk meminimalkan ukuran file selama transfer.
- Lebih Banyak Opsi Baris Perintah: rsync juga mengalahkan scp dalam jumlah opsi baris perintah. Ini berarti Anda dapat menyempurnakan rsync lebih dari scp.
Kesimpulannya, rsync adalah alat sinkronisasi inkremental yang luar biasa. Alat scp juga berguna untuk mentransfer/menyinkronkan file dengan aman. Dalam skenario dunia nyata, scp cocok untuk tugas sehari-hari jika Anda mencari pendekatan yang lebih mudah. Namun, untuk tugas berulang, gunakan rsync.
Sintaks Perintah rsync
Perintah rsync adalah seperti di bawah ini:
Di sini, istilah didefinisikan di bawah ini:
- OPSI – Ini adalah opsi rsync
- SUMBER – Direktori sumber
- DEST – Direktori tujuan
- PENGGUNA – Nama pengguna jarak jauh
- HOST – Nama host jarak jauh atau alamat IP
Opsi adalah parameter yang menawarkan fungsionalitas tambahan pada perintah. Misalnya, Anda dapat menyinkronkan data secara rekursif dengan opsi -r. Namun, opsi -r tidak menyinkronkan kepemilikan untuk grup dan pengguna, stempel waktu, izin, atau tautan simbolik. Sebagai gantinya, Anda dapat menggunakan opsi -a, yang menjalankan perintah dalam mode arsip, memastikan bahwa semua kepemilikan, izin, dan tautan simbolik file disimpan saat menyalin.
Opsi rsync lainnya termasuk:
- -z: kompres data untuk menghemat ruang
- -h: memberikan keluaran format yang dapat dibaca manusia
- -b: melakukan pencadangan selama proses sinkronisasi data
- -e: gunakan protokol SSH untuk transfer data jarak jauh
- -progress: menampilkan progres sinkronisasi data
- -v: minta rsync untuk menampilkan keluaran verbose
- –n: melakukan uji coba untuk menguji pengaturan dan penyiapan sinkronisasi data
- -q: menekan keluaran dan opsi perintah rsync
Menginstal rsync
Sebagian besar sistem Unix dan Linux hadir dengan rsync terinstal. Jika sistem Anda tidak memiliki rsync, Anda dapat menginstalnya menggunakan perintah berikut.
Untuk Debian/Ubuntu dan Mint
sudo apt-get install rsync
Untuk ArchLinux
pacman -S rsync
Di Gentoo
emerge sys-apps/rsync
Di CentOS/Fedora/REHL
sudo yum install rsync
Di openSUSE
sudo zypper install rsync
Karena kami memiliki Linux Mint, rsync sudah diinstal sebelumnya. Jadi Anda dapat menjalankan perintah rsync di terminal untuk melihat apakah sudah terpasang. Itu akan menjelaskan kemampuannya, opsi, dan informasi penting lainnya jika ada.
nitt ~ $ rsync rsync version 3.2.3 protocol version 31 Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others. Web site: https://rsync.samba.org/ Capabilities: 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes, batchfiles, inplace, append, ACLs, xattrs, optional protect-args, iconv, symtimes, prealloc, stop-at, no crtimes Optimizations: SIMD, no asm, openssl-crypto Checksum list: xxh128 xxh3 xxh64 (xxhash) md5 md4 none Compress list: zstd lz4 zlibx zlib none rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public Licence for details. rsync is a file transfer program capable of efficient remote update via a fast differencing algorithm.
Sekarang mari kita lihat rsync beraksi dengan kasus penggunaan yang berbeda.
Untuk tutorialnya, kita akan membuat dua direktori.
- direktori sumber
- dest-directory
Untuk itu, Anda perlu mengetikkan perintah berikut.
mkdir source-directory mkdir dest-directory
Selain itu, kita perlu membuat file agar rsync berfungsi. Jadi mari kita buat beberapa file percobaan dengan perintah di bawah ini.
touch source-directory/file{1..100}
Ini membuat 100 file kosong di direktori sumber. Anda dapat mengonfirmasinya dengan memasukkan perintah di bawah ini.
ls source-directory Output: nitt rsync-tutorial $ ls dest-directory source-directory nitt rsync-tutorial $ touch source-directory/file{1..100} nitt rsync-tutorial $ ls source-directory file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
Catatan: Kami telah mengosongkan direktori dest.
Menyalin Direktori Secara Lokal Secara Rekursif
Meskipun rsync terutama bertujuan untuk menyalin file antara server lokal dan jarak jauh, hal ini juga berguna untuk menyalin file secara lokal.
Dalam hal ini, kami akan menggunakan sintaks rsync berikut.
opsi rsync TUJUAN SUMBER
Salin file di direktori sumber kami ke direktori tujuan dengan menjalankan perintah berikut.
rsync -r source-directory/ dest-directory
Di sini, perintah “secara rekursif” menyalin file dari direktori sumber ke direktori tujuan.
nitt rsync-tutorial $ ls dest-directory source-directory nitt rsync-tutorial $ ls dest-directory nitt rsync-tutorial $ ls source-directory file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99 nitt rsync-tutorial $ rsync -r source-directory/ dest-directory nitt rsync-tutorial $ ls dest-directory file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
Ini menyalin setiap file di direktori sumber ke direktori tujuan.
Salin File Tunggal Secara Lokal
Sekarang setelah kita mempelajari cara menyinkronkan dua direktori, kita akan mempelajari cara menyalin satu file.
Untuk tujuan ini, kami akan mengedit file kosong file1 di direktori sumber dan kemudian menyinkronkannya dengan file yang sama yang ada di direktori tujuan.
Untuk mengedit file, ketikkan perintah berikut.
nano source-directory/file1
Sekarang salin-tempel teks berikut ke editor nano.
We're updating file1 in the source-directory. Once we update, we'll push the new update to the dest-directory. rsync doesn't need to re-copy the file using the delta-transfer algorithm. This algorithm checks the differences and then updates destination files accordingly. So, once you save file1 in the source-directory, open file1 in the dest-directory. It'll be empty. However, if we check it after running rsync, you'll see that file1 in dest-directory is updated.
Menambahkan konten ke file
Sekarang, tutup dan simpan file.
Mari sekarang salin file menggunakan rsync.
sudo rsync -v --existing source-directory/file1 /dest-directory
#Output nitt rsync-tutorial $ sudo rsync -v --existing source-directory/file1 dest-directory file1 sent 557 bytes received 35 bytes 1,184.00 bytes/sec total size is 474 speedup is 0.80 nitt rsync-tutorial $
Seperti yang mungkin Anda perhatikan, kami menggunakan opsi –ada. Ini memperbarui file yang ada. Jika Anda menjalankan perintah tanpa –ada, itu tidak akan diperbarui, meskipun berjalan dengan sukses.
Jika satu file yang Anda salin tidak ada di folder tujuan, Anda perlu menjalankan perintah berikut.
rsync -v source-directory/newfile dest-directory
#Output nitt rsync-tutorial $ rsync -v source-directory/newfile dest-directory newfile sent 82 bytes received 35 bytes 234.00 bytes/sec total size is 0 speedup is 0.00
Menyalin Banyak File
Jika Anda ingin menyalin banyak file, Anda harus menyebutkan jalur sumber kedua file, diikuti dengan direktori target.
Untuk tujuan ini, kami akan membuat dua file baru: newfile2 dan newfile3, di direktori sumber. Jalankan perintah berikut untuk melakukannya.
touch source-directory/newfile{2..3}
Sekarang, gunakan perintah berikut untuk menyinkronkan banyak file.
rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
#Output nitt rsync-tutorial $ rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory newfile2 newfile3 sent 135 bytes received 54 bytes 378.00 bytes/sec total size is 0 speedup is 0.00 nitt rsync-tutorial $
Salin File atau Direktori Dari Lokal ke Remote
Sintaks rsync untuk transfer lokal ke jarak jauh adalah seperti di bawah ini.
rsync option SOURCE [email protected]:DEST
Seperti yang Anda lihat, Anda perlu mengetahui alamat IP mesin jarak jauh agar ini berfungsi. Juga, Anda perlu menambahkan alamat IP setelah file sumber.
rsync -av /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Sebelum memulai transfer, ia akan meminta kata sandi. Masukkan untuk melanjutkan. Juga, jika pengguna berbeda di mesin jarak jauh, maka Anda perlu menyebutkannya sebelum alamat IP diikuti dengan @.
rsync -av /Projects/rsync-tutorial/source-directory [email protected]: /Projects/rsync-tutorial/dest-directory
Jika Anda ingin menyalin banyak file atau direktori, maka Anda perlu membuat daftar file atau jalur direktori. Sintaksnya ada di bawah.
rsync -av /Projects/rsync-tutorial/source-directory/newfile1 /Projects/rsync-tutorial/source-directory/newfile2 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Protokol Khusus Transfer Jarak Jauh
rsync memungkinkan Anda menentukan protokol transfer file tertentu. Untuk melakukannya, Anda perlu menggunakan opsi -e, diikuti dengan protokol.
Misalnya, jika Anda ingin menggunakan protokol ssh, Anda harus menambahkan -e ssh ke perintah rsync.
rsync -e ssh /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Menyalin File atau Direktori Dari Jarak Jauh ke Lokal
Sintaks rsync untuk transfer lokal ke jarak jauh adalah seperti di bawah ini.
sync option [email protected]:SRC DEST
Ini bertindak sebagai permintaan tarik. Jadi, untuk mendapatkan file/direktori yang diperlukan dari server jarak jauh ke mesin lokal Anda, Anda perlu menjalankan perintah berikut.
rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Perintah menarik file di dalam direktori tujuan mesin jarak jauh ke direktori sumber mesin lokal.
Demikian pula, Anda dapat menarik file tertentu dengan menyebutkannya melalui jalur lengkapnya.
rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory/newfile4 /Projects/rsync-tutorial/source-directory
Untuk menyalin banyak file atau direktori dari lokal ke jarak jauh, Anda perlu menentukan jalur di dalam kurung kurawal (dipisahkan dengan koma) setelah alamat IP server.
rsync -av 192.168.192.200: {/Projects/rsync-tutorial/dest-directory/, /home/music/2023-music} /Projects/rsync-tutorial/source-directory
Demikian pula, Anda juga dapat menyebutkan file.
Tampilkan Kemajuan Langsung Selama Transfer
Sebaiknya lihat kemajuan langsung untuk pencadangan data yang lebih besar. Untuk itu, Anda perlu menggunakan flag –progress. Tambahkan ke perintah rsync, dan Anda dapat melihat kecepatan transfer, sisa waktu, dan jumlah data yang ditransfer.
rsync -av --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Hapus File Sumber Setelah Transfer Selesai
Anda dapat menggunakan flag -remove-source-files untuk menghapus file sumber setelah transfer selesai. Ini dapat membantu Anda dalam banyak skenario, terutama dalam hal mengamankan file Anda tanpa meninggalkan jejak apa pun atau hanya menggunakannya untuk mengosongkan ruang.
rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
uji coba rsync
Rysnc juga memungkinkan Anda mengevaluasi sebelum melakukan lari yang sebenarnya. Uji coba memungkinkan Anda melihat apakah Anda melakukan hal yang benar. Lagi pula, Anda tidak ingin memperbarui file secara tidak sengaja atau bahkan menghapusnya.
Anda perlu menggunakan opsi –dry-run untuk melakukan dry run. Tambahkan ke perintah, diikuti dengan sumber dan tujuan.
sudo rsync -v --dry-run source-directory/file1 dest-directory
nitt rsync-tutorial $ sudo rsync -v --dry-run source-directory/file1 dest-directory file1 sent 43 bytes received 19 bytes 124.00 bytes/sec total size is 474 speedup is 7.65 (DRY RUN) nitt rsync-tutorial
Outputnya mirip dengan cara kami menjalankannya sebelumnya. Namun, Anda akan melihat penyebutan (DRY RUN) di akhir output.
Tetapkan Ukuran File Minimum dan Maksimum
Rysnc juga memungkinkan Anda mengatur ukuran file minimum atau maksimum selama transfer.
Jadi, jika Anda ingin mentransfer dengan ukuran minimal 15KB, Anda perlu menggunakan –min-size=15K.
rsync -av --min-size=15k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Perintah hanya akan menyalin file dengan ukuran file minimal 15KB. Jika ukuran file di bawah, itu akan mengabaikannya.
Demikian pula, Anda dapat menggunakan flag –max-size untuk mengatur ukuran file maksimum.
rsync -av --max-size=450k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Di sini, rsync akan mengabaikan file di atas ukuran 450K.
Tetapkan Batas Bandwidth
Jika Anda melakukan tugas intensif bandwidth lainnya, Anda dapat mengatur rysnc untuk mengatur batas bandwidth untuk transfer. Untuk melakukannya, gunakan –bwlimit=KB/s.
rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Di sini, kami menetapkan bandwidth ke 100Kb/dtk selama transfer.
Kata Akhir
Ini membawa kita ke akhir panduan perintah rsync kita. Kami belajar cara menggunakan rysnc dan membahas banyak perintah secara efektif.
Namun, rysnc menawarkan lebih dari yang kami bahas. Itu sebabnya Anda mungkin juga ingin membuka halaman manual rsync, di mana setiap aspek rsync tercakup.
Selanjutnya, lihat lembar contekan baris perintah untuk Windows, Linux, dan macOS.