GNU/Linux >> Belajar Linux >  >> Linux

Contoh Rsync untuk Mentransfer File di Linux

Pada sistem operasi Linux, 'rsync' adalah singkatan dari R emote S ync. Ini adalah utilitas yang digunakan untuk menyinkronkan (menyalin) file dan direktori dari sumber (SRC) ke tujuan (DEST).

File dan direktori dapat disinkronkan pada host lokal atau ke/dari host jarak jauh. Di SRC, file dan direktori akan disinkronkan. Sedangkan, pada DEST, file dan direktori yang disinkronkan akan dilakukan.

Selain itu, perintah rsync dapat menyalin file dan direktori secara rekursif, menyalin tautan simbolik, mempertahankan (izin, grup, waktu modifikasi, dan kepemilikan) identitas file.

Rsync dapat menggunakan dua cara berbeda untuk menyinkronkan/menyalin file atau direktori:

  • Gunakan shell jarak jauh:ssh atau rsh
  • Gunakan daemon rsync secara langsung melalui TCP

Terlebih lagi, rsync menggunakan algoritme transfer delta yang hanya menyalin/mensinkronkan data yang berbeda antara SRC dan DEST.

Tutorial ini akan membahas banyak cara untuk menggunakan perintah rsync melalui praktik dan contoh langsung. Kami juga akan menjelaskan detail opsi paling umum dari perintah rsync.

Sintaks perintah Rsync

Sebelum mendalami cara menggunakan perintah rsync, mari kita lihat sintaksnya:

rsync [options] <SRC_PATH> <DEST_PATH>

1. Salin/Sinkronkan file di mesin lokal

Perintah Rsync dapat digunakan untuk menyalin/menyinkronkan file di mesin lokal Anda.

Dengan asumsi Anda ingin menyalin file dari direktori home pengguna 'linoxide' bernama '/home/linoxide' ke folder '/opt/test'.

$ sudo rsync -zvh /home/linoxide/computer-networking.pdf /opt/test/
computer-networking.pdf

sent 1.01K bytes  received 35 bytes  2.10K bytes/sec
total size is 3.03K  speedup is 2.89

Dimana:

-z :kompres

-v :verbose output

-h :dapat dibaca manusia

2. Salin/Sinkronkan direktori di mesin lokal

Untuk mentransfer semua file dari direktori lokal SRC ke direktori DEST, jalankan perintah rsync dengan opsi -zavh .

Dengan asumsi Anda ingin menyalin direktori home pengguna 'linoxide' bernama '/home/linoxide' ke folder '/opt/backup'.

$ sudo rsync -zavh /home/linoxide/ /opt/backup/

sending incremental file list
./
.bash_history
.bash_logout
.bashrc
.lesshst
.profile
.sudo_as_admin_successful
.viminfo
computer-networking.pdf
.ssh/
.ssh/known_hosts

sent 4.85K bytes  received 198 bytes  10.10K bytes/sec
total size is 9.59K  speedup is 1.90

Dimana:

-a :mengarsipkan data selama proses salin/sinkronisasi

Anda dapat memverifikasi apakah perintah rsync berhasil atau tidak? Jalankan perintah di bawah ini:

$ ls /opt/backup/ -la
total 40
drwxr-xr-x 3 linoxide linoxide 4096 Thg 6 15 16:02 .
drwxr-xr-x 4 root     root     4096 Thg 6 15 16:25 ..
-rw------- 1 linoxide linoxide  817 Thg 6 15 16:01 .bash_history
-rw-r--r-- 1 linoxide linoxide  220 Thg 6 11 15:58 .bash_logout
-rw-r--r-- 1 linoxide linoxide 3771 Thg 6 11 15:58 .bashrc
-rw-rw-r-- 1 linoxide linoxide 3028 Thg 2 25  2017 computer-networking.pdf
-rw------- 1 linoxide linoxide   40 Thg 6 15 15:51 .lesshst
-rw-r--r-- 1 linoxide linoxide  807 Thg 6 11 15:58 .profile
drwx------ 2 linoxide linoxide 4096 Thg 6 13 17:58 .ssh
-rw-r--r-- 1 linoxide linoxide    0 Thg 6 15 16:02 .sudo_as_admin_successful
-rw------- 1 linoxide linoxide  680 Thg 6 14 16:50 .viminfo

3. Rsync melalui ssh dengan Port tertentu

Anda dapat menggunakan ssh (secure shell) untuk menyalin/menyinkronkan data, data Anda akan ditransfer dalam koneksi aman dengan enkripsi. Tidak ada yang dapat membaca data Anda saat sedang ditransfer di Internet. Saat Anda menggunakan perintah rsync, Anda perlu memberikan kata sandi pengguna/root untuk menyelesaikan tugas tertentu. Menggunakan opsi SSH akan mengirimkan login Anda dengan cara terenkripsi sehingga kata sandi Anda akan aman.

