通過SSH從一個UNIX系統複製到另一個UNIX系統時,是否可以在一個操作中將每個文件複製到不同的目標(即避免爲每個文件設置新的SSH連接的開銷),例如通過指定在一個文件中像這樣的源和目標:將多個文件複製到多個目標
你可以採取/Users/apple/a --> /home/orange/.
/etc/var/b --> /usr/local/var/.
/other/c --> /wildly/different/.
通過SSH從一個UNIX系統複製到另一個UNIX系統時,是否可以在一個操作中將每個文件複製到不同的目標(即避免爲每個文件設置新的SSH連接的開銷),例如通過指定在一個文件中像這樣的源和目標:將多個文件複製到多個目標
你可以採取/Users/apple/a --> /home/orange/.
/etc/var/b --> /usr/local/var/.
/other/c --> /wildly/different/.
一種策略是構建您的本地系統(發件人)模仿文件結構你會在一個「根」目錄喜歡在接收機器上,然後將其複製到另一臺機器上的根(/
)。例如,您可以構建以下臨時目錄爲「根」:
/tmp/root
/tmp/root/home/orange/a
/tmp/root/usr/local/var/b
/tmp/root/wildly/different/c
然後只複製/tmp/root
到/
遠程機器,這將僅僅是一個單一的複製操作上。
我想你可以寫這樣的事情:
mkdir ./tmp/
ln -s /Users/apple/a /etc/var/b /other/c ./tmp/
# Now ./tmp/ has symbolic links to all these files.
# Tar the files to STDOUT, and pipe that over SSH to a
# tar that's reading from STDIN:
tar -ch tmp/* \
| ssh [email protected] ' tar -xf -
mv tmp/a /home/orange/
mv tmp/b /usr/local/var/
mv tmp/c /wildly/different/
rmdir tmp/
'
rm -r tmp/
。 。 。不是很優雅,但它只需要一個SSH連接。
您可能想要考慮SSH session sharing。沒有更多的重新認證,所以它很快。
我很失望,這是徹底關閉。爲了記錄,我投票把它移到超級用戶。 – ruakh 2013-04-22 03:28:23