Penggunaan Perintah rsync untuk Menyinkronkan File dan Direktori [11 Examples]

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.

  Perangkat Lunak Otentikasi Vs. Perangkat Lunak Enkripsi: Ketahui Dasar-dasarnya

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.

  Token Non-Fungible (NFT) dan Aplikasinya di Bidang Lain

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.

  11 Perangkat Lunak Program Referensi Terbaik untuk Menumbuhkan Pengguna dan Bisnis Anda

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.