当通过SSH从一个UNIX系统复制到另一个UNIX系统时,是否可以在一次操作中将每个文件复制到不同的目的地(即避免为每个文件设置新的SSH连接的开销),例如通过指定源和文件中的目标是这样的:
/Users/apple/a --> /home/orange/.
/etc/var/b --> /usr/local/var/.
/other/c --> /wildly/different/.
答案 0 :(得分:1)
您可以采取的一种策略是在本地系统(发件人)上构建一个“根”目录,模仿您希望在接收计算机上拥有的文件结构,然后将其复制到root({{1在另一台机器上。例如,您可以将以下临时目录构造为“root”:
/
然后只需将/tmp/root
/tmp/root/home/orange/a
/tmp/root/usr/local/var/b
/tmp/root/wildly/different/c
复制到远程计算机上的/tmp/root
,这只是一次复制操作。
答案 1 :(得分:1)
我想你可以这样写:
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 USER@HOST ' tar -xf -
mv tmp/a /home/orange/
mv tmp/b /usr/local/var/
mv tmp/c /wildly/different/
rmdir tmp/
'
rm -r tmp/
。 。 。不是很优雅,但它只需要一个SSH连接。
答案 2 :(得分:1)
您可能需要考虑SSH session sharing。不再重新认证,所以它很快。