dotfile を自動で保存する

MacLinux を使っていると自分の rc ファイルが増えてきて一々手動で管理するのもメンドクサイし、外部リポジトリに管理したくないような物もある。
ていことで Dropboxスクリプトで保存するのを書いた。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
from datetime import datetime
from paver.easy import task, path, sh

files = [
    '.gitconfig',
    '.gvimrc',
    '.hgrc',
    '.history',
    '.pit',
    '.pythonrc.py',
    '.screenrc',
    '.vim',
    '.vimperator',
    '.vimperatorrc',
    '.vimrc',
    '.wgetrc',
    '.zsh',
    '.zshenv',
    '.zshrc'
]

dropbox_path = '/path/to/Dropbox/dotfiles/dotfile.tar.gz'
@task
def sync_dot():
    rotate()
    home_path = os.environ['HOME']
    os.chdir(home_path)
    compress(' '.join(files))
    sync()

def rotate():
    if os.path.exists(dropbox_path):
        os.chdir(os.path.dirname(dropbox_path))
        d = datetime.today()
        name = 'dotfie.%s.tar.gz' % d.strftime('%Y%m%d%H%M%S')
        print('move dotfile.tar.gz to %s' % name)
        sh('mv dotfile.tar.gz %s' % name)

def compress(items):
    print('compress to tar cvzf dotfile.tar.gz %s' % items)
    sh('tar cvzf dotfile.tar.gz %s' % items)

def sync():
    current = path('./')
    print('move dotfile.tar.gz to %s' % dropbox_path)
    sh('mv dotfile.tar.gz %s' % dropbox_path)
$ paver -f sync.py sync_dot

で、Dropboxディレクトリに dotfile.tar.gz で保存する。
すでに dotfile.tar.gz があったら古いのは日付を付ける。


Paver 便利。
シェルスクリプトでも良いのかもしれんけど…。