Linux scp命令用法

本文深入探讨了在Linux系统中复制文件的三种常见方法:ftp、samba服务和scp命令,并提供了具体命令实例和安装ssh服务的步骤。

1. 基本概念

不同的Linux之间copy文件常用有3种方法:
第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy。
第二种方法就是采用samba服务,类似Windows文件copy 的方式来操作,比较简洁方便。
第三种就是利用scp命令来进行文件复制。

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录.
scp命令的用处:
scp在网络上不同的主机之间复制文件,它使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远程拷贝文件。
scp命令基本格式:
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
scp命令的参数说明:
-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)的选项。


2 常用命令

(1)将本地文件拷贝到远程:scp  文件名 用户名@计算机IP或者计算机名称:远程路径
   scp 009.cap root@172.16.6.195:/root
(2)从远程将文件拷回本地:scp  用户名@计算机IP或者计算机名称:文件名 本地路径
     scp  root@172.16.6.195:/root/007.cap /root

    scp root@192.168.0.12:/home/oracle/TIANJIN_SMS_WAIT.dmp /root/

(3)将本地目录拷贝到远程:scp -r 目录名   用户名@计算机IP或者计算机名称:远程路径
(4)从远程将目录拷回本地:scp -r   用户名@计算机IP或者计算机名称:目录名本地路径

使用scp命令需要服务端linux提供ssh服务(linux默认是没有安装ssh服务的)
1.是否安装ssh:可连接相应的ssh服务查看,ssh host;如出现:ssh: connect to host *** port 22: Connection refused,说明尚未安装ssh服务。
2.安装ssh服务:sudo apt-get install openssh-server 自动安装ssh服务。
3.启动:sudo /etc/init.d/ssh start
4.停止:sudo /etc/init.d/ssh stop
5.配置:ssh默认的端口是22,可以修改配置文件更改端口,然后重启ssh服务即可。(注:配置文件/etc/ssh/sshd_config)

 

### Linux 中 `scp` 命令用法 #### 什么是 `scp`? `scp` 是 Secure Copy 的缩写,它是一种基于 SSH 登录的安全远程文件拷贝命令。通过该命令可以实现本地计算机与远程服务器之间的文件或目录传输,或者两台远程服务器之间的数据交换[^2]。 --- #### `scp` 命令基本语法 以下是 `scp` 命令的标准语法: ```bash scp [选项] 源路径 目标路径 ``` 其中 `[选项]` 可用于指定不同的行为模式,而源路径和目标路径分别表示需要复制的数据位置以及存储的目标地址[^1]。 --- #### 参数说明 常见的参数及其功能如下: | 参数 | 描述 | |------|------| | `-P port_number` | 指定连接到远程主机时使用的端口号,默认为 22 。 | | `-r` | 表示递归操作,适用于整个目录的复制过程。 | | `-q` | 静默模式,不显示进度条或其他信息。 | | `-C` | 启用压缩机制来加速大文件传输速度。 | 这些选项可以根据实际需求组合使用以完成更复杂的任务[^5]。 --- #### 实际应用案例分析 ##### **从本地向远程服务器上传单个文件** 假设有一个名为 example.txt 的文档位于当前用户的家目录下,希望将其发送至 IP 地址为 192.168.0.10 上用户名为 user 的账户根目录里,则可执行下面这条语句: ```bash scp ~/example.txt user@192.168.0.10:/root/ ``` 此过程中可能会被提示输入对应的身份验证密码。 ##### **下载远端单一档案回到本机环境当中** 如果想把刚才提到那台设备上的 another_file.conf 下载回来存放到桌面的话,那么应该这样编写指令: ```bash scp user@192.168.0.10:/etc/another_file.conf ~/Desktop/ ``` ##### **批量迁移资料夹内容** 当面对较大规模项目结构的时候,利用 `-r` 开关能够轻松搞定整棵树状体系下的所有子项转移工作。比如要把 local_folder 整体迁移到另一处地方去: ```bash scp -r ./local_folder/* destination_user@destination_host:/target/directory/ ``` 另外值得注意的是,在某些特殊情况下(例如 Windows 平台上),只要预先配置好 Git Bash 或其他支持工具之后同样可行[^3]。 --- #### 自动化脚本构建方法 为了简化重复性的日常运维活动流程,还可以创建专属 Shell Script 来封装固定逻辑步骤。例如先定义这样一个简单的模板文件叫做 `scp_script.sh` ,里面包含必要的动作描述;接着赋予其足够的权限以便随时调用即可[^4]: ```bash #!/bin/bash SOURCE="/path/to/source" DESTINATION="remote_user@remote_host:/path/to/dest" scp -Cr "$SOURCE" "$DESTINATION" if [[ $? -eq 0 ]]; then echo "Files successfully transferred." else echo "An error occurred during transfer." >&2 fi ``` 记得给予适当读取/修改许可权之前测试一遍准确性哦! ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值