15.4 在主机之间安全复制文件
scp
如果你时间紧,但想安全地把一个文件从一台计算机复制到另一台,scp
(表示“secure copy”)就是需要使用的命令。以下是scp
命令的基本使用模式:
scp user@host1:file1 user@host2:file2
这种语法格式基本上与传统的cp
命令一样,只不过现在延伸到了网络。举个例子将能更明白地说明问题。
假设你想使用scp
命令把backup.sh
从pound
(IP地址为192.168. 0.15,用户名为ezra)复制到eliot
(IP地址为192.168.0.25,用户名为tom)的/home/tom/bin
目录,如下所示:
$ pwd
/home/ezra
$ ls ~/bin
backup.sh
$ scp ~/bin/backup.sh tom@192.168.0.25/home/tom/bin
backup.sh 100% 8806 8.6KB/s 00:00
$
这个命令不会提示输入密码,因为在15.2节中已经设置好了,所以ssh
现在不需要密码也可以从pound
连接到eliot
,因为scp
依靠的也是ssh
,因此在这儿也不需要密码。如果还没有设置好,在命令继续执行前就会要求输入密码。
假设想把几个JPEG图片文件从pound
复制到eliot
。没有问题,使用通配符就可以了,如下所示:
$ ls -1 ~/covers
earth_wind_&_fire.jpg
handel_-_chamber_music.jpg
smiths_best_1.jpg
strokes_-_is_this_it.jpg
u2_pop.jpg
$ scp *.jpg tom@192.168.0.25:/home/tom/album_covers
earth_wind_&_fire.jpg 100% 44KB 43.8KB/s
handel_-_chamber_music.jpg 100% 12KB 12.3KB/s
smiths_best_1.jpg 100% 47KB 47.5KB/s
strokes_-_is_this_it.jpg 100% 38KB 38.3KB/s
u2_pop.jpg 100% 9222
9.0KB/sQ
现在,假设你想换个复制的方向。你仍然在pound
上,想把Libby
的几个图片从eliot
复制到pound
上,而且还要复制到与当前工作目录不同的另一个目录,如下所示:
$ scp tom@192.168.0.25:/home/tom/pictures/dog/libby*~/pix/libby
libby_in_window_1.20020611.jpg 100% 172KB 172.4KB/s
libby_in_window_2.20020611.jpg 100% 181KB 180.8KB/s
libby_in_window_3.20020611.jpg 100% 197KB 196.7KB/s
libby_in_window_4.20020611.jpg 100% 188KB 187.9KB/s
当需要在计算机之间安全地复制文件时,scp
命令真的很有用。不过,如果要复制的文件很多,你很快就会发现使scp
还是麻烦。在这种情况下,你可能还是想用SFTP,或者挂载一个Samba共享(这将16.5节中详细介绍)。