我在“Gnu/Linux Magazine France”中读到了一些相关内容。这家伙使用 rsync 从 /etc 到 root/ 然后通过 subversion 存储它,而不创建工作副本。
我将引用该杂志的一些内容。
好的,在示例中,服务器运行 freeBSD 并且是“sparky”,而要保存的机器在 debian 下并且是“副本”。创建用户“副本”。
在 /usr/local/etc/ssh/sshd_config 添加:
Match User replica
X11Forwarding no
AllowTcpForwarding no
ForceCommand /usr/local/bin/svnserv -t -r /home/replica/svnrepo -tunnel-user=replica
创建存储库
sparky # svnadmin 创建 /home/replica/svnrepo
修复权限:
sparky # chown -R replica:nogroup /home/replica
sparky # chown -R o-rwx /home/replica
sparky # chown -R g-rwx /home/replica
客户端:
安装颠覆
replica # mkdir -p /root/scripts/svnrepo
replica # rsync -av /etc /root/scripts/svnrepo
export SVN_SSH ="ssh -i /root/.ssh/id_rsa"
svn import -m "replica config files" /root/scripts/svnrepos svn+ssh://replica@sparky/home/replica/svnrepo
现在,我们的文件夹还不是工作副本,所以我们必须制作它。你能创建一个 .svn 文件吗?他不能:)
cd /root/scripts
mv svnrepo svnrepo.old
svn checkout svn+ssh://replica@sparky/home/replica/svnrepo
现在尝试修改 etc 中的文件,例如主机。
再次同步。您应该只获取修改后的文件,即复制 /etc/hosts。
现在你可以提交:
svn commit -m "backup 1" /root/scripts/svnrepo
还有最后一件事。如果你想让一个文件被颠覆,它必须被添加。因此,例如,如果您在 /etc 中创建一个新文件,默认情况下它不会被保存。
要做什么?
svn status /root/scripts/svnrepo | grep -e '^!' | awk '{ print $2 }' | xargs -r svn delete
svn status /root/scripts/svnrepo | grep -e '^?' | awk '{ print $2 }' | xargs -r svn add
然后,您必须制作自己的脚本。
希望这可以帮助。
(gtg,我稍后会编辑以设置标题,如果没有人这样做的话)