Ketika berbicara tentang cara mentransfer file antar sistem di jaringan, user Linux dan Unix memiliki banyak pilihan tools yang dapat mereka gunakan.

Protokol yang paling populer untuk transfer data adalah SSH dan FTP. Sementara ini FTP sangat populer meski tidak terlalu aman, Saya sendiri selalu merekomendasikan untuk selalu menggunakan SSH karena ini adalah cara paling aman untuk mentransfer file Anda.

Ada tool khusus untuk transfer file melalui SSH seperti scp dan sftp, tetapi tidak satupun dari mereka memiliki semua fitur yang disediakan rsync. rsync dapat digunakan untuk mirroring data, incremental backups, menyalin file antar sistem dan sebagainya.

Dalam tutorial ini, kami akan menjelaskan cara menyalin file dengan rsync melalui SSH.

Persyaratan

Untuk melanjutkan Tutorial ini, Pastikan persyaratan ini telah terpenuhi.

  1. Utilitas rsync harus diinstal pada tujuan dan sistem sumber. Jika tidak diinstal, Anda dapat menginstalnya menggunakan manajer paket distribusi Anda:
    Ubuntu and Debian:

    sudo apt install rsync

    CentOS and Fedora:

    sudo yum install rsync
  2. Akses SSH ke komputer jarak jauh.
  3. User yang menjalankan perintah rsync dan pengguna SSH jarak jauh harus memiliki izin yang sesuai untuk membaca dan menulis file.

Menggunakan rsync untuk transfer file melalui SSH

Dengan rsync, Anda dapat mentransfer file dan direktori melalui SSH dari dan ke remote server.

Sintaks umum untuk mentransfer file dengan rsync adalah sebagai berikut:

Local ke Remote : rsync [OPTION]... -e ssh [SRC]... [USER@]HOST:DEST
Remote ke Local : rsync [OPTION]... -e ssh [USER@]HOST:SRC... [DEST]

Di mana SRC adalah direktori sumber, DEST adalah direktori tujuan, USER adalah nama pengguna SSH jarak jauh, dan HOST adalah remote host SSH atau Alamat IP.

Versi rsync yang lebih baru dikonfigurasi untuk menggunakan SSH sebagai shell remote default sehingga Anda dapat menghilangkan opsi -e ssh.

Misalnya, untuk mentransfer satu file /opt/file.zip dari sistem lokal ke direktori /var/www/ pada sistem jarak jauh dengan IP 12.12.12.12 Anda akan menjalankan:

rsync -a /opt/file.zip user@12.12.12.12:/var/www/

Opsi -a adalah singkatan dari mode archive (arsip) yang akan menyinkronkan direktori secara rekursif, mentransfer perangkat khusus dan setiap block, mempertahankan symbolic links, waktu modifikasi, grup, kepemilikan, dan izin.

Jika Anda tidak menerapkan login SSH tanpa password ke mesin jarak jauh, Anda akan diminta untuk memasukkan kata sandi user.

Jika file sudah ada di server jarak jauh, maka file tersebut akan ditimpa. Jika Anda ingin menyimpan file dengan nama yang berbeda, tentukan nama baru:

rsync -a /opt/file.zip user@12.12.12.12:/var/www/file2.zip

Untuk mentransfer data dari jarak jauh ke mesin lokal, gunakan lokasi jarak jauh sebagai sumber dan lokasi lokal sebagai tujuan:

rsync -a user@12.12.12.12:/var/www/file.zip /opt/

Mentransfer direktori dengan rsync melalui SSH sama dengan mentransfer file.

Penting untuk diketahui bahwa rsync memberikan perlakuan berbeda pada direktori sumber dengan trailing slash atau garis miring /. Ketika direktori sumber memiliki garis miring, rsync hanya akan menyalin isi direktori sumber ke direktori tujuan. Ketika trailing slash (/) dihilangkan direktori sumber akan disalin di dalam direktori tujuan.

Sebagai contoh untuk mentransfer direktori lokal /opt/linuxid/images/ ke direktori /var/www/images/ pada mesin remote, maka perintah yang akan Anda gunakan :

rsync -a /home/linuxid/images/ user@12.12.12.12:/var/www/images/

Gunakan opsi --delete jika Anda ingin menyinkronkan direktori lokal dan jarak jauh. Berhati-hatilah saat menggunakan opsi ini karena akan menghapus file di direktori tujuan jika file yang ada di direktori tujuan tidak ada di direktori sumber.

rsync -a --delete /home/linuxid/images/ user@12.12.12.12:/var/www/images/

Jika SSH pada host jarak jauh listening pada port selain dari default 22, tentukan port menggunakan opsi -e. Misalnya, jika SSH listening pada port 33122 Anda akan menggunakan:

rsync -a -e "ssh -p 33122" /home/linuxid/images/ user@12.12.12.12:/var/www/images/

Saat mentransfer data dalam jumlah besar, disarankan untuk menjalankan perintah rsync di dalam sesi screen atau tmux dan menggunakan opsi -P yang memberitahu rsync untuk menampilkan progress bar selama transfer dan menyimpan file yang ditransfer secara berkala:

rsync -a -P /home/linuxid/images/ user@12.12.12.12:/var/www/images/

Kesimpulan

Kami telah menunjukkan kepada Anda cara menggunakan rsync melalui SSH untuk menyalin dan menyinkronkan file dan direktori. Anda juga dapat mengecualikan file atau direktori dengan rsync.