Complexe inclus / exclut avec rsync


14

J'essaie de travailler sur la syntaxe du filtre rsync pour effectuer des inclusions / exclusions complexes, et j'essaye d'obtenir les résultats suivants:

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

J'ai essayé de nombreuses variantes de la syntaxe du filtre, et malgré la lecture de la page de manuel plusieurs fois, je ne peux pas obtenir ce genre d'effet. Les filtres Rsync semblent être très puissants, et j'ai du mal à croire qu'ils ne pouvaient pas gérer un scénario commun comme celui-ci.

Réponses:


17

Vous devez inclure tous les répertoires parents jusqu'au répertoire souhaité avant d'utiliser la règle d'exclusion.

Par exemple, j'utilise ce qui suit dans un script de sauvegarde:

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

Donc, dans votre cas, vous auriez besoin de quelque chose comme ceci:

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

Excellent. Ça m'a pris du temps.
yclian du

D'une certaine manière, quand j'ai lu le man rsync, j'ai mal compris le bon ordre de mixage inclut et exclut. Il m'a fallu une heure pour le comprendre ...
Adam Ryczkowski

6

Sur la ligne de commande:

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

Supprimez-le --dry-runpour le rendre fonctionnel, remplacez "DEST" par votre destination et ajoutez l'utilisateur et l'hôte à la source "/" si nécessaire.

À partir d'un fichier de règles:

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

où le contenu de /etc/rsync/somerules.rulespourrait être:

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

Vous devriez les tester et vous devrez peut-être faire quelques ajustements, mais cela devrait vous aider à démarrer.


OK, ça marche. J'ai un cas plus complexe que j'ai ajouté à la question. L'inclusion supplémentaire ne fonctionne pas avec le scénario subdir.
brianmathis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.