Linux实现SVN远程自动增量备份
- 格式:doc
- 大小:13.50 KB
- 文档页数:2
SVN在Windows下实现自动全量增量备份和异地备份1SVN备份介绍1.1SVN备份内容SVN在Windows下的自动备份实现,包括:1)SVN目录的全备份(1周或1个月备份1次,由windows计划来调度执行);2)SVN增量备份(每日备份1次,由windows计划来调度执行);1.2SVN备份流程上述2类备份分别进行的流程如下:1)通过windows定时任务功能,调度进行备份、压缩、FTP上传功能的bat文件;2)将自动备份成按每日日期.dmp备份到SVN本机的其他磁盘空间中,分全备份和增量备份;3)启动ftp上传命令,将备份的rar包立即上传在异地服务器上。
异地服务器需提前架好ftp服务器并建立好相关上传目录,建议使用用FileZilla_Server、serverU或者简单ftp软件进行搭建。
4)整个上传过程,详细记录备份、压缩、FTP上传各步骤详细日志,随时可以查阅每次备份记录的详细情况。
1.3SVN还原功能可以进行还原所有版本库2SVN备份BAT设计1.1全备份BAT1)SVN的全备份,AllBackUp.bat:Begin@echo offsetlocal enabledelayedexpansionecho 正在准备备份所有版本库……echo.::设置SVN命令目录set SVN_CMD="E:\VisualSVN Server\bin"::设置所有版本库根目录set REPOS_ROOT=D:\Repositories::设置所有版本库备份根目录set REPOS_BACKUP_ROOT=F:\[SvnBackup]\全备份if not exist %REPOS_BACKUP_ROOT% mkdir %REPOS_BACKUP_ROOT%::设置所有版本库备份目录set BACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%\%date:~0,10%.dmpset BACKUP_DIRECTORY=%BACKUP_DIRECTORY:/=-%rem if exist %BACKUP_DIRECTORY% goto Error2rem mkdir %BACKUP_DIRECTORY%if not exist %BACKUP_DIRECTORY% mkdir %BACKUP_DIRECTORY%::设置用户权限信息备份目录set REPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%\UserInfoif not exist %REPOS_USER_INFO_DIRECTORY% mkdir %REPOS_USER_INFO_DIRECTORY%::备份所有版本库::i->版本库、j->版本库最新版本号、k->上次完全备份时版本库的版本号echo ===================%date% %time:~0,8%:执行全部全量备份版本库.=================== >> %REPOS_BACKUP_ROOT%\BackUp.logecho 备份的版本库版本信息如下: >> %REPOS_BACKUP_ROOT%\BackUp.log::读取版本库根目录下每个文件夹,并判断其是否是一个版本库for /r %REPOS_ROOT% %%i in (.) do if exist %%i\conf\svnserve.conf ( ::将当前版本库的最新版本信息写入tmp文件%SVN_CMD%\svnlook youngest %%~fi > %%~ni_last_revision.tmp::取出当前版本库的最新版本信息,判断其是否大于0,是则进行处理for /f %%j in (%%~ni_last_revision.tmp) do if %%j gtr 0 (echo.echo 开始备份版本库%%~ni……::全量备份版本库%SVN_CMD%\svnadmin dump --deltas %%~fi > %BACKUP_DIRECTORY%\%%~ni-0-%%j.dmpecho %time:~0,8% %%~ni: 0-%%j >> %REPOS_BACKUP_ROOT%\BackUp.logecho 版本库%%~ni已经成功备份到%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp!)::删除临时文件del %%~ni_last_revision.tmp)echo.echo 开始备份用户权限信息……xcopy /y %REPOS_ROOT%\authz %REPOS_USER_INFO_DIRECTORY%xcopy /y %REPOS_ROOT%\authz-windows %REPOS_USER_INFO_DIRECTORY%xcopy /y %REPOS_ROOT%\htpasswd %REPOS_USER_INFO_DIRECTORY%echo ---------------------------------->> %REPOS_BACKUP_ROOT%\BackUp.log echo.echo 用户权限信息备份成功!echo %time:~0,8% 用户权限信息备份成功! >> %REPOS_BACKUP_ROOT%\BackUp.log echo.echo 全部版本库备份成功!echo %time:~0,8% 全部版本库备份成功! >> %REPOS_BACKUP_ROOT%\BackUp.logAllBackupByFtpgoto end:Error2echo.echo 备份目录已经存在,请确认后删除该目录,重新运行程序!goto End:Endecho.echo 程序执行结束!2)SVN的全备份进行FTP上传,AllBackupByFtp.bat@echo offREM ======设置区Start================================set ftpUser=svnset ftpPass=svnbackupset ftpIP=192.168.1.22set ftpPort=2016REM 指定从FTP下载下来的文件存放到本机哪个目录set ftpFolder=/全备份REM 本地需要备份的根目录set SvnBackupRoot=F:\[SvnBackup]\全备份REM 本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)set SvnBackupFolder=%SvnBackupRoot%\%date:~0,10%.dmpREM 需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)set rarToFilePath=%SvnBackupFolder%.rarREM RAR执行文件的路径set rarExePath="C:\Program Files\WinRAR\"REM RAR执行文件的路径set bakupLogFilePath=%SvnBackupRoot%\BackUp.logREM FTP命令执行文件缓存set ftpFile=%cd%\TempFTP.txt>"%ftpFile%" (echo,open %ftpIP% %ftpPort%echo,%ftpUser%echo,%ftpPass%echo cd "%ftpFolder%"echo prompt offecho binecho put %rarToFilePath%echo put %bakupLogFilePath%echo bye)set Path=%Path%;%rarExePath%set logFilePath=%SvnBackupRoot%\ftpUp.logREM ======设置区End ================================echo ===================%date% 执行异地版本库全量备份开始================= >> %logFilePath%if not exist %SvnBackupFolder% goto Error1echo %time:~0,8% 备份压缩开始... >> %logFilePath%WinRAR.exe a -ep1 -k -r -s -ibck %rarToFilePath% %SvnBackupFolder%echo %time:~0,8% 备份压缩成功,压缩的文件路径为:%rarToFilePath% >> %logFilePath%echo %time:~0,8% 备份压缩继续上传FTP开始... >> %logFilePath%ftp -v -i -s:"%ftpFile%"echo %time:~0,8% 上传FTP成功,上传FTP目录为:%ftpFolder% >> %logFilePath%del /q /s /f %rarToFilePath%echo. >> %logFilePath%goto end:Error1echo.echo %time:~0,8% 提示: 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! >> %logFilePath%echo %time:~0,8% 备份失败! >> %logFilePath%echo. >> %logFilePath%echo 提示:echo 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成!:Endecho.echo 程序执行结束!1.2增量备份BAT1)SVN数据库的增量备份,IncreBackUp.bat::设置所有版本库备份根目录set REPOS_BACKUP_ROOT=F:\[SvnBackup]\增量备份if not exist %REPOS_BACKUP_ROOT% mkdir %REPOS_BACKUP_ROOT%::获取LastRevisions目录set REPOS_LAST_REVERSION_DIRECTORY=%REPOS_BACKUP_ROOT%\LastRevisionsrem if not exist %REPOS_LAST_REVERSION_DIRECTORY% goto Error1if not exist %REPOS_LAST_REVERSION_DIRECTORY%mkdir %REPOS_LAST_REVERSION_DIRECTORY%::设置所有版本库备份目录set BACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%\%date:~0,10%.dmpset BACKUP_DIRECTORY=%BACKUP_DIRECTORY:/=-%rem if exist %BACKUP_DIRECTORY% goto Error2rem mkdir %BACKUP_DIRECTORY%if not exist %BACKUP_DIRECTORY% mkdir %BACKUP_DIRECTORY%::设置用户权限信息备份目录set REPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%\UserInfoif not exist %REPOS_USER_INFO_DIRECTORY% mkdir %REPOS_USER_INFO_DIRECTORY%::设置LastRevisions备份目录set REPOS_LAST_REVERSION_BACKUP_DIRECTORY=%BACKUP_DIRECTORY%\LastRevisions if not exist %REPOS_LAST_REVERSION_BACKUP_DIRECTORY%mkdir %REPOS_LAST_REVERSION_BACKUP_DIRECTORY%::备份所有版本库::i->版本库、j->版本库最新版本号、k->上次完全备份时版本库的版本号echo ===================%date% %time:~0,8%:执行全部版本库备份.=================== >> %REPOS_BACKUP_ROOT%\BackUp.logecho 备份的版本库版本信息如下: >> %REPOS_BACKUP_ROOT%\BackUp.log::读取版本库根目录下每个文件夹,并判断其是否是一个版本库for /r %REPOS_ROOT% %%i in (.) do if exist %%i\conf\svnserve.conf (::将当前版本库的最新版本信息写入tmp文件%SVN_CMD%\svnlook youngest %%~fi > %%~ni_last_revision.tmp::取出当前版本库的最新版本信息,判断其是否大于0,是则进行处理for /f %%j in (%%~ni_last_revision.tmp) do if %%j gtr 0 (::判断以前是否存在该版本库的版本信息,存在说明以前备份过,需要基于其进行备份;否则对该版本库进行全新备份if exist %REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txt (::读取该版本库上次备份时保存的版本信息,如果小于当前版本信息则进行处理for /f %%k in (%REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txt) do if %%k lss %%j (echo.echo 开始备份版本库%%~ni……::取得该版本库本次备份的起始版本号set version=%%kset /a version=!version!+1::增量备份版本库%SVN_CMD%\svnadmin dump --deltas %%~fi --revision !version!:head --incremental > %BACKUP_DIRECTORY%\%%~ni-!version!-%%j.dmpecho %%~ni: !version!-%%j >> %REPOS_BACKUP_ROOT%\BackUp.logecho 版本库%%~ni已经成功备份到%BACKUP_DIRECTORY%\%%~ni-!version!-%%j.dmp! )) else (echo.echo 开始备份版本库%%~ni……::全量备份版本库%SVN_CMD%\svnadmin dump --deltas %%~fi > %BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp echo %%~ni: 0-%%j >> %REPOS_BACKUP_ROOT%\BackUp.logecho 版本库%%~ni已经成功备份到%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp!)::将本次版本库备份时的最新版本信息写入文件保存echo %%j> %REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txtecho %%j> %REPOS_LAST_REVERSION_BACKUP_DIRECTORY%\%%~ni_last_revision.txt )::删除临时文件del %%~ni_last_revision.tmp)echo.echo 开始备份用户权限信息……xcopy /y %REPOS_ROOT%\authz %REPOS_USER_INFO_DIRECTORY%xcopy /y %REPOS_ROOT%\authz-windows %REPOS_USER_INFO_DIRECTORY%xcopy /y %REPOS_ROOT%\htpasswd %REPOS_USER_INFO_DIRECTORY%echo.echo 用户权限信息备份成功!echo.echo 全部版本库备份成功!IncreBackupByFtpgoto end:Error1echo.echo 提示:echo 上次备份保存的%REPOS_LAST_REVERSION_DIRECTORY%文件夹不存在,请确认后从上次备份中拷贝LastReversions到%REPOS_BACKUP_ROOT%目录,重新运行程序; echo 或者,不基于上次备份重新执行备份!echo 重新备份?(Y/N)set /p input=if %input%==Y (mkdir %REPOS_LAST_REVERSION_DIRECTORY%goto Begin) else (goto End):Error2echo.echo 备份目录已经存在,请确认后删除该目录,重新运行程序!goto End:Endecho.echo 程序执行结束!2)SVN数据的增量备份的FTP上传,IncreBackupByFtp.bat@echo offREM ======设置区Start================================set ftpUser=svnset ftpPass=svnbackupset ftpIP=192.168.1.22set ftpPort=2016REM 指定从FTP下载下来的文件存放到本机哪个目录set ftpFolder=/增量备份REM 本地需要备份的根目录set SvnBackupRoot=F:\[SvnBackup]\增量备份REM 本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)set SvnBackupFolder=%SvnBackupRoot%\%date:~0,10%.dmpREM 需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)set rarToFilePath=%SvnBackupFolder%.rarREM RAR执行文件的路径set rarExePath="C:\Program Files\WinRAR\"REM RAR执行文件的路径set bakupLogFilePath=%SvnBackupRoot%\BackUp.logREM FTP命令执行文件缓存set ftpFile=%cd%\TempFTP.txt>"%ftpFile%" (echo,open %ftpIP% %ftpPort%echo,%ftpUser%echo,%ftpPass%echo cd "%ftpFolder%"echo prompt offecho binecho put %rarToFilePath%echo put %bakupLogFilePath%echo bye)set Path=%Path%;%rarExePath%set logFilePath=%SvnBackupRoot%\ftpUp.logREM ======设置区End ================================echo ===================%date% 执行异地版本库增量备份开始.=================== >> %logFilePath%if not exist %SvnBackupFolder% goto Error1echo %time:~0,8% 备份压缩开始... >> %logFilePath%WinRAR.exe a -ep1 -k -r -s -ibck %rarToFilePath% %SvnBackupFolder%echo %time:~0,8% 备份压缩成功,压缩的文件路径为:%rarToFilePath% >> %logFilePath%echo %time:~0,8% 备份压缩继续上传FTP开始... >> %logFilePath%ftp -v -i -s:"%ftpFile%"echo %time:~0,8% 上传FTP成功,上传FTP目录为:%ftpFolder% >> %logFilePath%del /q /s /f %rarToFilePath%echo. >> %logFilePath%goto end:Error1echo.echo %time:~0,8% 提示: 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! >> %logFilePath%echo %time:~0,8% 备份失败! >> %logFilePath%echo. >> %logFilePath%echo 提示:3SVN还原BAT设计SVN的还原LoadBackUp.bat@echo offecho 正在准备还原所有版本库……echo.::设置SVN命令目录set SVN_CMD="E:\VisualSVN Server\bin"::设置所有版本库根目录set REPOS_ROOT=D:\Repositories::设置所有版本库备份根目录set REPOS_BACKUP_ROOT=F:\[SvnBackup]\增量备份if not exist %REPOS_BACKUP_ROOT% goto Error::还原所有版本库echo ===================%date% %time:~0,8%:执行版本库执行还原操作=================== >> %REPOS_BACKUP_ROOT%\SvnLoad.logecho 还原的版本库版本信息如下: >> %REPOS_BACKUP_ROOT%\SvnLoad.log::将所有保存版本库备份的文件夹名写入tmpdir /b %REPOS_BACKUP_ROOT%\*.dmp > folderName.tmp::依次操作tmp文件中包含的文件夹for /f %%h in (folderName.tmp) do (::将所有版本库文件名写入tmpdir /b /a-d %REPOS_BACKUP_ROOT%\%%h\*.dmp > fileName.tmp::依次操作tmp文件中包含的备份文件for /f %%i in (fileName.tmp) do (::处理备份文件名,以取得版本库名和相应的版本号for /f "tokens=1,2* delims=-" %%j in ("%%~ni") do (echo.echo 开始还原版本库%REPOS_BACKUP_ROOT%\%%h\%%j-%%k-%%l……::版本库根目录不存在和版本库名相同名字的文件夹则创建一个if not exist %REPOS_ROOT%\%%j (mkdir %REPOS_ROOT%\%%j)::版本库根目录中该文件夹不是版本库,则创建一个if not exist %REPOS_ROOT%\%%j\conf\svnserve.conf (%SVN_CMD%\svnadmin create %REPOS_ROOT%\%%j)::还原备份%SVN_CMD%\svnadmin load %REPOS_ROOT%\%%j < %REPOS_BACKUP_ROOT%\%%h\%%i echo %%j: %%k-%%l >> %REPOS_BACKUP_ROOT%\SvnLoad.logecho 版本库%REPOS_BACKUP_ROOT%\%%h\%%j-%%k-%%l还原成功!)))::删除临时文件del fileName.tmpdel folderName.tmpecho.echo 全部版本库还原成功!goto end:Errorecho.echo 版本库备份目录%REPOS_BACKUP_ROOT%不存在,请确认后重新运行程序! goto End:End。
Linux命令高级技巧利用rsync命令进行增量备份与数据同步的技巧Linux命令高级技巧:利用rsync命令进行增量备份与数据同步的技巧在Linux系统中,数据备份和数据同步是非常重要的任务。
rsync命令是一种功能强大的工具,能够在本地或者远程之间实现增量备份和数据同步。
本文将介绍如何利用rsync命令进行增量备份和数据同步,并分享一些相关的高级技巧。
一、什么是增量备份和数据同步增量备份是指只备份数据源与上一次备份之间发生变化的文件,而不是每次都备份所有文件。
这种备份方式可以节省时间和存储空间。
数据同步是指根据设定的规则,将源目录的数据与目标目录的数据进行比对和同步,确保两个目录的文件内容一致。
二、rsync命令基本用法rsync命令的基本用法如下:```rsync [OPTION] 源目录目标目录```其中,源目录指的是需要备份或者同步的数据所在的目录,目标目录则是备份或同步数据的目标位置。
rsync命令会自动比对源目录和目标目录的文件,并将有差异的文件进行备份或者同步。
三、增量备份的技巧1. 使用--ignore-existing参数当进行增量备份时,可以使用--ignore-existing参数,该参数可以忽略目标目录中已存在的文件,只备份源目录中新增或有变化的文件。
示例如下:```rsync --ignore-existing 源目录目标目录```2. 使用--delete参数如果想要目标目录与源目录完全保持一致,即删除目标目录中不存在于源目录的文件,可以使用--delete参数。
示例如下:```rsync --delete 源目录目标目录```3. 使用--backup参数增量备份时,有时可能需要保留目标目录中已存在的文件的备份版本。
可以使用--backup参数,并指定备份的位置。
示例如下:```rsync --backup --backup-dir=/backup 源目录目标目录```四、数据同步的技巧1. 使用--exclude参数在进行数据同步时,有时候需要排除某些文件或目录。
SVN仓库自动备份方法SVN(Subversion)是一种版本控制系统,用于有效地管理文件和目录的版本。
为了确保数据的安全性和可靠性,将SVN仓库自动备份是至关重要的。
下面是一种SVN仓库自动备份的方法,包括以下步骤:1. 选择合适的备份存储介质:可以选择将备份存储在本地服务器的硬盘上,也可以将其存储在云存储服务(如Amazon S3、Google Cloud Storage)或其他远程服务器上。
选择恰当的备份存储介质是自动备份的第一步。
2. 创建备份脚本:使用Shell脚本、Python脚本或其他脚本语言编写一个备份脚本,用于执行SVN仓库的备份操作。
该脚本包含以下功能:a.检查SVN仓库的最新修改时间:使用SVN命令或其他相关命令,获取SVN仓库的最新修改时间。
这将用于判断是否需要进行备份操作。
b.备份SVN仓库:如果最新修改时间与上一次备份时间不一致,说明SVN仓库已经发生了变化,需要进行备份操作。
使用SVN命令将SVN仓库导出到指定的备份存储介质中,确保所有版本的文件和历史记录都可以恢复。
c.更新备份时间:备份完成后,更新备份时间,以便下一次备份可以正确判断是否需要备份。
3. 定时执行备份脚本:使用计划任务(Cron)或其他任务调度工具,设置定时任务,以便自动执行备份脚本。
可以选择每天、每周或每月等频率进行备份。
确保备份脚本能够准时执行,以保证SVN仓库的定期备份。
4.监控备份过程:在备份过程中,监控备份脚本的执行情况,确保备份操作成功完成。
可以在脚本中添加日志记录,以便对备份过程进行跟踪和分析。
如果备份失败或出现错误,及时采取相应的措施进行修复。
5.测试备份数据的恢复:定期测试备份数据的恢复功能,以确保备份数据的完整性和可用性。
可以选择随机选择几个版本进行恢复,并进行验证,确保所有文件和历史记录都可以正确恢复。
以上便是一种SVN仓库自动备份的方法。
通过创建备份脚本、定时执行备份脚本、定期监控备份过程和测试备份数据的恢复功能,可以确保SVN仓库的数据安全性和可靠性。
Linux命令高级技巧使用rsync命令进行增量备份和同步优化在Linux系统中,rsync命令被广泛使用于增量备份和文件同步的场景中。
它是一个功能强大的工具,可以帮助用户实现快速、高效的文件备份和同步操作。
本文将介绍rsync命令的高级技巧,以及在增量备份和同步优化方面的应用。
一、rsync命令简介rsync是一个开源命令行工具,用于在本地或者远程主机之间进行文件的备份和同步操作。
它可以通过差异算法检测文件的改变,只传输有差异的部分,从而提高传输效率。
rsync还支持多种文件传输协议,例如SSH和rsync本身的协议,使得用户可以在不同的网络环境下灵活地进行文件备份和同步。
二、rsync命令的基本用法1. 本地文件备份rsync命令可以用于本地文件备份。
使用如下的命令格式:```shellrsync [选项] 源目录目标目录```其中,源目录是要备份的目录,目标目录是备份文件存放的目录。
例如,要将/home/user目录备份到/data/backup目录下,可以使用如下命令:```shellrsync -a /home/user /data/backup```这样,rsync将会把/home/user目录下的所有文件和子目录复制到/data/backup目录下。
2. 远程文件同步rsync命令还可以用于远程文件同步。
使用如下的命令格式:```shellrsync [选项] 源目录用户@远程主机:目标目录```其中,源目录是要同步的本地目录,用户是远程主机的用户名,远程主机是要同步的目标主机,目标目录是同步文件存放的目录。
例如,要将本地的/data/backup目录同步到远程主机的/home/user目录下,可以使用如下命令:```shellrsync -a /data/backup user@remote:/home/user```rsync将会把本地的/data/backup目录下的所有文件和子目录同步到远程主机的/home/user目录下。
#!/bin/sh##Subversion的安装目录及执行文件SVN_HOME=/usr/local/subversion/binSVN_ADMIN=$SVN_HOME/svnadminSVN_LOOK=$SVN_HOME/svnlookSVN_BACK=/home1/svnbackups/full##配置库根目录SVN_REPOROOT=/home1/svnroot/hxz##增量备份文件存放路径date=$(date '+%Y-%m-%d')RAR_STORE=$SVN_BACK/$dateif [ ! -d "$RAR_STORE" ];thenmkdir -p $RAR_STOREfi##读取项目库列表cd $SVN_REPOROOTfor name in $(ls)do##开始做全量备份$SVN_ADMIN hotcopy $SVN_REPOROOT/$name $RAR_STORE/$namecd $SVN_BACK/$datetar zcvf $name.tar.gz $namerm -rf $RAR_STORE/$namedone##备份打包压缩# package the backup folder#cd $SVN_BACK/$date#tar zcvf $name.tar.gz $name#rm -rf $RAR_STORE/$name#!/bin/sh#Subversion的安装目录及执行文件SVN_HOME=/usr/local/subversion/binSVN_ADMIN=$SVN_HOME/svnadminSVN_LOOK=$SVN_HOME/svnlookSVN_BACK=/home1/svnbackups/increment##配置库根目录SVN_REPOROOT=/home1/svnroot/hxz##增量备份文件存放路径date=$(date '+%Y-%m-%d')RAR_STORE=$SVN_BACK/$dateif [ ! -d "$RAR_STORE" ];thenmkdir -p $RAR_STOREfi##日志存放目录Log_PATH=/home1/svnbackups/logif [ ! -d "$Log_PATH" ];thenmkdir -p $Log_PATHfi##读取项目库列表cd $SVN_REPOROOTfor name in $(ls)doif [ ! -d "$RAR_STORE/$name" ];thenmkdir $RAR_STORE/$nameficd $RAR_STORE/$nameif [ ! -d "$Log_PATH/$name" ];thenmkdir $Log_PATH/$namefiecho ******Starting backup from $date****** >> $Log_PATH/$name/$name.logecho ******svn repository $name startting to backup****** >> $Log_PATH/$name/$name.log $SVN_LOOK youngest $SVN_REPOROOT/$name > $Log_PATH/A.TMPUPPER=`head -1 $Log_PATH/A.TMP`##取出上次备份后的版本号,并做+1处理NUM_LOWER=`head -1 $Log_PATH/$name/last_revision.txt`let LOWER="$NUM_LOWER+1"##开始做增量备份并记录$UPPER,为下次备份做准备$SVN_ADMIN dump $SVN_REPOROOT/$name -r $LOWER:$UPPER --incremental > $RAR_STORE/$name/$LOWER-$UPPER.dumprm -f $Log_PATH/A.TMPecho $UPPER > $Log_PATH/$name/last_revision.txtecho ******This time we bakcup from $LOWER to $UPPER****** >> $Log_PATH/$name/$name.logecho ******Back up ended****** >> $Log_PATH/$name/$name.logdonecd $SVN_BACKtar -zcvf $date.tar.gz $daterm -rf $SVN_BACK/$date。
Linux系统数据库远程自动备份方法现在有很多法院已经把数据库迁移到linux系统上面了,且不能实现每天自动备份,下面就给大家讲解下如何在一台Windows服务器上面远程自动备份linux系统上的数据库。
首先找一台Windows测试服务器(如果你们本地已经搭建了测试环境的就用测试环境的数据库服务器),然后在上面安装oracle 11G数据库安装完成后设置你自己的管理员密码等。
首先在你的Windows备份服务器上面新建一个共享文件夹,如在D盘根目录新建一个交TDH_BAK的文件夹,然后设置共享。
然后用Xshell工具连接你的linux数据库服务器,用root账号登录到linux系统中,然后依次输入下面的命令mkdir -p /mnt/tdh_bak 新建挂载目录路径mount -t cifs -o username=administrator,password=密码 //IP地址/共享名空格/mnt/tdh_bak 新建挂载你的Windows备份服务器的共享目录,例如是在192.168.1.1这台Windows备份服务器里面新建了交TDH_BAK的共享文件夹你们这个命令就是mount -t cifs -o username=administrator,password=123 //192.168.1.1/TDH_BAK /mnt/tdh_bak然后在给这个目录授权oracle账号写入数据的权限:mount.cifs -o username=Administrator,password=123,uid=oracle,gid=oinstall //192.168.1.1/TDH_BAK /mnt/tdh_bak接着切换到oracle账号su – oracle。
进入sqlplus,命令为:sqlplus system/123输入create directory EXPDP_NEW as '/mnt/tdh_bak/'; //创建目录对象EXPDP_NEW,路径为'/mnt/tdh_bak/'grant read, write on directory EXPDP_NEW to public;授权目录最后在你安装有oracle数据库Windows服务器(oracle数据库也可以直接在Windows 备份服务器上面安装,这样就少用一台服务器)或者台式电脑上运行备份命令进行测试。
Linux命令高级技巧使用rsync命令进行增量备份和同步Linux命令高级技巧:使用rsync命令进行增量备份和同步Linux系统是一种开源的操作系统,广泛应用于服务器和个人计算机等各个领域。
作为一个Linux用户,了解一些高级技巧和命令可以帮助你更高效地管理和维护系统。
在本文中,我们将介绍如何使用rsync 命令进行增量备份和同步,以保护你的数据安全。
一、什么是rsync命令rsync是一个强大的文件传输和备份工具,它可以在本地或者远程主机之间同步和传输文件。
与普通的拷贝命令(如cp)相比,rsync命令有以下几个优势:1.增量备份:rsync命令只会传输被更改过的文件或新增的文件,大大减少了传输的数据量和时间;2.传输速度快:rsync通过智能的算法,只传输两个文件之间的差异部分,提高了传输速度;3.支持远程备份:rsync可以通过SSH协议进行远程备份和同步。
二、rsync命令的基本用法rsync命令的基本用法如下:rsync [options] source destination其中,source表示源文件或者目录,destination表示目标路径。
1.同步本地文件夹要同步两个本地文件夹,可以使用如下命令:rsync -avh /path/to/source /path/to/destination其中,-a表示归档模式,保留文件的所有属性(如权限、时间等),-v表示显示详细信息,-h表示以人类可读的方式显示文件大小。
2.远程备份要通过rsync进行远程备份,需要在命令中加入远程主机的地址和用户名,如下所示:rsync -avh /path/to/source username@remote:/path/to/destination其中,username是远程主机的用户名,remote是远程主机的地址。
你还可以通过添加-p参数指定端口号,以及使用--exclude选项排除某些文件或文件夹。
linux实现对上传⽂件的定时备份、增量备份的⽅法介绍如果你们使⽤的是类似阿⾥云的OSS存储服务,那么可以使⽤服务提供的定时备份,这样可以不⽤考虑在服务器上做⽂件备份。
实际上想实现基础的备份还是⾮常简单的,我们平常使⽤tar、unzip等命令打包⽂件,在这个基础上编写⼀个shell脚本,利⽤linux的crontab功能添加⼀个定时执⾏程序,这样就可以简单实现⽂件备份。
但是这种⽅式在⽂件量不断增⼤后还⾏吗?答案肯定是不⾏,当⽂件量不断增加,所占存储空间增⼤。
这种简单的备份⽅式会让压缩时间过长,占⽤过多的存储空间。
那么怎么解决这⼀问题呢?我们可以使⽤增量备份来避免每⼀次都对所有⽂件进⾏备份压缩⽽带来的时间和空间的问题。
下⾯介绍⼀下实现⽅式(linux系统环境)在编写脚本之前需要先查看⼀下服务器上是否有crontab功能注:在这⾥要赞⼀下这个crontab功能,确实⼗分实⽤使⽤ rpm -qa|grep crontab命令查看是否已安装crontab上图所⽰,表明已安装。
如果未安装,则使⽤yum命令进⾏安装yum -y install vixie-cronyum -y install crontabsvixie-cron 是 cron 的主程序;crontabs 是⽤来安装、卸装、或列举⽤来驱动 cron 守护进程的表格的程序。
如果是内⽹环境,需要离线安装的可找要离线安装包1.启动:systemctl start crond.service2.查看状态:systemctl status crond.service上图所⽰,表明crontab已经在运⾏下⾯贴上常⽤命令systemctl start crond.service //启动命令systemctl status crond.service //查看状态systemctl stop crond.service //关闭命令systemctl restart crond.service //重启systemctl enable crond.service //开机运⾏有⼈⽤的不是systemctl命令,特此贴出service常⽤命令service crond start //启动服务service crond stop //关闭服务service crond restart //重启服务service crond reload //重新载⼊配置service crond status //查看crontab服务状态创建脚本⽂件vim backup.sh写⼊脚本命令(注:这个脚本是从⽹上找的,未找到原出处)#!/bin/bash#好的做法#根据项⽬不同来重命名该脚本#例如 amountebak.sh or pandawillsbak.sh#该脚本最好放在 $bakpp定义的绝对路径部分#你可以在$bakpp下找到相应的备份⽂件#例如 /usr/backup/amountebak.sh or /usr/backup/pandawillsbak.sh########## Init Path ######### 在下⾯的参数中必须定义的参数有 $bakpp、$project、$projectppTAR=/bin/tar# 存放备份⽂件的地⽅,以项⽬名称区分bakpp=/data/file_backup/"$project"# 需要备份的⽂件夹,⽂件夹的路径project=fileprojectpp=/data/# parament for varibleym=`date +%Y%m`ymd=`date +%Y%m%d`# 存储备份⽂件的⼦⽬录,以⽉份区分,他的上级⽬录是$bakpp定义的monthbakpp=$bakpp/$ymgidpp=$monthbakppgidshot=gid$project$ym# 完全备份的⽂件名fullname=$ym# 增量备份的⽂件名incrementalname=$ymd# Record the location of the loglog=$bakpp/$project.log############ chk_full ######################## 检查完全备份是否存在,如果不存在就创建它#this function check fullbackup file exist or not , if not then create fullbackup nowchk_full(){if [ -e "$monthbakpp"/"$project"_"$ym"_full.tar.gz ];thenecho ""$project"_"$ym"_full.tar.gz file exist!! ====`date +%Y-%m-%d-%T` " >>$logelsetar_fullfi}######### chk_incremental ######### 检查增量备份是否存在chk_incremental(){while [ -e "$monthbakpp"/"$project"_"$incrementalname"_incremental.tar.gz ]doincrementalname=`echo "$incrementalname + 0.1" | bc `done}######## tar_incremental ######## 执⾏增量备份tar_incremental(){cd $projectppecho "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$incrementalname"_incremental.tar.gz" >> $log sleep 3$TAR -g $gidpp/$gidshot -zcf $monthbakpp/"$project"_"$incrementalname"_incremental.tar.gz $projectecho "END_TIME========`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$incrementalname"_incremental.tar.gz" >> $log }######## tar_full ###########tar_full(){touch $gidpp/$gidshotcd $projectppecho "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$fullname"_full.tar.gz" >> $log$TAR -g $gidpp/$gidshot -zcf $monthbakpp/"$project"_"$fullname"_full.tar.gz $projectecho "END_TIME========`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$fullname"_full.tar.gz" >> $log}########### backup ############################### 总体调⽤备份,此时会做相应的检查以确保备份前提准备充分backup(){if [ -d $monthbakpp ]; thenchk_fullchk_incrementaltar_incrementalelsemkdir -p $bakpp/$ymtar_fullfi}########### let's begin ############## 先检查$bakpp是否存在,如果不存在先创建后备份if [ -d $bakpp ];thenbackupelsemkdir -p $bakppbackupfi#advice you can create a file for put backup file, eg /usr/cctcc#crontab#mini hours day month week command# */5 * * * * /home/mmroot/zbb/aaa.sh# 0 1 */1 * * /home/mmroot/zbb/aaa.sh# tar -ztf test.tar.gz 查看备份⽂件⾥⾯的⽂件使⽤wq!命令保存⽂件这个脚本⽂件有三处地⽅需要注意⼀下:#存放备份⽂件的地⽅,以项⽬名称区分bakpp=/data/file_backup/"$project"#需要备份的⽂件夹,⽂件夹的路径project=fileprojectpp=/data/上⾯的三个路径要根据⾃⼰具体情况进⾏更改添加定时任务:输⼊命令crontab -e任务⽰例05 03 * * * cd /data/file_backup/;sh file_backup.sh然后使⽤ crontab -l 查看即可。
Linux下面SVN的自动备份本文档是实现SVN 全库备份,即SVNAdmin hotcopy备份。
以http://192.168.103.198为例.第一步,创建一个存放备份数据的路径,由于全库备份需要的磁盘空间较大,需要找一个空间比较的目录,检查磁盘空间大小命令:#df –h#mkdir /home/public2/backup/#mkdir /home/public2/backup/svn/,保存备份库第二步,采用shell脚本的方式实现自动备份,在~/或者/home目录下创建Shell脚本,指单库备份。
第三步,运行脚本命令,如果该脚本没有执行权限,需要加上执行权限#chmod 777 /home/baksvn_hotcopy.sh#./home/baksvn_hotcopy.sh或者到该目录下运行,运行命令:./baksvn_hotcopy.sh第四步,把这个脚本添加到计划任务中,实现周期性的自动备份,如下内容所示:#vim /etc/crontab,在最后一行添加脚本如下,也可以用crontab –e添加(步骤较复杂):以上实现的是使用hotcopy的方式全量备份SVN单库模式,并且只保留最近3天的备份数据下面介绍多库的全量备份第一步, 创建一个存放备份数据的路径,由于全库备份需要的磁盘空间较大,需要找一个空间比较的目录,并创建日志目录和库文件列表目录。
#mkdir /home/public2/backup/conf#mkdir /home/public2/backup/log#mkdir /home/public2/backup/svn/,保存备份库。
第二步,采用shell脚本的方式实现自动备份,在~/或者/home目录下创建Shell脚本。
# Vim baksvn_hotcopy.sh#第三步,把这个脚本添加到计划任务中,实现周期性的自动备份,如下内容所示:#vim /etc/crontab,在最后一行添加脚本,也可以用crontab –e添加(步骤较复杂)。
Linux命令高级技巧利用rsync命令进行增量备份与数据同步的高级技巧Linux命令高级技巧:利用rsync命令进行增量备份与数据同步的高级技巧Linux系统是一种广泛使用的操作系统,其命令行界面非常强大。
在日常的系统管理和数据处理中,熟练掌握Linux命令是必不可少的。
其中,rsync命令是一个非常实用的工具,可以用于实现文件的增量备份与数据同步。
本文将介绍如何利用rsync命令进行增量备份与数据同步的高级技巧。
一、rsync命令简介rsync是一种功能强大的文件传输工具,可以在本地或者远程主机之间进行文件的同步和备份。
rsync采用了增量备份的方式,它只传输源文件与目标文件之间的差异部分,大大提高了数据传输的效率。
rsync支持多种数据传输协议,包括本地文件传输、SSH加密传输等。
二、rsync命令的基本用法1. 本地文件备份与同步rsync命令可以用于在本地文件系统之间进行备份与同步。
下面是一个简单的示例:```rsync -avz /source/path /destination/path其中,-a参数表示以归档模式进行同步,保持文件属性和权限;-v 参数表示输出同步的详细信息;-z参数表示传输过程中进行压缩。
你可以根据实际的需求添加其他参数。
2. 远程文件备份与同步rsync命令也可以用于远程主机之间的文件备份与同步。
下面是一个示例:```rsync -avz -e ssh user@remote:/source/path /destination/path```其中,user是远程主机的用户名,remote是远程主机的地址。
通过-e参数指定使用SSH加密传输。
三、rsync命令的高级技巧1. 增量备份rsync命令的一个重要特性是增量备份,它只传输源文件与目标文件之间的差异部分。
通过使用--link-dest选项,可以实现增量备份的效果。
下面是一个示例:```rsync -avz --link-dest=/previous/backup/path /source/path/current/backup/path其中,--link-dest选项指定了之前备份的路径。
矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。
如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。
㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。
(2 列出开发利用方案编制所依据的主要基础性资料的名称。
如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。
对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。
二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。
2、国内近、远期的需求量及主要销向预测。
㈡产品价格分析
1、国内矿产品价格现状。
2、矿产品价格稳定性及变化趋势。
三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。
2、矿区矿产资源概况。
3、该设计与矿区总体开发的关系。
㈡该设计项目的资源概况
1、矿床地质及构造特征。
2、矿床开采技术条件及水文地质条件。