2011年 05月 的归档
一个dump DVD到mp4的脚本
注意:此脚本只是一个对我来说刚刚够用的脚本,并不是一个通用的方案,如果你的源DVD里有多语言、多字幕之类的,很可能需要修改参数才能正常运行,另外输出文件的码率、画面长宽、声音采样率等,也需要按实际情况修改。
给儿子买了12张巧虎的DVD,但是这年头,已经很少见DVD播放器了,电视机都是直接插U盘的,所以打算把DVD里的内容dump到U盘里(mp4格式),再进行播放。我的盘是按故事分段的,所以我也按段分成不同的mp4文件,一个盘的内容放在一个目录里。
用到的几个命令:
lsdvd
命令可以取得DVD的标题、语言、字幕、分段等信息。mencoder
是个强大得一塌糊涂的视频/音频编码工具。eject
命令可以弹出光盘,放在脚本最后最合适了。
上脚本:
#!/bin/sh DIR="/media/sda1/qiaohu" DVD=`lsdvd` title="`echo "$DVD" | grep "^Disc Title:" | cut -d ":" -f2-`" title=${title:1} chapters="`echo "$DVD" | grep "^Title" | awk -F"[ ,]+" '{print $6}'`" echo "$title | $chapters" T="$DIR/$title" if [ -d "$T" ] ; then i=1 while [ -d "$T$i" ] ; do ((i++)) done T="$T$i" fi mkdir "$T" i=1 while [ $i -le $chapters ] ; do echo $T/$i.mp4 mencoder -of lavf -lavfopts format=mp4 -oac lavc -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:vbitrate=800:acodec=libfaac:abitrate=96 -af lavcresample=48000 -vf dsize=720:540:0,scale=0:0,expand=720:540,harddup -ofps 29.970 -srate 48000 -o "$T/$i.mp4" dvd://1 -chapter $i-$i ((i++)) done eject |
突然又觉得这事儿挺折腾的,呵呵,而且不知道这样做(自己dump、自己看)算不算侵犯版权呢?
mysql主备部署笔记
本文说的mysql主备是指单向、异步的数据复制。可以是一个主、多个备。
这样做的好处显而易见:有利于健壮性、速度和系统管理。备用数据库可以做为只读查询和备份的机器,减轻主用数据库的负担。
实施前提:
主用数据库的配置里至少有:
[mysqld] log-bin=mysql-bin server-id=1 |
建议主备的数据库版本一致。
我所知道的最简单的实施方式(不需要停主库,甚至不需要长时间地禁止主库写入):
主库操作:
在主库里建一个复制用的用户:
grant replication slave on *.* TO 'replication'@'备库地址' identified by 'replication'; |
导出主库的数据,并记下当然日志文件和偏移:
mysqldump --master-data=2 --single-transaction -uroot -p --all-databases >dumpfile |
这里是把数据以SQL的形式导出,并记下导出瞬间的日志文件和偏移(得益于--master-data=2
参数),出来的dumpfile的前面会有一行类似以下的注释信息,就是文件名和偏移值了:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=1061553673; |
对于这步,网络上一般采用的方法为:
FLUSH TABLES WITH READ LOCK;--先把主库设置成只读,然后导出SQL或者直接复制数据文件 SHOW MASTER STATUS; --记下日志文件和偏移 UNLOCK TABLES; --恢复主库写入这样,至少在复制数据的那段时间,主库是不可提供服务的。
备库操作:
复制主库的/etc/my.cnf
和dumpfile
。
把主库配置里的 server-id 改成2(或者3、4,多个备库保存互不相同),再加上
relay-log = slave-relay.log relay-log-index = slave-relay-log.index |
导入数据:
mysql <dumpfile |
进入mysql命令行执行:
SLAVE STOP; CHANGE MASTER TO MASTER_HOST='主库地址', MASTER_PORT=3306, MASTER_USER='replication', MASTER_PASSWORD='密码', MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=1061553673; SLAVE START; |
然后,就搞定了,可以在备库执行
SHOW PROCESSLIST; |
查看同步的状态,如果此命令的输出里有两个“system user”的进程,并且Command都是“Connect”的话,就差不多OK了,此时,任何对主库的修改,都能准实时地从备库里查询出来。
参考文章:mysql官方中文手册