2/25/2008

关于 subversion(svn)

简单讲一下 svn 从创建 repository 到 checkout 的步骤:

1) svnadmin create /home/dev/work/repository

2)修改 repository/conf 下配置文件
passwd 文件:
[users]
dev = dev

svnserve.conf 文件:
[general]
anon-access = read
auth-access = write
password-db = passwd

3)启动服务
svnserve -d -r /home/dev/work/repository

4)导入工作拷贝
import . svn://localhost/mytest --username=dev --password=dev -m"Init mytest directory"

5) 后续工作

svn checkout svn://localhost/mytest

svn add

svn commit -m""

svn ls svn://localhost

2/17/2008

拯救被删的文件

Linux 下误删文件后,怎么恢复呢?可以参考以下步骤:
  1. 第一时间将要拯救的 ext2 分区 (比如我的是挂到 /mnt/entertain 的 /dev/hda9) 挂载为只读模式:

    # umount /mnt/entertain
    # mount /dev/hda9 /mnt/entertain -o ro

  2. 运行 debugfs 里的 lsdel 获取最近被删的文件列表 (lsdel 命令运行会需要一点时间, 请耐心等等):

    # debugfs /dev/hda9
    debugfs 1.35 (28-Feb-2004)
    debugfs: lsdel

  3. 根据 lsdel 给出的列表中的时间, 想想自己是在什么时候删的, 这样可以找到相应的被删文件的 inode, 例如我是在昨晚 (01 月 22 日) 8 点多删的那个电影, 于是在 lsdel 列表里找到对应的这几个记录:

    311298 1000 100644 1136 1/ 1 Sat Jan 22 20:24:50 2005
    311299 1000 100644 62 1/ 1 Sat Jan 22 20:24:51 2005
    311300 1000 100644 730628096 178552/178552 Sat Jan 22 20:24:51 2005
    311297 1000 40755 0 1/ 1 Sat Jan 22 20:24:52 2005

  4. 使用 dump 命令恢复数据到另一分区. 很明显, 这几项记录就是被我删掉的那个电影 (包括它的文件夹, 它的两个文本信息文件, 它自己 (第三行, 大小为 730628096 那个)). 我只需要电影本身, 于是查到它的 inode 值 (第一列) 为 311300, 接着在 debugfs 的提示符里使用 dump 命令将它拯救到另一个分区里 (比如我的 /mnt/share/dump)

    # debugfs /dev/hda9
    debugfs 1.35 (28-Feb-2004)
    debugfs: lsdel
    debugfs: dump <311300> /mnt/share/dump/movie.avi

    留心括起 inode 值 311300 的那俩尖括号 <>, 这是必须的, 否则 debugfs 会告诉你找不到文件.
  5. 重复 dump /path/to/file 命令一个个恢复你还想拯救的文件