Linux scp 跨服务器拷贝 + 服务器简介

笔者刚接触到服务器这个概念,所以就类似于一个在深山老林中的人刚接触电脑一样,所以首先想介绍一下啥是服务器。然后再记录一下scp的用法

一、科普

  • 服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。根据服务器所提供的服务,一般来说服务器都具备承担响应服务请求、承担服务、保障服务的能力。服务器作为电子设备,其内部的结构十分的复杂,但与普通的计算机内部结构相差不大,如:cpu、硬盘、内存,系统、系统总线等。根据不同的用途,服务器也分为好多种(笔者搜“服务器百度百科”,然后下面就出来:网络服务器、云服务器、电脑服务器……)百度知道上面也有:web服务器,dns服务器,存储服务器,代理服务器,防火墙系统,email系统,ftp服务器……
  • 超算、服务器、个人PC的区别:超级计算机指得是具有很强计算能力的计算机集群,一般包括好几千颗高性能的cpu,计算能力是最强的。而服务器的范围很广,但说白了也是一台高性能的电脑,用来专门对外提供网页,查询,存储或初级计算服务等等功能,可以是多cpu,也可以是单cpu,但规模和超级计算机比起来要差很多。而个人电脑就是只有一颗或多颗(很少有用多cpu作个人电脑的,费电)的普通电脑,可以完成上网,编程,看电影,玩游戏等。计算能力差,不适合作科学计算。

好了,现在笔者知道了,服务器、超算都是电脑,它们只不过性能更高。可以简单将服务器、超算、个人PC的性能做如下比较:

  • 性能:个人PC<服务器<超算
  • 价格:个人PC<服务器<超算
  • 规模:个人PC<服务器<超算

ps:一分钱一分货的道理彰显无遗。

二、scp 简单使用

1、cp

超算和服务器一般都是linux系统,linux系统中拷贝文件的指令是cp(copy file),其用法简单介绍如下所示:

cp [options] source dest  #or
cp [options] source... directory 
#example
cp -r test/ newtest #dir
cp ./a.sh ../       #file

参数说明:

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
  • -f:覆盖已经存在的目标文件而不给出提示。
  • -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -l:不复制文件,只是生成链接文件。

【注】r和R参数的区别:-r 的作用是递归,可复制目录,如果复制目录必须加此选项。-R 的作用仅仅是复制目录。两者功能上是等价的。

2、scp

Linux scp(secure copy) 命令用于 Linux 之间复制文件和目录;scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

scp [options] file_source file_target 
#example
scp usr1@IP1:dir/a.sh ./   #file
scp ./a.sh usr1@IP1:dir/   #file
scp -r usr1@IP1:dir/ ./    #dir

关于file_source

[[user@]host1:]file1

关于file_target

[[user@]host2:]file2

关于file_sourcefile_target间的空格:可加...,也可不加

关于options

[-1246BCpqrv] 
[-c cipher] 
[-F ssh_config] 
[-i identity_file]
[-l limit] 
[-o ssh_option] 
[-P port] 
[-S program]

参数说明:

  • -1: 强制scp命令使用协议ssh1
  • -2: 强制scp命令使用协议ssh2
  • -4: 强制scp命令只使用IPv4寻址
  • -6: 强制scp命令只使用IPv6寻址
  • -B: 使用批处理模式(传输过程中不询问传输口令或短语)
  • -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q: 不显示传输进度条。
  • -r: 递归复制整个目录。
  • -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
  • -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
  • -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
  • -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
  • -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
  • -P port:注意是大写的P, port是指定数据传输用到的端口号
  • -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

3、一个小问题:

笔者在写这篇博文之前曾经遇到一个小问题,问题描述如下:笔者现在有两个服务器的号,

A  IP1:usr1
B  IP2:usr2

然后笔者想通过scp跨服务器拷贝文件,然后笔者尝试了如下命令:

在A端
scp a.sh usr2@IP2:dir2/    #can't
ping IP2                   #can't
在B端
scp b.sh usr1@IP1:dir1/    #can
ping IP1				   #can

也就是说,A的【开放性】要优于B,在B端将B的文件拷贝到A端可以,反之,从A端将A的文件拷贝到B端不可以。那么如何将A的文件拷贝到B端呢?可以在B端将A的文件拷贝到B端,命令如下:

在B端
scp usr1@IP1:dir1/a.sh ./

这样问题就迎刃而解了。


另外笔者发现,在windows下用cmd也可以scp;关于【开放性】,笔者暂认为:个人PC<服务器<超算。

要用scp的话,考虑的优先级为:
个人PC>服务器>超算

关于IP查询:

ipconfig	#cmd,找ipv4
ifconfig 	#linux,找inet

你可能感兴趣的:(#,Linux,操作小技巧,常识,linux,网络)