--protect-args 옵션을 사용할 때 $line 인수를 rsync에 전달합니다.

--protect-args 옵션을 사용할 때 $line 인수를 rsync에 전달합니다.

나는 스크립트와 다음 코드를 가지고 있습니다 -

cat file_list.txt | while read line
do
rsync --dry-run -avzPs '$line' '123.456.122.111:$line'
done

file_list.txt는 다음과 같습니다 -

/some/random/directory/file_name.txt
/some/other/directory/a file name.html
.....

$line내가 겪고 있는 문제는 작동 방식으로 인해 rsync 명령이 매개 변수와 함께 작동하지 않는다는 것입니다 --protect-args. 일부 파일 이름에 공백이 있기 때문에 명령에 이 옵션을 포함해야 합니다.

그러나 텍스트 문서에 전달하려는 모든 경로와 특정 파일이 포함되어 있기 때문에 와일드카드를 사용하여 모든 것을 전달할 수는 없습니다. 이 문제를 어떻게 해결할 수 있나요?

답변1

--files-from=파일을 지정하는 데 사용하지 않는 이유는 무엇입니까 ?

rsync -avzP --files-from=file_list.txt 123.456.122.111:

--no-relative전체 경로를 요구하지 않고 모든 파일을 동일한 디렉터리에 두려는 경우에도 이를 추가할 수 있습니다.

답변2

변수 이름 주위에는 작은따옴표를 사용할 수 없습니다. 작은따옴표로 묶인 문자열은 평가되지 않습니다.

스크립트는 다음과 같아야 합니다.

cat file_list.txt | while read line
do
    rsync --dry-run -avzPs "$line" "123.456.122.111:$line"
done

관련 정보