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.

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

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.


Oke, itu berhasil. Saya memiliki kasus yang lebih kompleks yang saya tambahkan ke pertanyaan. Termasuk tambahan tidak bekerja dengan skenario subdir.
brianmathis
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.