Linux指令——scp:传输文件
2023-12-13 09:10:25
Linux指令——scp:传输文件
简介:
Linux文件互传指令
使用方法:
scp [可选参数] file_source file_target
# 可选参数一般为-r,递归传输
# 举例如下:
scp /home/test/test.txt root@192.168.1.200:/home/test/test.txt # 本地文件传远程
scp root@192.168.1.200:/home/test/test.txt /home/test/test.txt # 复制远程文件到本地
参考资料:
https://www.runoob.com/linux/linux-comm-scp.html
Linux scp 命令用于 Linux 之间复制文件和目录。
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。
语法
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 [可选参数] file_source file_target
参数说明:
- 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)的选项。
使用sshpass工具来自动输入密码
安装sshpass(ubuntu系统)
sudo apt install sshpass -y
其实上面的建立信任关系的做法是最方便和安全的做法,但是在有些场景下(比如远端的authorized_keys是不能随意更改的),那么这个时候我们就可以借助sshpass这个第三方工具来完成ssh连接时的密码输入。先看一下sshpass的man手册中是如何描述的:
sshpass - noninteractive ssh password provider
从描述上就可以清晰的了解到,sshpass的设计就是为了使用非交互的场景下输入ssh连接的密码。
sshpass的使用比较简单,先看一下帮助文档:
nfer@nfer-VirtualBox:~$ sshpass
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename Take password to use from file
-d number Use number as file descriptor for getting password
-p password Provide password as argument (security unwise)
-e Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
其中-p是直接指定密码,-f是从文件中读取密码。那么一个使用sshpass的简单例子就是:
sshpass -p nferzhuang scp a.txt [nferzhuang@192.168.1.101](mailto:nferzhuang@192.168.1.101):/home/nferzhuang/a.txt
示例代码:下载日志
rm -rf /home/user_name/logs_zip/
mkdir -p /home/user_name/logs_zip/
count=0
IP="10.0.98.9"
count=`expr $count + 1` && echo "$IP start $count"
sshpass -p qwer1234 scp -r user_name@$IP:/home/user_name/user_name_444444_logs/ /home/user_name/logs_zip/
count=`expr $count + 1` && echo "$IP start $count"
sshpass -p qwer1234 scp -r user_name@$IP:/home/user_name/user_name_555555_logs/
文章来源:https://blog.csdn.net/u011198687/article/details/134893428
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!