声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:http://blog.csdn.net/halcyonbaby
内容系本人学习、研究和总结,如有雷同,实属荣幸!
如果我们需要对OS进行快照和rollback,那么我们可能需要使用的OS-level版本控制工具。
OpenSuse的子项目。项目的目的是提供对Opensuse的快照,rollback,对安装进行差分的功能。 Snapper没有绑定某种实现,想法有很多后端。比如btrfs/LVM/ext4。btrfs是默认的实现。
ostree是Redhat/Gnome开发者Colin Walters创建的项目。 ostree不依赖于文件系统的能力。ostree更像是面向二进制文件的git系统。
现在已经有了集成RPM的ostree项目rpm-ostree。 ostree像git一样同样有pull/push命令。
ostree的操作是原子的。root tree是只读挂载的,因此不能写任何数据。 ostree提供了init ramdisk和grub模块,从而允许我们在系统加载时选择使用的分支。
//初始化repo
$ cd ostree-demo-1
$ mkdir repo
$ alias ost="ostree --repo=`pwd`/repo"
$ ost init
$ ls repo
config objects refs remote-cache tmp
$ cat repo/config
[core]
repo_version=1
mode=bare
//提交一个commit
$ mkdir tree
$ cd tree
$ echo "x" > 1
$ echo "y" > 2
$ mkdir dir
$ cp /usr/share/dict/words words
$ ost commit --branch=my-branch --subject="Initial commit" --body="This is the first commit."
ce19c41036cc45e49b0cecf6b157523c2105c4de1ce30101def1f759daafcc3e
$ ost ls my-branch
d00755 1002 1002 0 /
-00644 1002 1002 2 /1
-00644 1002 1002 2 /2
-00644 1002 1002 4953680 /words
d00755 1002 1002 0 /dir
//提交第二个commit
$ tac words > words.tmp && mv words.tmp words
$ ost commit --branch=my-branch --subject="Reverse ‘words‘"
--body="This is the second commit."
67e382b11d213a402a5313e61cbc69dfd5ab93cb07fbb8b71c2e84f79fa5d7dc
$ ost log my-branch
commit 67e382b11d213a402a5313e61cbc69dfd5ab93cb07fbb8b71c2e84f79fa5d7dc
Date: 2014-01-14 12:27:05 +0000
Reverse ‘words‘
This is the second commit.
commit ce19c41036cc45e49b0cecf6b157523c2105c4de1ce30101def1f759daafcc3e
Date: 2014-01-14 12:24:19 +0000
Initial commit
This is the first commit.
//查看两个版本
$ ost cat my-branch words | head -n 3
ZZZ
zZt
Zz
error: Error writing to file descriptor: Broken pipe
$ ost cat my-branch^ words | head -n 3
1080
10-point
10th
error: Error writing to file descriptor: Broken pipe
//checkout到某个版本
$ ost checkout my-branch
$ ls my-branch/
1 2 dir words
$ head -n 3 my-branch/words
ZZZ
zZt
Zz
$ ost checkout my-branch^ my-branch
error: File exists
$ ost checkout --union my-branch^ my-branch
$ ls my-branch/
1 2 dir words
$ head -n 3 my-branch/words
1080
10-point
10th
rpm-ostree是基于ostree的一个衍生项目。目的是将rpm package与ostree结合起来。
并将保护rpm的ostree repo上传到ostree server端。
docker有比较简单的版本控制。我们可以使用docker commit提交新的镜像。 可以使用docker pull/push进行上传、下载操作。 还可以使用docker import创建一个image。
baserock使用btrfs实现了原子快照和rollback。
通过package级别的hardlink实现rollback。
参考:
1. http://samthursfield.wordpress.com/2014/01/08/os-level-version-control/
2.http://samthursfield.wordpress.com/2014/01/16/the-fundamentals-of-ostree/
原文地址:http://blog.csdn.net/halcyonbaby/article/details/43500231