Je suis en train de courir 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 fichier ~/.rsync_file_list
contient juste une liste de noms de fichiers précédés de ~/
, séparés par des retours à la ligne (même si j'ai également essayé de tous les répertorier sur la même ligne, avec le même résultat).
Si je cours, rsync -a ~/file ~/file2 ~/file3 ~/destination
cela fonctionne très bien. Alors qu'est-ce qui me manque dans l' --files-from
option?
sed "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
Réponses:
D'accord, j'ai trouvé le problème.
--files-from=FILE
, rsync nécessite un répertoire source dans lequel trouver les fichiers répertoriés.La commande devrait donc l'être
rsync -a --files-from=~/.rsync_file_list $HOME/ /destination
..rsync_file_list
Devrais lire:la source
../
). Les barres obliques principales seront ignorées, donc les chemins absolus ne fonctionneront pas.L'utilisation de "~" peut ne pas fonctionner à l'intérieur d'un fichier "à partir de" à moins que rsync soit suffisamment intelligent pour reconnaître et traduire le symbole "~".
Lorsque vous spécifiez un "~" dans le cadre d'une commande dans la ligne de commande de votre shell, c'est le shell lui-même qui convertit "~" dans votre répertoire personnel avant de passer l'argument au programme. Ainsi, même si vous tapez
rsync -a ~/file
, ce quirsync
"voit" est en fait le chemin résolu, oursync -a /home/foo/file
.Voir Expansion Bash Tilde pour plus d'informations.
la source