通过sftp自动化备份Windows至服务器

根据网络资源结合实际生产环境整理

一、需求

由于本地备份的空间限制,需要把各系统应用和数据库远程备份到sftp搭建的服务器中

二、疯狂找程序和脚本测试(找到两款Windows下可以实现sftp传输的软件)

1、直接通过cmd或powershell脚本自带程序访问服务器,(前提需要在应用程序中选中OpenSSH客户端和服务端进行加载)有可能需要服务器进行重启操作,不建议此类型

访问命令

①sftp -P 22 user@1.1.1.1

(-P 22 制定sftp访问端口号;user为访问sftp用户名;1.1.1.1 为sftp服务器地址)

②输入密码进入sftp界面

③通过命令操作

ls 查看可访问的目录文件夹中的目录和内容

put -r D:\临时 /123

通过put上传命令把本地D盘下临时文件夹 上传到服务器 123目录下面

put命令上传单个文件可以不加-r命令,但是上传文件夹必须加上 -r 选项

get /123/锦绣华北旅游年票项目.xlsx C:\Users\admin\Desktop

通过get下载命令,把需要的问题下载到指定位置(如果需要下载目录 需要加 -r 选项)

由于本人技术有限,通过cmd编写了一些脚本无法自动运行,便寻找下一个方案

2、FileZilla软件

FileZilla - The free FTP solution

通过官网链接下载了此软件(界面清爽,使用方便)

安装包有免安装版和安装版两种,

打开filezilla程序就是此页面,根据需要输入主机地址、用户名、密码和端口号点击快速连接即可

提示保存密钥(根据需要选择),然后看到本地站点和远程站点,通过手动拖拽操作即可

查询了好多文档,filezilla无法实现自动化运行,继续寻找下一个方案

3、WinSCP软件

WinSCP官方网站

通过官方软件下载安装包,运行此安装程序

①点击标签页,站点,站点管理器出现如图所示

选择连接协议,主机名,端口号,用户名和密码点击登录即可

第一次登录会提示保存密钥(建议选择保存)

然后通过对比拖拽的方式手动复制

②通过脚本任务自动化运行(符合生产的解决方案)

a、建议第一次通过打开WinSCP软件连接,保存密钥

b、本地新建记事本,把下列脚本粘贴进去重命名为*.bat文件,根据自己实际环境进行修改测试

@echo off
set SFTP_HOST=1.1.1.1            #此处填写服务器地址
set SFTP_USER=user               #此处填写连接服务器用户名
set SFTP_PASSWORD=123            #此处填写连接服务器密码
set SFTP_REMOTE_PATH=/123/       #此处填写服务器打开的路径
set LOCAL_PATH=D:\soft           #此处填写本地要上传的路径
set UPLOAD_PATH=D:\soft          #此处填写本地要上传的路径
set REMOTE_UPLOAD_PATH=/123/     #此处填写上传到服务器的路径

(
echo option batch abort
echo option confirm off
echo open sftp://%SFTP_USER%:%SFTP_PASSWORD%@%SFTP_HOST%
echo put %UPLOAD_PATH%* %REMOTE_UPLOAD_PATH% 
echo exit
) | "C:\Program Files (x86)\WinSCP\WinSCP.com" /command /log=C:\Users\admin\Downloads\winscp.log     
#此处填选择安装程序的路径并指定日志保存文件的路径                                                                                                                                                                     (日志文件根据需要保存,上传文件多时比较占用空间)

pause          #此处测试写的pause可以看到命令执行结果,实际可以更改为 exit 自动退出

c、 测试没问题后,打开任务管理计划,新建任务,修改触发器和操作两个选项保存即可

经过测试无问题,可以正常使用,希望此文档可以帮助到大家。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用以下脚本来进行SFTP上传备份,使用账号密码进行登录: ```bash #!/bin/bash # 设置SFTP服务器信息 SFTP_HOST="sftp.example.com" SFTP_PORT="22" SFTP_USER="username" SFTP_PASS="password" SFTP_REMOTE_DIR="/path/to/remote/dir" # 设置本地备份文件路径 LOCAL_BACKUP_DIR="/path/to/local/backup/dir" # 获取最新备份文件名 BACKUP_FILE=$(ls -Art $LOCAL_BACKUP_DIR | tail -n 1) # 使用expect命令来自动化SFTP上传过程 expect -c " spawn sftp -oPort=$SFTP_PORT $SFTP_USER@$SFTP_HOST expect \"password:\" send \"$SFTP_PASS\r\" expect \"sftp>\" send \"cd $SFTP_REMOTE_DIR\r\" expect \"sftp>\" send \"put $LOCAL_BACKUP_DIR/$BACKUP_FILE\r\" expect \"sftp>\" send \"exit\r\" interact " ``` 在脚本中,我们使用了`expect`命令来模拟用户在终端中输入命令的过程,从而自动化SFTP上传过程。具体来说,我们在`expect`命令中执行以下操作: 1. 使用`spawn`命令启动`sftp`程序,并传递SFTP服务器的IP地址、端口号和登录用户名。 2. 当程序提示输入密码时,使用`send`命令发送密码。 3. 当程序提示`sftp>`时,使用`send`命令发送命令来切换到远程目录。 4. 当程序提示`sftp>`时,使用`send`命令发送命令来上传本地备份文件。 5. 当程序提示`sftp>`时,使用`send`命令发送命令来退出`sftp`程序。 6. 使用`interact`命令结束`expect`命令。 注意,在使用`expect`命令时,需要将SFTP登录密码明文写在脚本中,这可能存在安全风险。如果你需要更加安全的登录方式,可以考虑使用SSH密钥认证方式登录SFTP服务器
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值