Anda dapat menggunakan xargs atau persis persyaratan ini. Anda dapat menggunakan -I sebagai placeholder untuk input yang diterima dari pipeline, lakukan
echo "myserver:${HOME}/dir/2/" | xargs -I {} rsync -r "{}" /local/path/
(atau) gunakan ~ tanpa tanda kutip ganda yang tidak diperluas ke HOME jalur direktori.
echo myserver:~/dir/2/ | xargs -I {} rsync -r "{}" /local/path/
Ini
rsync -r "$(echo myserver:~/dir/2/)" /local/path/
adalah cara termudah untuk melakukannya.
Piping menghubungkan stdouts dengan stdins. Di sini Anda ingin hasilnya mengarah ke argumen, jadi Anda memerlukan sesuatu selain perpipaan klasik.
Sesuatu itu adalah substitusi perintah ($() ).
Anda dapat memberikan rsync daftar file yang akan diunduh dalam file atau pada input standar dengan menggunakan --files-from :
echo "dir/2/" | rsync --files-from=- -r [email protected]: /local/path/
- membuat rsync membaca dari masukan standar. Server tidak dapat diberikan ke rsync dengan cara ini. Hanya akan ada satu koneksi yang dibuat ke server dan semua file akan ditransfer melalui koneksi tersebut.
Jika Anda menggunakan -a atau --archive dengan --files-from maka Anda perlu menambahkan -r secara eksplisit atau --recursive jika Anda ingin melakukan rekursi sejak opsi itu, meskipun itu adalah bagian dari -a , dinonaktifkan saat --files-from digunakan.