使用python进行版本控制脚本

时间:2011-05-02 08:57:54

标签: python bash sysadmin

我正在阅读这个问题https://stackoverflow.com/questions/38388/organization-wide-backup-strategy

我对实施这个系统很感兴趣

  

修订控制由a处理   扫描文件系统的Python脚本   并将更改的文件上传到中央   服务器。该服务器上的文件系统   广泛使用Unix风格   符号链接 - 即只有一个副本   一个给定的文件被存储,   后续副本只是符号链接   至。这可以让你有一个完整的   为每一天创建的文件系统   备份,但只使用一小部分   它使用的实际磁盘空间(你   只需要足够的空间来存放任何文件   自上次备份后更改为   存储所有这些符号链接)。这是   事情的一般原则   Mac的Time Machine系统使用。用户   需要恢复旧文件可以   只需浏览该文件系统。

任何人都可以给我一些指南或教程或者一些在Python中使用这样的脚本。我希望看到的最好的事情是如何在不占用太多空间的情况下拥有每天的虚拟文件系统

我是python中的新手

2 个答案:

答案 0 :(得分:1)

rsync +硬链接。

使用rsync维护主备份目录。 使用cp -al来获取每日/每周/任何快照。

使用硬链接意味着重复的文件不会占用额外的空间,即每个快照只会占用已更改的文件中的空间。此外,每个快照都包含备份的完整副本,并且将保留备份的符号链接。

我有一个用于管理快照的python包装器 - 保留预定义数量的每日,每周,每月和每年快照,但您可以根据需要将其保持为精细或简单。

这里有很好的灵感来源:http://www.mikerubel.org/computers/rsync_snapshots/

更新

示例备份:

# generate some test data
mkdir /tmp/backup
mkdir documents
date > documents/file1
date > documents/file2

# do the backup
rsync -av --delete documents /tmp/backup/
cp -al /tmp/backup /tmp/backup.$(date +%Y%m%d-%H%M%S)

现在您应该拥有一个具有当前状态(/ tmp / backup)和一个带日期的备份/ tmp / backup的主备份。对于下一个备份,只需再次运行rsync和cp:

# modify the test data
date >> documents/file1

# do the backup
rsync -av --delete documents /tmp/backup/
cp -al /tmp/backup /tmp/backup.$(date +%Y%m%d-%H%M%S)

请注意,rsync只会更新已更改的文件,因此在备份时间方面,这是优化的。由于您使用硬链接来保存未更改的文件,因此对于存储也非常有效。

答案 1 :(得分:0)

只需使用Mercurial - 一个用Python编写的出色的源代码控制系统。它也是目前最受欢迎的SCM之一。