Linux SCP 命令
Linux scp 命令用于 Linux 之间复制文件和目录,scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
scp是secure copy的简写,用于在 Linux 下进行远程拷贝文件的命令,scp传输是加密的,可能会稍微影响一下速度。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然rsync会比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘 I/O 非常高,而scp基本不影响系统正常使用。
注意:使用 scp 命令要确保使用的用户具有可读取远程服务器相关文件的权限,否则 scp 命令无法起作用。
开启ssh服务
第一步:安装 openssh-server (通常 Linux 系统会默认安装 openssh 的客户端软件 openssh-client),所以需要自己安装一下服务端 :
sudo apt-get install openssh-server
第二步:开启 OpenSSH 服务
sudo /etc/init.d/ssh start
或者
sudo service ssh start
第三步:验证是否开启服务
ps -e | grep ssh (或sshd)
如果有输出 sshd 证明已经开启 ssh 服务
远程 SSH
ssh username@192.168.1.112
username 为该硬件 @192.168.1.112 的用户账号,回车后一般会提示你输入相应密码
设置开机启动
进入 /etc/rc.local 编辑配置
vi /etc/rc.local
在最后插入两行
-
service ssh start -
exit 0
保存退出
这样即可在 Ubuntu 开机时自动启动 ssh-server 服务
scp用法和常用命令
-
从服务器上下载文件
scp username@servername:/path/filename /var/www/local_dir (本地目录)
示例 :scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt的文件下载到/var/www/local_dir (本地目录)
-
上传本地文件到服务器
scp /path/filename username@servername:/path
示例 :scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中
-
从服务器下载整个目录
scp -r username@servername:/var/www/remote_dir/ (远程目录) /var/www/local_dir (本地目录)
示例 :scp -r root@192.168.0.101:/var/www/test /var/www/
-
上传目录到服务器
scp -r local_dir username@servername:remote_dir
示例 :scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录
常见命令参数
usage: scp [-1246Bcpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 ... [[user@]host2:]file2
表格
| 参数 | 说明 |
|---|---|
-q |
quiet(静默模式,不显示传输进度) |
-r |
recursive(递归复制整个目录) |
-p |
property(保留原文件的修改时间、访问时间和权限) |
-v |
verbose(详细输出传输过程) |
-i: |
identity_file(从指定文件中读取传输时使用的密钥文件,此参数直接传递给 ssh) |
-P: |
port(指定远程主机的端口号) |
常见命令展示
SCP 命令的实际应用概述:从本地服务器复制到远程服务器
(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 个指定了文件名
(2) 复制目录:
命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
第 1 个指定了用户名,命令执行后需要输入用户密码
第 2 个没有指定用户名,命令执行后需要输入用户名和密码