使用rsync备份文件

事实证明,rsync是个很好的备份工具,无论目标地址是网络还是本地。

1. 备份本地根目录下/dev, /home目录意外的目录
rsync -av --exclude=/dev --exclude=/home / /mnt/sdb1/root/

2. 通过ssh拷贝(备份整个目录的文件)
rsync -av smzz.org:/file/to/path/ /file/to/path/

反过来上传目录也可以:
rsync -av /file/to/path/ smzz.org:/file/to/path/

非默认ssh端口下,以56789为例
rsync -av -e 'ssh -p 56789' /file/to/path/ smzz.org:/file/to/path/

当然,也可以通过rsync自己的协议备份数据,网上例子很多,就不在此累赘。

需要特别注意的时,如果是备份目录,源目录一定要对应上,特别是后面的斜杠,否则就差之毫厘失之千里,
比如:
如果写成
rsync -av /file/to/path smzz.org:/file/to/path/

slackware下试用ibus输入法

步骤:
1. 删除相关的输入法,我用的是scim:
ls /var/log/packages | grep scim | xargs sudo removepkg

2. 安装ibus,我是从SBo上下载的安装脚本(链接
同时还需要gconf、pyxdg两个软件包。

3. 更改配置
sudo chmod +x /etc/profile.d/ibus.{csh,sh}

4. 重启X即可

注意:
1. ibus-qt不是必须的
因为我依然可以在opera、freemind等基于qt的程序里调用ibus输入中文

2. 有关scim以及输入法相关的配置,可参见slackware里的CHANGES_AND_HINTS.TXT文件

通过rsync向指定的ssh端口同步数据

rsync -av -e 'ssh -p 2222' /home/svn/repos2/ smzz.org:/home/zhouguoqiang/svn/repos/

这样即便远程ssh不是默认的22端口,也可以通过rsync同步文件

2009系统架构师大会听课笔记

周末参加了2009系统架构师大会,期间对自己感兴趣的话题做了部分笔记,现摘录如下:

大型可扩展系统架构-新浪网动态应用平台介绍

童剑 新浪高级系统架构师,研发中心平台部总监

MySQL的事务嵌套

在使用MySQL时,印象中Innodb表无法进行事务之间的嵌套,其实是有条件的:同一个连接里的事务无法嵌套,但不同连接之间的事务却可以嵌套。

<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'root';
$password = 'root12';

try {
    $dbh = new PDO($dsn, $user, $password);
    $dbh2 = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage() . "\n";
}

try {
    $dbh->beginTransaction();
    if (true) {
        $dbh2->beginTransaction();
        $dbh2->commit();
    }
    $dbh->commit();
    echo "It's OK.\n";
} catch (Exception $e) {
    echo "Transaction Faild: " . $e->getMessage() . "\n";
}

?>

导出导入数据表中部分记录的方法

今天犯了一个很低级的错误,通过命令行恢复一个mysqldump出来的很大的文件时,由于没有没有将它放到后台进行,运行几个小时之后突然由于超时而中断与远程服务器的连接了。幸好可以通过SQL语句导出导入部分记录的数据:

导出:

SELECT * FROM park_log WHERE pl_id > 51025594 INTO OUTFILE '/tmp/apps_park_log_51025594.txt';

导入:

 LOAD DATA INFILE '/data1/apps_park_log/xB' INTO TABLE park_log;

yejr曾经测试比较,LOAD DATA比导入SQL文件快,但由于LOAD DATA必须所有操作进行完之后才向数据库里写记录,所以有时候往往会感觉LOAD DATA比较慢。我刚操作一个数千万行的文件时,还以为程序没有工作而手动中止了。真是一个活生生的例子。

换用Drupal程序

操作远远没有想象中的复杂:先通过wordpress将原Blog内容导出为一个WXR格式的文件,然后通过Drupal的Wordpress Import模块,点几下鼠标即可将wordpress的内容转移至durpal里。

为了简化url,这次干脆将drupal程序放到了网站的根目录,值得一提的是,转换前后blog的feed订阅地址都没有变,不知道是不是巧合。

分区、格式化、用标签方式挂载一个分区

fdisk /dev/sdb
mkfs.ext3 /dev/sdb1

mkdir /data1
e2label /dev/sdb1 /data1
然后编辑/etc/fstab文件,添加如下内容
LABEL=/data1 /data1 ext3 defaults 1 0
然后mount -a

e2labe就好像给一个磁盘设备添加标签,便于记忆。不过我觉得挂载时还是使用设备标识(如/dev/sdb1)比较明显一些。

tcp_window_scaling导致的windows服务器回应迟缓问题

工作遇到了一个奇怪的现象:windows下访问某个IIS服务器没有问题,有的Linux也可以正常访问,但有的Linux访问时,服务器回应十分迟缓。

后来在bbs里有人让我参考kernel相关的一篇文章,原来自从内核2.6.17版本后TCP window scaling的变动导致无法访问某些路由器。

我进行如下设置,解决了问题:
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

文件反转命令tac和字符串反转命令rev

1. tac
将文件的最后一行当作第一行输出,以此类推,比如:
bash-3.1$ cat /etc/passwd | tac | tail -n 3
daemon:x:2:2:daemon:/sbin:/bin/false
bin:x:1:1:bin:/bin:/bin/false
root:x:0:0::/root:/bin/bash

2. rev
用法:rev [file ...]
描述:反转文件每行里的字符串顺序,如果没有指定文件,则从标准输出读取
bash-3.1$ echo 123456789 | rev
987654321

Syndicate content