Pertanyaan :Bagaimana cara menyalin folder secara rekursif sambil mengecualikan folder/file tertentu saat menggunakan rsync?
Pada umumnya kita menggunakan perintah 'cp' untuk menyalin file, namun sayangnya perintah 'cp' tidak memiliki fitur "exclude", jadi kita perlu menulis beberapa skrip untuk mengecualikan file yang tidak diinginkan, atau kita dapat menggunakan alat lain ' rsync'.
Dari halaman manual perintah rsync:
$ man rsync ... -r, --recursive recurse into directories --exclude=PATTERN exclude files matching PATTERN
Sintaks perintah rsync untuk menyalin direktori sementara mengecualikan file/direktori tertentu adalah seperti yang ditunjukkan di bawah ini:
$ rsync -r --exclude 'file_path' 'SRC' 'DEST'
Misalnya, jika kita tidak ingin menyalin semua file folder oracle ke oraclebak kecuali ‘oracle/oradata/rmanbackup’:
$ du -sh oracle/* 40K oracle/extapi 1.1G oracle/oradata ------> sub directory of oracle 4.0K oracle/test1 4.0K oracle/test2 4.0K oracle/test3 4.0K oracle/test4 4.0K oracle/test5
# du -sh oracle/oradata/* 4.0K oracle/oradata/date1 4.0K oracle/oradata/date2 4.0K oracle/oradata/date3 4.0K oracle/oradata/date4 4.0K oracle/oradata/date5 1.1G oracle/oradata/rmanbackup -------> we need to exclude this directory
Jalur pengecualian adalah jalur relatif file di bawah 'SRC', mis. kami ingin mengecualikan "oracle/oradata/rmanbackup", dan direktori induknya adalah oracle, jadi jalur pengecualiannya adalah 'oradata/rmanbackup':
# rsync -r --exclude 'oradata/rmanbackup' oracle/ oraclebak # du -sh oraclebak/oracle/* 40K oraclebak/oracle/extapi 24K oraclebak/oracle/oradata 4.0K oraclebak/oracle/test1 4.0K oraclebak/oracle/test2 4.0K oraclebak/oracle/test3 4.0K oraclebak/oracle/test4 4.0K oraclebak/oracle/test5
Anda juga dapat menggunakan opsi “–exclude-from=FILE ” jika Anda memiliki lebih banyak file/direktori untuk dikecualikan. Dalam hal ini, Anda hanya perlu membuat daftar file/direktori yang akan dikecualikan dalam file dan memberikan jalur file ke opsi “–exclude-from="
# man rsync --exclude-from=FILE read exclude patterns from FILE
Misalnya:
# rsync -r --exclude-file=/tmp/exclude_list oracle/ oraclebak
Di sini,
/tmp/exclude_list berisi daftar file/direktori yang akan dikecualikan saat menyalin yang lain.