이름에 공백이 있는 여러 파일 재동기화

이름에 공백이 있는 여러 파일 재동기화

파일을 서버에 백업하려고 하는데 파일 이름에 공백이 있는 문제가 있습니다.

터미널에서 다음 명령을 사용합니다.

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(위의 경우 개행)로 파일을 구분하면 됩니다. 개행 문자를 원하는 문자로 바꿀 수도 있습니다.

관련 정보