Comme j'ai cherché et testé un bon moment ce matin, surtout avec les posts en français où la plupart des gens qui répondent commencent par argumenter, (mais pourquoi tu veux exclure tes fichiers de configs ?
- de quoi je me mèle ?
)
j'ai finalement trouvé la solution sur un forum anglophone (askubuntu).
Voici comment faire:
sync -av -r --progress --exclude=".*" --exclude=".*/" SOURCE DESTINATION/
où "SOURCE" peut prendre un / à la fin, pour
sauvegarder tout ce qui est dans SOURCE mais pas le répertoire "SOURCE" lui-même, ou ne pas prendre de / à la fin, de sorte à
sauvegarder le répertoire SOURCE et tout ce qu'il contient. Et même chose pour DESTINATION : avec un / à la fin, on envoie le contenu de SOURCE à l'intérieur.
Les options : "-av" est récursif, bavard, et respecte les attributs (ce qui signifie qu'il conserve les droits, les permissions, et les appartenances des fichiers à leurs propriétaires et groupes respectifs d'origine).
--progress est optionnel et permet de voir le déroulement de l'action de rsync dans le terminal.
--exclude=".*" permet d'exclure tous les fichiers cachés, mais pas les répertoires cachés (comme .cache, .local, .gvfs ... il y en a beaucoup dans le répertoire de l'utilisateur)
--exclude=".*/" permet d'exclure tous les dossiers cachés.
Je ferai seulement dans un second temps la copie des répertoires cachés indispensables, du style .mozilla et .mozilla-thunderbird. J'aurais peut-être pu trouver un moyen de l'ajouter dans la ligne de commande (avec un ; à la fin de la ligne ci-dessus par exemple, et chainer la suite et si vous avez mieux, envoyez !)
Voici le test que j'ai fait pour voir si cela fonctionne:
j'ai créé un répertoire Test et un répertoire TEST et créé quelques fichiers et dossiers quelconques dans Test:
$ ls -lhAR
.:
total 12K
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:30 bidule
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:30 .bidule
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:30 chose
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:30 .chose
drwxrwxr-x 2 melodie melodie 4,0K mars 19 13:58 chouette
drwxrwxr-x 2 melodie melodie 4,0K mars 19 13:58 fourrure
drwxrwxr-x 2 melodie melodie 4,0K mars 19 13:58 lapin
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:30 truc
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:30 .truc
./chouette:
total 0
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:58 .bidule
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:58 .chose
./fourrure:
total 0
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:58 .chose
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:58 .truc
./lapin:
total 0
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:58 .bidule
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:58 .chose
la commande:
rsync -av -r --progress --exclude=".*" --exclude=".*/" Test/ TEST/
le résultat:
$ ls -lhAR TEST/
TEST/:
total 12K
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:30 bidule
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:30 chose
drwxrwxr-x 2 melodie melodie 4,0K mars 19 13:58 chouette
drwxrwxr-x 2 melodie melodie 4,0K mars 19 13:58 fourrure
drwxrwxr-x 2 melodie melodie 4,0K mars 19 13:58 lapin
-rw-rw-r-- 1 melodie melodie 0 mars 19 13:30 truc
TEST/chouette:
total 0
TEST/fourrure:
total 0
TEST/lapin:
total 0
notez que j'ai mis une option "-r" qui ne sert à rien. :]
man rsync précise:
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)