15.4 在主机之间安全复制文件

scp

如果你时间紧,但想安全地把一个文件从一台计算机复制到另一台,scp(表示“secure copy”)就是需要使用的命令。以下是scp命令的基本使用模式:

  1. scp user@host1:file1 user@host2:file2

这种语法格式基本上与传统的cp命令一样,只不过现在延伸到了网络。举个例子将能更明白地说明问题。

假设你想使用scp命令把backup.shpound(IP地址为192.168. 0.15,用户名为ezra)复制到eliot(IP地址为192.168.0.25,用户名为tom)的/home/tom/bin目录,如下所示:

  1. $ pwd
  2. /home/ezra
  3. $ ls ~/bin
  4. backup.sh
  5. $ scp ~/bin/backup.sh tom@192.168.0.25/home/tom/bin
  6. backup.sh 100% 8806 8.6KB/s 00:00
  7. $

这个命令不会提示输入密码,因为在15.2节中已经设置好了,所以ssh现在不需要密码也可以从pound连接到eliot,因为scp依靠的也是ssh,因此在这儿也不需要密码。如果还没有设置好,在命令继续执行前就会要求输入密码。

假设想把几个JPEG图片文件从pound复制到eliot。没有问题,使用通配符就可以了,如下所示:

  1. $ ls -1 ~/covers
  2. earth_wind_&_fire.jpg
  3. handel_-_chamber_music.jpg
  4. smiths_best_1.jpg
  5. strokes_-_is_this_it.jpg
  6. u2_pop.jpg
  7. $ scp *.jpg tom@192.168.0.25:/home/tom/album_covers
  8. earth_wind_&_fire.jpg 100% 44KB 43.8KB/s
  9. handel_-_chamber_music.jpg 100% 12KB 12.3KB/s
  10. smiths_best_1.jpg 100% 47KB 47.5KB/s
  11. strokes_-_is_this_it.jpg 100% 38KB 38.3KB/s
  12. u2_pop.jpg 100% 9222
  13. 9.0KB/sQ

现在,假设你想换个复制的方向。你仍然在pound上,想把Libby的几个图片从eliot复制到pound上,而且还要复制到与当前工作目录不同的另一个目录,如下所示:

  1. $ scp tom@192.168.0.25:/home/tom/pictures/dog/libby*~/pix/libby
  2. libby_in_window_1.20020611.jpg 100% 172KB 172.4KB/s
  3. libby_in_window_2.20020611.jpg 100% 181KB 180.8KB/s
  4. libby_in_window_3.20020611.jpg 100% 197KB 196.7KB/s
  5. libby_in_window_4.20020611.jpg 100% 188KB 187.9KB/s

当需要在计算机之间安全地复制文件时,scp命令真的很有用。不过,如果要复制的文件很多,你很快就会发现使scp还是麻烦。在这种情况下,你可能还是想用SFTP,或者挂载一个Samba共享(这将16.5节中详细介绍)。