Salin file dari jarak jauh ke lokal dengan port ssh tertentu. Untuk menentukan protokol dengan perintah rsync, Anda perlu menggunakan -e opsi dengan nama protokol yang ingin Anda gunakan.

Misalnya, perintah rsync berikut akan menyalin file 'deploy.yaml' melalui shell jarak jauh dari mesin jarak jauh ke direktori home pengguna 'linoxide'.

$ rsync -avz -e "ssh -p 22" [email protected]:/home/cas/deploy.yaml /home/linoxide/
[email protected]'s password: 
receiving incremental file list

sent 20 bytes  received 60 bytes  32.00 bytes/sec
total size is 239  speedup is 2.99

4. Salin/Sinkronkan file dan direktori dari mesin lokal ke mesin jarak jauh

Misalkan Anda ingin menyalin / menyinkronkan folder 'test-data' di direktori home pengguna 'linoxide' di host lokal ke direktori home mesin jarak jauh '[email protected]', jalankan perintah:

$ rsync -azrvh /home/linoxide/computer-networking.pdf [email protected]: 
[email protected]'s password: 
sending incremental file list
computer-networking.pdf

sent 1.04K bytes  received 35 bytes  430.80 bytes/sec
total size is 3.03K  speedup is 2.81

Dimana:

-r :salinan rekursif

5. Salin/Sinkronkan file dan direktori dari mesin jarak jauh ke mesin lokal

Perintah rsync membantu Anda mentransfer 'dokumen' direktori jarak jauh untuk disalin di host lokal Anda.

Dengan asumsi Anda ingin menyalin/menyinkronkan file/direktori dari remote host '[email protected]' ke direktori home pengguna 'linoxide'.

Misalnya:

$ rsync -zavhr [email protected]:document /home/linoxide
[email protected]'s password: 
receiving incremental file list
document/
document/kubernetes.txt

sent 47 bytes  received 139 bytes  74.40 bytes/sec
total size is 0  speedup is 0.00 

6. Rsync -sertakan dan -kecualikan opsi

Kedua opsi ini memungkinkan kami untuk menyertakan dan mengecualikan file dengan menentukan parameter dengan opsi ini membantu kami menentukan file atau direktori yang ingin Anda sertakan dalam sinkronisasi dan mengecualikan file dan folder yang tidak ingin Anda transfer.

Di sini, dalam contoh ini, perintah rsync hanya akan menyertakan file dan direktori yang dimulai dengan 'k' dan mengecualikan semua file dan direktori lainnya.

$ rsync -avhz -e "ssh -p 22" --include 'k*' --exclude '*' [email protected]: /home/linoxide

[email protected]'s password: 
receiving incremental file list
./
k8s.yaml
kubernetes.yaml
kuber/

sent 88 bytes  received 280 bytes  147.20 bytes/sec
total size is 73  speedup is 0.20

7. Setel ukuran maksimum file

Anda dapat menentukan ukuran file maksimal yang akan ditransfer atau disinkronkan. Anda dapat melakukannya dengan opsi '--max-size'.

Dalam contoh berikut, ukuran file maksimal adalah 200k, jadi perintah ini hanya akan mentransfer file yang sama atau lebih kecil dari 200k.

$ rsync -zavhr --max-size='200k' [email protected]: /home/linoxide
[email protected]'s password: 
receiving incremental file list
.bash_history
.bash_logout
.bashrc
.profile
.sudo_as_admin_successful
.viminfo
computer-networking.pdf

sent 2.58K bytes  received 51.60K bytes  21.67K bytes/sec
total size is 113.24K  speedup is 2.09

8. Hapus file sumber setelah transfer berhasil

Sekarang, misalkan Anda memiliki server web dan server cadangan data, Anda membuat cadangan harian dan menyinkronkannya dengan server cadangan Anda, sekarang Anda tidak ingin menyimpan salinan cadangan lokal itu di server web Anda. Jadi, apakah Anda akan menunggu transfer selesai dan kemudian menghapus file cadangan lokal itu secara manual? Tentu tidak. Penghapusan otomatis ini dapat dilakukan dengan menggunakan opsi '--remove-source-files'.

$ ls /home/directory
computer-networking.pdf  deploy.yaml  document  k8s.yaml  kuber  kubernetes.yaml

------
$ rsync -azvh --remove-source-files /home/linoxide/deploy.yaml [email protected]:
[email protected]'s password: 
sending incremental file list

sent 70 bytes  received 20 bytes  36.00 bytes/sec
total size is 239  speedup is 2.66

Jalankan kembali perintah 'ls', Anda dapat melihat file 'deploy.yaml' telah dihapus di SRC.

$ ls
computer-networking.pdf  document  k8s.yaml  kuber  kubernetes.yaml

9. Temukan perbedaan file dan direktori antara SRC dan DEST

Untuk menemukan perbedaan dalam file direktori antara SRC dan DEST, Anda dapat menjalankan perintah rsync dengan opsi '-i'.

