Rsync adalah utilitas baris perintah yang cepat dan serbaguna yang menyinkronkan file dan folder antara dua lokasi melalui shell jarak jauh.

Dengan Rsync Anda dapat menyalin data, membuat cadangan tambahan, dan menyalin file di antara sistem. Saat menyalin data, Anda mungkin ingin mengecualikan satu atau lebih file atau direktori berdasarkan nama atau lokasinya.

Dalam tutorial ini, kami akan menunjukkan kepada Anda cara mengecualikan file dan direktori dengan rsync.

Sebelum mulai

Anda harus memiliki pengetahuan dasar tentang cara kerja rsync.

Pada contoh di bawah ini, kita akan menggunakan rsync dengan opsi -a,. Opsi -a ini memberitahu rsync untuk menyinkronkan direktori secara rekursif, mentransfer perangkat khusus dan memblokir dan mempertahankan symbolic links, waktu modifikasi, grup, kepemilikan, dan izin.

Saat mengecualikan file atau direktori, Anda perlu menggunakan jalur relatifnya ke direktori sumber.

Ada dua opsi untuk menentukan file dan direktori yang ingin Anda kecualikan:

  • Dari baris perintah, gunakan opsi --exclude.
  • Dari file, gunakan opsi --exclude-from.

Kecualikan File Tertentu

Untuk mengecualikan file tertentu, gunakan jalur relatif ke file dan kemudian tambahkan opsi –exclude.

Dalam contoh berikut ini, file sumber_direktori/file.txt tidak akan ditransfer:

rsync -a --exclude 'file.txt' sumber_direktori/ tujuan_direktori/

Kecualikan Direktori Tertentu

Mengecualikan direktori tertentu sama dengan mengecualikan file, cukup gunakan jalur relatif ke direktori ke opsi –exclude seperti yang ditunjukkan di bawah ini:

rsync -a --exclude 'dir1' sumber_direktori/ tujuan_direktori/

Jika Anda ingin mengecualikan konten direktori tetapi direktori itu sendiri tidak menggunakan dir1/* alih-alih dir1:

rsync -a --exclude 'dir1/*' sumber_direktori/ tujuan_direktori/

Kecualikan Banyak File atau Direktori

Untuk mengecualikan beberapa file atau direktori cukup tentukan beberapa opsi --exclude:

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' sumber_direktori/ tujuan_direktori/

Jika lebih suka menggunakan opsi --exclude tunggal, Anda dapat membuat daftar file dan direktori yang ingin Anda kecualikan dalam kurung kurawal {} dipisahkan oleh koma seperti yang ditunjukkan di bawah ini:

rsync -a --exclude=

{

'file1.txt','dir1/*','dir2'

}

 sumber_direktori/ tujuan_direktori/

Jika jumlah file dan / atau direktori yang ingin Anda kecualikan besar, alih-alih menggunakan beberapa opsi --exclude , Anda dapat menentukan file dan direktori yang ingin Anda kecualikan dalam file dan meneruskan file ke opsi --exclude-from .

Perintah di bawah ini outputnya sama persis dengan perintah yang di atas:

rsync -a --exclude-from='exclude-file.txt' sumber_direktori/ tujuan_direktori/

isi dari exclude-file.txt :

file1.txt
dir1/*
dir2

Kecualikan Banyak File atau Direktori Berdasarkan Pola

Dengan rsync Anda juga dapat mengecualikan file dan direktori berdasarkan pola yang cocok dengan nama file atau direktori.

Misalnya, untuk mengecualikan semua file .png, berikut perintah yang akan Anda jalankan:

rsync -a --exclude '*.png*' sumber_direktori/ tujuan_direktori/

Agak sulit untuk mengecualikan semua file dan direktori, kecuali yang cocok dengan pola tertentu. Katakanlah Anda ingin mengecualikan semua file dan direktori kecuali file yang diakhiri dengan .jpg.

Salah satu opsi adalah menggunakan perintah berikut:

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' sumber_direktori/ tujuan_direktori/

Saat menggunakan beberapa opsi include/exclude, aturan pencocokan pertama berlaku.

  • --include = '*.jpg' – Pertama, kita menyertakan semua file .jpg.
  • --include='*/ – Kemudian kita memasukkan semua direktori di dalam direktori sumber_direktori. Tanpa ini, rsync hanya akan menyalin file *.jpg di direktori tingkat atas.
  • -m – Menghapus direktori kosong.

Opsi lain adalah mem-pipe output dari perintah find ke rsync:

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- sumber_direktori/ tujuan_direktori/
  • -printf %P\\0\\n – akan menghapus sumber_direktori/ dari path file.
  • --files-from=- – berarti hanya menyertakan file dari input standar (file diteruskan dari perintah find).

Kesimpulan

Dalam tutorial ini, Anda belajar cara mengecualikan file dan direktori saat mentransfer data dengan Rsync. Ada banyak lagi yang bisa dipelajari tentang Rsync di halaman Panduan Pengguna Rsync.