El complejo incluye / excluye con rsync


14

Estoy tratando de resolver la sintaxis del filtro rsync para realizar inclusiones / exclusiones complejas, y estoy tratando de lograr lo siguiente:

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

He intentado muchas variaciones en la sintaxis del filtro, y a pesar de leer la página del manual muchas veces, no puedo obtener este tipo de efecto. Los filtros Rsync parecen ser muy poderosos, y me resulta difícil creer que no puedan manejar un escenario común como este.

Respuestas:


17

Debe incluir todos los directorios principales hasta el directorio deseado antes de usar la regla de exclusión.

Por ejemplo, uso lo siguiente en un script de respaldo:

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

Entonces, en su caso, necesitaría algo como lo siguiente:

rsync -av \ 
--filter='+ /home/' \
--filter='+ /home/user1/' \
--filter='+ /home/user2/' \
--filter='+ /home/user2/subdir/' \
--filter='- /home/user2/*' \
--filter='- /home/*' \
/ \
$DEST

Excelente. Me llevó algo de tiempo.
yclian

De alguna manera, cuando leí el man rsync, entendí mal el orden apropiado de mezcla incluye y excluye. Me tomó una hora resolverlo ...
Adam Ryczkowski

6

En la línea de comando:

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

Elimine --dry-runpara que funcione, reemplace "DEST" con su destino y agregue usuario y host a la fuente "/" si es necesario.

De un archivo de reglas:

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

donde el contenido de /etc/rsync/somerules.rulespodría ser:

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

Debe probarlos y es posible que deba hacer algunos ajustes, pero esto debería ayudarlo a comenzar.


OK, eso funciona. Tengo un caso más complejo que he agregado a la pregunta. La inclusión adicional no funciona con el escenario subdir.
brianmathis
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.