scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
不仅可以把本地文件复制到远程服务器,也可以在本地操作,把远程文件从远程复制到本地。
1、从本地复制到远程
命令格式:
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file
第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;
复制目录命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
2、从远程复制到本地
从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例
scp -r remote_username@remote_ip:remote_folder local_folder
或者
scp -r remote_ip:remote_folder local_folder
3、后台运行
一般,我们拷贝的文件都很大,想让scp在后台运行。通常我们要建立ssh 信任关系。即不输入密码就能拷贝,但是通常情况下这样的条件不能满足。可以用下面的方法来实现后台运行scp:
- scp remote_username@remote_ip:remote_file local_folder
- 输入密码,回车。
- Ctrl+z,挂起当前进程。
- bg,让挂起的进程继续运行。
当然你也可以使用下面的命令查看后台任务或者将任务切换到前台:
jobs //查看任务,返回任务编号n和进程号
bg %n //将编号为n的任务转后台运行
fg %n //将编号为n的任务转前台运行
ctrl+z //挂起当前任务
ctrl+c //结束当前任务
注意:scp 命令不支持断点续传,挂起scp进程可能导致数据缺失。请使用rsync命令。