码迷,mamicode.com
首页 > 其他好文 > 详细

os-level版本控制工具

时间:2015-02-04 23:24:55      阅读:413      评论:0      收藏:0      [点我收藏+]

标签:ostree   upgrade   

声明:

本博客欢迎转发,但请保留原作者信息!

博客地址:http://blog.csdn.net/halcyonbaby

内容系本人学习、研究和总结,如有雷同,实属荣幸!


OS-level版本控制工具

如果我们需要对OS进行快照和rollback,那么我们可能需要使用的OS-level版本控制工具。

Snapper

OpenSuse的子项目。项目的目的是提供对Opensuse的快照,rollback,对安装进行差分的功能。 Snapper没有绑定某种实现,想法有很多后端。比如btrfs/LVM/ext4。btrfs是默认的实现。

ostree

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

rpm-ostree是基于ostree的一个衍生项目。目的是将rpm package与ostree结合起来。
并将保护rpm的ostree repo上传到ostree server端。

docker

docker有比较简单的版本控制。我们可以使用docker commit提交新的镜像。 可以使用docker pull/push进行上传、下载操作。 还可以使用docker import创建一个image。

Baserock

baserock使用btrfs实现了原子快照和rollback。

Nix

通过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/


os-level版本控制工具

标签:ostree   upgrade   

原文地址:http://blog.csdn.net/halcyonbaby/article/details/43500231

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!