Rsyncing vários arquivos com espaços em branco nos nomes

2

Estou tentando fazer o backup de arquivos em um servidor, mas estou tendo problemas com arquivos que possuem espaços em branco nos nomes.

Estou usando este comando no terminal:

FILES="testing/space\ in\ filename testing/and\ again"; rsync -v $FILES server::address

testing é a pasta, com os dois arquivos sendo space in filename e and again .

Quando eu executo isso, recebo o seguinte resultado:

rsync: link_stat "/home/user/testing/space\" failed: No such file or directory (2)
rsync: link_stat "/home/user/in\" failed: No such file or directory (2)
rsync: link_stat "/home/user/filename" failed: No such file or directory (2)
rsync: link_stat "/home/user/testing/and\" failed: No such file or directory (2)
rsync: link_stat "/home/user/again" failed: No such file or directory (2)

Eu estive procurando usar a opção --protect-args , mas também não consegui fazer isso funcionar.

    
por Corbz 29.09.2011 / 13:59

1 resposta

1

Você pode alterar temporariamente o IFS (separador de campo interno):

FILES="long filename with spaces
another one"
OLDIFS="$IFS"
IFS=$'\n'
rsync -v $FILES server::address
IFS="$OLDIFS" # restores default behaviour

Por favor, note que $'\n' é bashismo. Você pode tentar isso para outros shells Posix:

IFS="
"

Para processar vários arquivos, basta separá-los pelo novo IFS (no caso acima, um caractere de nova linha). Em vez do caractere de nova linha, você pode até usar os caracteres que quiser.

    
por 29.09.2011 / 14:07