--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

関連情報