这个专栏记录我学习/科研过程中遇到的一些小问题以及解决方案,一些问题可能比较蠢请见谅。自用,仅供参考。
------------------------------------------------------------------------------------
Linux服务器之间的文件复制:scp
scp指令的用法总是忘记,在这里记录一下。
在两台服务器可以网络相互通信的情况下,可以使用scp命令在服务器之间复制文件或文件夹(即远程拷贝secure copy指令)。需要区别cp指令,cp指令只能在本机之间实现文件或文件夹的复制,不能跨服务器,并且scp的传输是加密的。
从本地复制到远程:
scp [可选参数] local_file [remote_username@]remote_ip:remote_file
从远程复制到本地:
scp [可选参数] [remote_username@]remote_ip:remote_file local_file
如果服务器防火墙没有设定端口,则可以不使用-P指定端口,默认端口号为22。
如果要把服务器某个端口上的文件夹(以及其中的所有内容)复制到另一个端口,需要使用 -r 来递归复制:
scp -r -P 目标端口号 本地文件名 用户名@目标服务器IP:要转移到的地址
按照提示输入远程服务器的密码,即可开始转移。如果需要把这个文件夹再复制回本端口:
scp -r -P 目标端口号 用户名@目标服务器IP:目标地址 本地地址
scp的可选参数如下(参考链接):
-1:强制scp命令使用ssh1协议;
-2:强制scp命令使用ssh2协议;
-4:强制scp命令只使用IPv4寻址;
-6:强制scp命令只使用IPv6寻址;
-B:使用批处理模式(传输过程中不询问传输口令或短语);
-C:允许压缩(将-C标志传递给ssh,从而打开压缩功能);
-p:保留原文件的修改时间,访问时间和访问权限;
-q:静默模式,不显示传输进度条;
-r:递归复制整个目录,复制文件夹时必须带上此参数;
-v:详细方式显示输出;
-c cipher:以cipher将数据传输进行加密,这个选项将直接传递给ssh;
-F ssh_config:指定一个替代的ssh配置文件,此参数直接传递给ssh;
-i identity_file:从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh;
-l limit:限定用户所能使用的带宽,以kb/s为单位;
-P port:大写的P, port是指定数据传输用到的端口号;
-S program:指定加密传输时所使用的程序,此程序必须能够理解ssh1的选项。
还有一种管理文件的方式是使用MobaXterm。它可以实现服务器与本机的文件上传下载。
其它还有一些实现不同服务器copy文件(夹)的方法:ftp、samba服务、sftp等。