J'utilise le serveur Ubuntu 12.04, maintenant je veux sauvegarder des fichiers en utilisant rsync, voici un essai:
rsync -aAX $HOME/Documents/* $HOME/Backups/TEST --exclude={$HOME/Documents/another/*,$HOME/Documents/temp/*}
Comme vous pouvez le constater, je souhaite sauvegarder tous les fichiers du dossier $ HOME/Documents dans un dossier $ HOME/Sauvegardes/TEST , mais exclure fichiers du dossier n autre = et temp. Mais j'ai échoué, rsync a quand même copié les fichiers des deux dossiers exclus:
ls $HOME/Backups/TEST/another
test
test est un fichier du dossier autre , et il est également copié bien que j'exclus le fichier dans rsync, pourquoi? Comment laisser ces fichiers être réellement exclus?
Votre commande rsync pose plusieurs problèmes (voir également page de manuel de rsync pour une explication détaillée des règles de filtrage).
--exclude
pour chaque modèle donné.Pour votre exemple, la syntaxe suivante fonctionnera:
rsync -avAX --exclude=another/ --exclude=temp/ ~/Documents/ ~/Backups/TEST
Notez que si un modèle d'exclusion se termine par /
, il fait référence à un répertoire. Si vous l'omettez, les fichiers et les répertoires portant ce nom seront exclus. Remplacez-le par un caractère générique *
pour exclure tous les fichiers ou répertoires avec cette chaîne dans leurs noms.
Vous trouverez peut-être plus facile d’ajouter des fichiers .rsync-filter
dans vos répertoires source et d’utiliser l’option -F
.
De la page de manuel:
-F: L'option -F est un raccourci [...] pour cette règle:
--filter='dir-merge /.rsync-filter'
Cela indique à rsync de rechercher les fichiers .rsync-filter par répertoire éparpillés dans la hiérarchie et d'utiliser leurs règles pour filtrer les fichiers du transfert.
Par exemple: dans $ HOME/Documents/.rsync-filter
# you can add comments in filter files
- /another/
- /temp/
Au lieu de -
, vous pouvez également écrire le mot entier exclude
name__.
Maintenant vous pouvez
rsync -aAX -F $HOME/Documents/ $HOME/Backups/TEST/