$ rsync -avzi /home/linoxide/cloud [email protected]:
[email protected]'s password: 
sending incremental file list
cd+++++++++ cloud/
<f+++++++++ cloud/computer-networking.pdf
<f+++++++++ cloud/k8s.yaml
<f+++++++++ cloud/kubernetes.yaml
cd+++++++++ cloud/document/
<f+++++++++ cloud/document/kubernetes.txt
cd+++++++++ cloud/kuber/
<f+++++++++ cloud/kuber/test.txt

sent 1,472 bytes  received 127 bytes  1,066.00 bytes/sec
total size is 3,101  speedup is 1.94

10. Batasi bandwidth

Anda dapat mengatur batasan bandwidth saat menjalankan perintah rsync dengan opsi '--bwlimit='.

Dengan asumsi Anda ingin membatasi kecepatan transfer data hingga 300KB/s, jalankan perintah:

$ rsync -avzh --bwlimit=300 /home/linoxide/coursera.png [email protected]:

[email protected]'s password: 
sending incremental file list
coursera.png

sent 2.93M bytes  received 35 bytes  234.48K bytes/sec
total size is 3.00M  speedup is 1.02

11. Lanjutkan transfer saat gagal di scp

Terkadang, Anda harus mentransfer file yang sangat besar melalui perintah scp tetapi mengalami kesalahan saat menyalin dan tidak dapat mulai mentransfer lagi menggunakan perintah scp karena ukuran file yang besar dan konsumsi waktu.

Dalam situasi ini, Anda dapat menggunakan perintah rsync untuk mulai menyalin file dari mana ia mendapatkan kesalahan. Misalnya, menyalin file ISO besar di direktori home ke remote host '[email protected]'

$ scp /home/linoxide/ubuntu-18.04.4-live-server-amd64.iso [email protected]:

[email protected]'s password: 
ubuntu-18.04.4-live-server-amd64.iso                                                                                                                                              32%  278MB  86.7MB/s   00:06 ETA

Proses telah dimatikan oleh pengguna. Pada saat itu, 32% file telah ditransfer. Sekarang, Anda dapat melanjutkan pekerjaan saat ini dengan menjalankan rsync:

$ rsync -P -avzh ubuntu-18.04.4-live-server-amd64.iso [email protected]:

[email protected]'s password: 
sending incremental file list
ubuntu-18.04.4-live-server-amd64.iso
        912.26M 100%   15.89MB/s    0:00:54 (xfr#1, to-chk=0/1)

sent 541.25M bytes  received 132.44K bytes  9.25M bytes/sec
total size is 912.26M  speedup is 1.69

12. Menampilkan kemajuan saat mentransfer data

Jika Anda ingin melihat progres yang ditransfer saat menjalankan perintah rsync, Anda dapat menggunakan opsi '--progress'.

Ini akan menunjukkan file dan waktu yang tersisa untuk menyelesaikan salinan.

Misalnya:

$ rsync -avh --progress /home/linoxide/cloud/ [email protected]:
[email protected]'s password: 
sending incremental file list
./
computer-networking.pdf
          3.03K 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=8/10)
coursera.png
          3.00M 100%  114.38MB/s    0:00:00 (xfr#2, to-chk=7/10)
k8s.yaml
             39 100%    1.52kB/s    0:00:00 (xfr#3, to-chk=6/10)
kubernetes.yaml
             34 100%    1.33kB/s    0:00:00 (xfr#4, to-chk=5/10)
ubuntu-18.04.4-live-server-amd64.iso
        912.26M 100%   89.60MB/s    0:00:09 (xfr#5, to-chk=4/10)
document/
document/kubernetes.txt
              0 100%    0.00kB/s    0:00:00 (xfr#6, to-chk=1/10)
kuber/
kuber/test.txt
              0 100%    0.00kB/s    0:00:00 (xfr#7, to-chk=0/10)

sent 915.49M bytes  received 164 bytes  79.61M bytes/sec
total size is 915.26M  speedup is 1.00

Kesimpulan

Dalam tutorial ini, kita mempelajari cara menggunakan perintah rsync dengan beberapa contoh untuk menyalin atau menyinkronkan file/direktori.

Terima kasih telah membaca dan silakan tinggalkan saran Anda di bagian komentar di bawah.


Linux
  1. 25 Berguna menemukan Contoh Praktis Perintah di Linux

  2. 14 Contoh Perintah SCP untuk Mentransfer File dengan Aman di Linux

  3. folder gabungan linux:rsync?

  1. Contoh Praktis Perintah rsync di Linux

  2. Cara Mentransfer File di Linux dengan SCP dan Rsync

  3. Perintah rsync Linux dengan contoh praktis

  1. Perintah Rsync:20 Contoh Bermanfaat di Linux

  2. Contoh Perintah diff di Linux

  3. Linux setara dengan robocopy?