Kompleks termasuk / tidak termasuk dengan rsync

14

Saya mencoba untuk mengerjakan sintaks filter rsync untuk melakukan complex include / exclude, dan mencoba mencapai yang berikut:

Include /
Exclude /home
Include /home/user1/*
Include /home/user2/subdir/*

Saya sudah mencoba banyak variasi pada sintaksis filter, dan meskipun sudah membaca halaman manual berkali-kali, saya tidak bisa mendapatkan efek seperti ini. Filter Rsync tampaknya sangat kuat, dan saya merasa sulit untuk percaya bahwa mereka tidak dapat menangani skenario umum seperti ini.

brianmathis
sumber

Jawaban:

17

Anda harus memasukkan semua direktori induk ke direktori yang diinginkan sebelum menggunakan aturan kecualikan.

Misalnya, saya menggunakan yang berikut ini dalam skrip cadangan:

rsync -av \ 
--filter='+ /var/' \
--filter='+ /var/backups/' \
--filter='- /var/*' \
/ \
$DEST

Jadi dalam kasus Anda, Anda akan membutuhkan sesuatu seperti berikut:

rsync -av \ 
--filter='+ /home/' \
--filter='+ /home/user1/' \
--filter='+ /home/user2/' \
--filter='+ /home/user2/subdir/' \
--filter='- /home/user2/*' \
--filter='- /home/*' \
/ \
$DEST
Shane Meyers
sumber
Luar biasa. Butuh waktu beberapa saat.
yclian
Entah bagaimana, ketika saya membaca man rsync, saya salah mengerti urutan pencampuran yang tepat termasuk dan tidak termasuk. Butuh waktu satu jam untuk mencari tahu ...
Adam Ryczkowski
6

Di baris perintah:

rsync --dry-run --verbose --recursive --include=/home/user1 --exclude=/home/* / DEST

Hapus --dry-rununtuk membuatnya berfungsi, ganti "DEST" dengan tujuan Anda dan tambahkan pengguna dan host ke sumber "/" jika diperlukan.

Dari file aturan:

rsync --dry-run --verbose --recursive --filter='merge /etc/rsync/somerules.rules' / DEST

di mana isinya /etc/rsync/somerules.rulesmungkin:

+/ /home/user1
-/ /home/*

Anda harus menguji ini dan Anda mungkin perlu membuat beberapa penyesuaian, tetapi ini harus Anda mulai.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
Oke, itu berhasil. Saya memiliki kasus yang lebih kompleks yang saya tambahkan ke pertanyaan. Termasuk tambahan tidak bekerja dengan skenario subdir.
brianmathis