Eu estou tentando executar rsync -a --files-from=~/.rsync_file_list ~/destination
e ele me diz: rsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.7]
. Alguém pode me esclarecer o que estou fazendo de errado?
O arquivo ~/.rsync_file_list
contém apenas uma lista de nomes de arquivos precedidos por ~/
, separados por novas linhas (embora eu também tenha tentado listá-los todos na mesma linha, com o mesmo resultado).
Se eu executar rsync -a ~/file ~/file2 ~/file3 ~/destination
, funciona muito bem. Então, o que estou perdendo na --files-from
opção?
sed "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
Respostas:
Ok, eu encontrei o problema.
--files-from=FILE
, o rsync requer um diretório de origem no qual encontrar os arquivos listados.Então o comando deve ser
rsync -a --files-from=~/.rsync_file_list $HOME/ /destination
..rsync_file_list
deve ler:fonte
../
). As barras principais serão ignoradas, para que caminhos absolutos não funcionem.O uso do "~" pode não funcionar dentro de um arquivo "files-from", a menos que o rsync seja inteligente o suficiente para reconhecer e converter o símbolo "~".
Quando você especifica um "~" como parte de um comando na linha de comando do seu shell, é o próprio shell que converte "~" no diretório inicial antes de passar o argumento para o programa. Portanto, mesmo que você digite
rsync -a ~/file
, o quersync
"vê" é realmente o caminho resolvido oursync -a /home/foo/file
.Consulte Expansão do Bash Tilde para obter mais informações.
fonte