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.
--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.