• 作者:老汪软件技巧
  • 发表时间: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的提示,后面就可以用脚本了。

这个脚本可以进一步封装,再被调用。