1. 程式人生 > >winscp以命令行方式同步服務器數據到PC機磁盤上

winscp以命令行方式同步服務器數據到PC機磁盤上

win sta 符號鏈接 多個服務器 同步 差異 -c tran 編寫

目前服務器上每日會產生備份文件,需要使用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:同步到對端 close exit

3.在windows端CMD窗口執行:

cd D:\Program Files (x86)\WinSCP
WinSCP.exe /console /script=c:\SERV_BAK.txt

如果有多個服務器要同步,每個服務器最好單獨寫一個winscp腳本。再組合成*
.bat文件批量執行: 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機磁盤上