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.