winscp以命令行方式同步服务器数据到PC机磁盘上

Posted 浆糊jun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winscp以命令行方式同步服务器数据到PC机磁盘上相关的知识,希望对你有一定的参考价值。

目前服务器上每日会产生备份文件,需要使用winscp工具把备份同步到本地PC机硬盘上。平时都是图形界面用鼠标点击方式来同步的,效率低下,因此编写了winscp自动同步脚本,并加入到计划任务中定时自动运行。

 

1.在linux服务器创建备份专用帐号:

chattr -i /etc/{passwd,shadow,group,gshadow}
useradd bak_user
echo \'123456789\' | passwd --stdin bak_user
chattr +i /etc/{passwd,shadow,group,gshadow}
su - bak_user
exit

 

2.创建WINSCP同步脚本 c:\\SERV_BAK.txt,该脚本用于同步数据到本地:option echo off

option batch continue
option confirm off                                 #无需确认直接操作
option transfer binary
option synchdelete
on #服务端如果没有该文件,则将本地文件删除 open sftp://bak_user:123456789@服务器IP:33302 #分别填入服务器帐号、密码、IP、ssh端口 cd /backup/bitmore.com #进入要同步的目录内,会将该目录下所有子目录和文件进行同步 lcd c:\\bitmore.com #进入本地目标目录,该目录要事先建立好,否则文件会传到winscp的程序目录下。 synchronize local #相当于rsync,将有差异的数据由服务器端同步到本地。local:同步到本地。remote:同步到对端
#get mysql-bin.* #可同步指定类型的文件,#用于注释 close
exit

 注:如果路径名称带有中文,最好用notepad++修改脚本的编码为UTF-8格式,否则可能同步失败。

 

3.在windows端CMD窗口执行【适合一次性执行】

"D:\\Program Files (x86)\\WinSCP\\WinSCP.exe" /console /script=c:\\SERV_BAK.txt      #以命令行方式同步数据

 

如果有多个服务器要同步,每个服务器最好单独写一个winscp脚本:


 

编写 WINSCP-SERV-BAK.bat 批处理文件,将所有winscp脚本放在一起批量执行【推荐,适合大量服务器同步】

start /min cmd /c "D:\\Program Files (x86)\\WinSCP\\WinSCP.exe" /console /script=c:\\SERV_BAK.txt
start /min cmd /c "D:\\Program Files (x86)\\WinSCP\\WinSCP.exe" /console /script=c:\\SERV_BAK02.txt
start /min cmd /c "D:\\Program Files (x86)\\WinSCP\\WinSCP.exe" /console /script=c:\\SERV_BAK03.txt

以上命令会同时打开3个CMD窗口来执行。start:开启新窗口,/min:最小化运行主窗口,/c:原窗口关闭

 

4.添加windows计划任务,让同步操作定时自动完成:
运行——》taskschd.msc

 

搞定。下班后PC机保持开机即可。从此解放了双手。


输入help:
winscp> help
call     执行任意远程Shell命令
cd       改变远程工作目录
chmod    改变远程文件权限
close    关闭会话
exit     关闭所有会话并结束程序
get      从远程目录下载文件到本地目录
help     显示帮助
keepuptodate    在一个远程目录连续反映本地目录的改变
lcd     改变本地工作目录
lls     列出本地目录的内容
ln      新建远程符号链接
lpwd    显示本地工作目录
ls      列出远程目录的内容
mkdir    新建远程目录
mv      移动或者重命名远程文件
open    连接到服务器
option    设置或显示脚本选项的值
put    从本地目录上传文件到远程目录
pwd    显示远程工作目录
rm     删除远程文件
rmdir    删除远程目录
session    列出连接的会话或者选择活动会话
synchronize    用一个本地目录同步远程目录

 

以上是关于winscp以命令行方式同步服务器数据到PC机磁盘上的主要内容,如果未能解决你的问题,请参考以下文章

利用XShell和WinSCP连接本机和Linux虚拟机——Kali部署

如何从命令行打开 WinSCP GUI 并登录到服务器

使用 WinSCP 以 Root 登录到 Google Compute Engine 虚拟机实例时收到“收到的 SFTP 数据包太大”

捕获arm非托管磁盘虚拟机,并进行还原

如何以编程方式将音乐从 pc 同步到 iphone 音乐库? [关闭]

PC机安装 CentOS6.5 提示sda必须有一个GPT磁盘标签!