Dis que j'ai
SRC
001.jpg
002.jpg
001.txt
a.zip
DEST
hello.jpg
rsync -d --delete SRC:{*.jpg,*.txt} DEST
Il ne supprime pas hello.jpg de DEST, aucune idée de comment archiver cela?
La raison pour laquelle votre commande ne fonctionne pas est expliquée par la page de manuel relative à rsync (italique ajouté):
--effacer
Cela indique à rsync de supprimer les fichiers superflus du côté de la réception (ceux qui ne sont pas du côté de l'envoi), mais uniquement pour les répertoires en cours de synchronisation. Vous devez avoir demandé à rsync d’envoyer l’ensemble du répertoire (par exemple, "dir" ou "dir /") sans utiliser de caractère générique pour le contenu du répertoire (par exemple, "dir / *") car le caractère générique est développé par le shell et rsync demande de transfert de fichiers individuels, pas du répertoire parent des fichiers. Les fichiers exclus du transfert sont également exclus de la suppression, sauf si vous utilisez l'option --delete-excluded ou marquez les règles comme ne faisant que correspondre uniquement du côté de l'envoi (voir les modificateurs d'inclusion / exclusion dans la section RÈGLES DU FILTRE).
Ainsi, quand vous courez
$ rsync -d --delete SRC:{*.jpg,*.txt} DEST
les fichiers non désirés dans DEST ne sont pas supprimés car vous n'avez pas demandé de répertoire à synchroniser, mais uniquement une poignée de fichiers spécifiques. Pour obtenir les résultats souhaités, essayez quelque chose comme ceci:
rsync -d --delete-excluded --include '*.jpg' --include '*.txt' --exclude '*' SRC/ DEST/
Notez que l'ordre des directives d'inclusion et d'exclusion est important. Essentiellement, chaque fichier est comparé aux modèles d'inclusion ou d'exclusion dans l'ordre dans lequel ils apparaissent. Ainsi, les fichiers avec les extensions .jpg ou .txt sont synchronisés dans la mesure où ils correspondent aux modèles "inclus" avant de correspondre au modèle "*" exclu. Tout le reste est exclu par le --exclude '*'
motif. Cette --delete-excluded
option garantit que même les fichiers exclus du côté DEST sont supprimés.
--delete-excluded
. Sans cela, seuls*.jpg
et*.txt
peuvent être supprimés du côté de la destination. Avec lui, les fichiers non liés seraient également supprimés. Vous pouvez être intéressé par ce tutoriel sur les filtres rsync .