发布网站前做备份。
备份想放到服务器本身,但rsync的--backup-dir测试发现只能备份到所在module下,无法备份到module之外的位置。
rsync不支持远端到远端的备份方式。
想到两种方案:
1. 共享目录挂载到本地,把mudule备份到共享目录,然后发布网站
2. rsync服务端增加backup模块,先取数据到本地,再同步到服务端的backup模块,然后发布网站
此文采用第二种方案。
@echo off SET RSYNC=D:\Program Files (x86)\ICW\Bin\rsync.exe SET USER=user1 SET HOST=192.168.80.100 SET PASSWORD_FILE=/cygdrive/c/rsyncd.conf/passwd SET OPT_GET=-rtv --password-file=%PASSWORD_FILE% SET OPT_PUT=-rtv --delete --password-file=%PASSWORD_FILE% REM 通过备份时的日期区分不同的备份 for /f %%a in (‘date /t‘) do SET DATE=%%a set "DATE=%DATE:/=%" for /f %%a in (‘time /t‘) do SET TIME=%%a set "TIME=%TIME::=%" set "DATETIME=%DATE%%TIME%" REM 待发布数据所在目录 SET PUBLISH_DIR=/cygdrive/f/Work/Publish/%MODULE%/ REM 要发布到的模块 SET MODULE=TouChu.web1 REM 取出服务端数据后存放在本地的位置 SET FETCH_DIR=/cygdrive/d/BACKUP/%MODULE%/ SET LOCAL_FETCH_DIR=%FETCH_DIR:~10,-1% SET LOCAL_FETCH_DIR=%LOCAL_FETCH_DIR:d/=d:% SET LOCAL_FETCH_DIR=%LOCAL_FETCH_DIR:/=\% SET FETCH_DIR=%FETCH_DIR%%DATETIME% REM 服务端的备份模块 SET BACKUP_MODULE=backup REM 查看服务器中的列表 REM rsync %OPT% %USER%@%HOST%::%MODULE% REM ==================================== REM 获取服务器中的数据到FETCH_DIR REM ==================================== MKDIR %LOCAL_FETCH_DIR% SET SRC=%USER%@%HOST%::%MODULE% SET DEST=%FETCH_DIR% rsync %OPT_GET% %SRC% %DEST% REM ==================================== REM 备份FETCH_DIR到远端服务器 REM ==================================== SET SRC=%FETCH_DIR% SET DEST=%USER%@%HOST%::%BACKUP_MODULE%/%MODULE% rsync %OPT_GET% %SRC% %DEST% REM ==================================== REM 发布到服务器 REM ==================================== SET SRC=%PUBLISH_DIR% SET DEST=%USER%@%HOST%::%MODULE% rsync %OPT% %SRC% %DEST% REM ==================================== REM 增量备份(删除之前先备份) ## 放弃 REM ==================================== REM rsync %OPT% --backup-dir=/Backup/ %PUBLISH_DIR% %USER%@%HOST%::%MODULE% pause
时间: 2024-10-13 23:06:02