我有这个命令,我被告知会做一个Subversion的完整备份(告诉我,如果这不是真的):
svnadmin转储/共享/ svnrepos | gzip /shared/backup/snvfull.svn.gz
我不是Linux的人。 我只是想让它在晚上7点晚上运行,并且每晚覆盖文件。 运行需要相当长的时间(大约需要4-5个小时才能创build一个28GB的文件)
有人可以告诉我如何以Linux用户身份作为cron作为root用户吗? (这是Gentoo,如果重要的话)
如果从“备份服务器”运行Windows任务比较容易,只需让我知道如何通过SSH远程创build该任务,并以root用户身份运行该命令。
谢谢!
PS如果有一个更好/更简单的方法来备份一个大的SVN,请让我知道…我对Subversion一无所知,但我仍然坚持处理它。
你的命令将起作用。
创build一个转储脚本,如svndump.sh
#!/bin/bash date=`date +%Y-%m-%d` svnadmin dump /shared/svnrepos | gzip /shared/backup/snvfull_$date.svn.gz
编辑crontab文件crontab -e
添加
0 19 * * * root /path-to-svn-dump/svndump.sh file
每天晚上7点,这将转储您的文件
在Windows上创build一个bat文件,如
for /F "tokens=6,7,8 delims=/ " %%i in ('echo.^|date^|find "current" ') do set today=%%k%%j%%i set backupdate=%today% cd "C:\backups\svn" svnadmin dump "C:\svn_repository\your_repo" > "C:\backups\svn\yourbackup_%backupdate%.svn"
将此文件添加到计划的作业中以运行所需的时间。
svnadmin dump
应该工作,但你也可以使用svnandmin hotcopy
。 我使用cron中的以下脚本备份多个存储库,压缩它们并保留最后几天:
#!/bin/sh # # Backup-svn: Back up each repository under /svn using 'svnadmin hotcopy'. svn_dir=/my/svn/directory backup_dir=/my/svn/backup/directory date_stamp=`date +%Y-%m-%d` repo_list=`ls -d $svn_dir/*/conf | sed -e "s:^$svn_dir/::" -e 's:/conf$::'` keep_days=5 renice 5 -p $$ > /dev/null 2>&1 ionice -c 3 -p $$ > /dev/null 2>&1 cd $backup_dir for repo in $repo_list ; do dest=$repo-$date_stamp dest_tmp=$backup_dir/$dest rm -rf $dest_tmp date +"%F %T: Starting hotcopy for $repo" svnadmin hotcopy $svn_dir/$repo $dest_tmp date +"%F %T: Archiving $repo" tar -czf $dest.tar.gz $dest_tmp du -sh $dest.tar.gz $dest_tmp date +"%F %T: Removing $repo" rm -rf $dest_tmp & for old_backup in `ls $repo-2*.tar.gz | sort -r | sed "1,${keep_days}d"` ; do date +"%F %T: Removing $old_backup" rm $old_backup done done