- 作者:老汪软件技巧
- 发表时间:2024-01-03 15:00
- 浏览量:
比如通过如nginx,需要被下载的设置目录,另一条linux使用wget下载
1.优点:相对简单
2.缺点:每次要设置,如果目录设置的太宽泛则安全性堪忧。
(三)rsync
rsync搭配一些工具可以实现实时同步,可以参考这篇:
rsync+lsync实时备份
单纯的使用rsync比较简单
1.优点:相对简单
2.缺点:也是要设置目录,操作不灵活。而且rsync吃资源
(四) copy(scp)
这个算是比较好的方法,相当于通过ssh直连。
二、scp具体操作 1.安装scp
apt-get install openssh-client
或
dnf install openssh-clients
2.具体操作
设备1:192.168.0.100
设备2:192.168.0.200
将本地的文件复制到另一台设备
将设备1的/aaa目录的file.ini复制到设备2的/bbb目录下,使用root登录:
scp /aaa/file.ini root@192.168.0.200:/bbb/
将另一台设备复制到本地设备
将设备2的/bbb目录的file.ini复制到本地的/aaa目录下,使用root登录:
scp root@192.168.0.200:/bbb/file.ini /aaa/
第一次连接会提示是否继续连接,选择yes,然后输入密码。之后每次都需要设定密码
3.自动填写密码的方法
每次使用都需要重新输入密码,而且需要两次输入
安装
apt-get install sshpass
yum install sshpass
在上面的命令加上 -p ‘’ ,引号中的换成登录密码即可
sshpass -p 'password' scp /aaa/file.ini root@192.168.0.200:/bbb/
三、bash脚本 1.创建脚本文件
vi /etc/scp.sh
注意下面脚本中的常量改为自己的实际情况,下面会有脚本使用方法说明:
#!/bin/bash
# 常量设置区域(也可以改造成参数)
remote_ip="192.168.0.100" # 连接的设备地址
login_user="root" # 登录的账户
password="aaabbbccc" # 远程root的密码
# 运行区域
if [ $1 == "send" ];
then
# 发送文件
sshpass -p $password scp $3/$2 $login_user@$remote_ip:$4/
else
# 下载文件
sshpass -p $password scp $login_user@$remote_ip:$4/$2 $3/
fi
赋予执行权限
chmod +x /etc/scp.sh
2.运行及说明
我这个脚本这样用
第一个参数:传输方式,接收(send)还是发送(rece)
第二个参数:文件名或目录名(不带上级目录)
第三个参数:本地目录(不带后面的/)
第四个参数:远程目录(不带后面的/)
将file.ini从本地的/aaa目录发送到远程主机的/bbb/下:
/etc/scp.sh send file.ini /aaa /bbb
第一次需要先用手动输入一次命令,过了第一个输入yes的提示,后面就可以用脚本了。
这个脚本可以进一步封装,再被调用。