Rsync et exclusion de fichiers ou répertoires

bonjour ,

je débute l’utilisation de rsync pour mes sauvegardes ( non programmées ) pour lesquelles j’utilise 2 supports différents : l’un est « passif » ( clé USB ) et ne pose donc aucun problème particulier mais l’autre est le HDD d’un portable déjà ancien qui comporte debian 11 , S.E que je n’utilise que pour réceptionner les sauvegardes sur son HDD en utilisant le protocole ssh . Son /home sera donc un CC de l’original à sauvegarder . Sauf que si je veux que ssh fonctionne le répertoire .ssh sur ce HDD ne doit pas être changé : il me faut donc au minimum exclure le répertoire .ssh du transfert .

Selon un tuto j’ai le choix entre 2 méthodes mais si la commande donnée pour la 1ère méthode est claire celle de le 2ème méthode l’est beaucoup moins et je la transcris telle quelle

In the following example shows how exclude the node_modules and tmp directories:

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/

/exclude-file.txt

node_modules
tmp

texte original : rsync/exclure

note : une autre possibilité serait de réserver une partition ou un répertoire à ajouter sur ce HDD ?

Bonjour,
Le portable distant, tu veux qu’il soit un clone de ta source? Car dans ce cas, le .ssh ne sera pas le seul fichier qui posera problème.
Si tu veux juste une sauvegarde, alors ta question est un problème XY.
Utilises plutôt un répertoire spécifique qui ne sera pas à la racine de l’utilisateur du portable pour faire la sauvegarde.

c’est la solution vers laquelle je m’apprêtais à m’orienter . Je vais faire comme sur la clé assimilée à un répertoire /sauvegardes à créer sur le HDD et dans lequel je vais placer des copies /home et /etc , avec leurs dates .

Mais quelle est la syntaxe correcte pour la 2ème commande qui permet d’exclure des objets car celle qui est donnée me semble en vrac ?

1 J'aime

Dans la méthode 2, le exclude-from est un fichier qui contient les exclusions (c’est la même que pour la commande tar).
Qui plus est tu as spécifié un repertoire et non un fichier, il manque e point devant le « / »:

au lieu de

OK , j’étais à 100 lieues de penser à ça .Merci .

1 J'aime

en fait j’ai créé /sauvegardes et j’ai réglé les droits à 755 . Donc pas de problème … a priori . La commande utilisée était : rsync -a /home/mm user@IP:/sauvegardes . Mais le résultat n’est pas celui attendu car il manque des répertoires genre .cups , .googleearth … etc . Avec une commande similaire tous les répertoires de /home/mm sont bien présents dans la sauvegarde réalisée sur la clé USB .
Où est mon erreur ?

note : j’avais essayé la même commande avec un répertoire cible ~/sauvegardes et obtenu le même résultat mais comme la cible était elle même l’objet d’une copie j’ai eu un doute sur la validité du procédé et refait la copie ci-dessus . Mais peut-être qu’en excluant ce répertoire cible de la copie ?

Je crois que rsync ne se comporte pas pareil si tu ou non un « / » après mm.
le « -a » est une archive, donc c’est possible que ce soit ça qui ne prenne pas les répertoires masqués.

certains répertoires masqués sont copiés , .cache , .config … par exemple , de plus c’est la même commande que j’ai utilisée pour la clé USB sauf qu’elle ne passait pas par le protocole ssh .

Ah, alors il doit y avoir une différence dans les droits et permissions des répertoire copiés et ceux qui ne sont pas copiés (sticky bit ou autre peut être)

un copié .cache et un autre non copié .cups :

mm@as17:~$ ls -ld .cache .cups
drwx------ 9 mm mm 4096 21 févr. 21:38 .cache
drwxr-xr-x 2 mm mm 4096 29 janv.  2022 .cups
mm@as17:~$ 

notes

  • je vais m’acheter une 2ème clé usb ( finalement non ) car de toute façon ssh et sudo n’ont pas l’air de faire bon ménage sur mon ordi , j’aurais donc un problème avec la sauvegarde de /etc .
  • voilà qui conforte un certain point de vue professionnel ( @Clochette )

PS : il t’arrives toujours des trucs fantastiques :sweat_smile:

suite et fin : problème contourné =

  • création d’une nouvelle partition win avec installateur debian
  • création de /sauvegardes dans cette partition
  • copie de la clé USB dans win/sauvegardes

dommage de perdre la souplesse du protocole ssh