파일을 서버에 백업하려고 하는데 파일 이름에 공백이 있는 문제가 있습니다.
터미널에서 다음 명령을 사용합니다.
FILES="testing/space\ in\ filename testing/and\ again"; rsync -v $FILES server::address
testing
은 두 파일이 있는 폴더 space in filename
이고 and again
.
실행하면 다음과 같은 결과를 얻습니다.
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)
해당 옵션을 사용해볼까 고민해봤지만 --protect-args
실행에 옮기지 못했습니다.
답변1
IFS(내부 필드 구분 기호)를 일시적으로 변경할 수 있습니다.
FILES="long filename with spaces
another one"
OLDIFS="$IFS"
IFS=$'\n'
rsync -v $FILES server::address
IFS="$OLDIFS" # restores default behaviour
참고로 이는 $'\n'
샤미즘입니다. 다른 Posix 쉘로 이것을 시도해 볼 수 있습니다:
IFS="
"
여러 파일을 처리하려면 새 IFS(위의 경우 개행)로 파일을 구분하면 됩니다. 개행 문자를 원하는 문자로 바꿀 수도 있습니다.