rsync n'utilise pas l'option –files-from?

J'essaie d'exécuter rsync -a --files-from=~/.rsync_file_list ~/destination et il me dit: rsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.7] . Quelqu'un peut-il m'éclairer sur ce que je fais mal?

Le file ~/.rsync_file_list contient juste une list de noms de files ~/.rsync_file_list de ~/ , séparés par des returns à la ligne (même si j'ai aussi essayé de les listr tous sur la même ligne, avec le même résultat).

Si je lance rsync -a ~/file ~/file2 ~/file3 ~/destination cela fonctionne très bien. Alors, qu'est-ce qui me manque dans l'option --files-from ?

Ok, j'ai trouvé le problème.

  1. Le file contenant les noms de files ne doit contenir que des noms de files; pas de paths, relatifs ou autrement;
  2. Après avoir spécifié --files-from=FILE , rsync nécessite un directory source dans lequel find les files listés.

La command doit donc être rsync -a --files-from=~/.rsync_file_list $HOME/ /destination .

.rsync_file_list doit se lire:

 file 1 file 2 file 3 

L'utilisation du "~" peut ne pas fonctionner dans un file "files-from", sauf si rsync est assez intelligent pour reconnaître et traduire le symbole "~".

Lorsque vous spécifiez un "~" comme élément d'une command dans la command line de votre shell, c'est le shell lui-même qui convertit "~" dans votre directory personnel avant de transmettre l'argument au programme. Donc, même si vous tapez rsync -a ~/file , ce que rsync "voit" est en réalité le path résolu, ou rsync -a /home/foo/file .

Voir Bash Tilde Expansion pour plus d'informations.