Category Archives: Linux & FreeBSD

rsync参数说明

rsync选项说明

-v, –verbose 详细模式输出
-q, –quiet 精简输出模式
-c, –checksum 打开校验开关,强制对文件传输进行校验
-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, –recursive 对子目录以递归模式处理
-R, –relative 使用相对路径信息
-b, –backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项来指定不同的备份文件前缀。
–backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, –update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, –links 保留软链结
-L, –copy-links 想对待常规文件一样处理软链结
–copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
–safe-links 忽略指向SRC路径目录树以外的链结
-H, –hard-links 保留硬链结
-p, –perms 保持文件权限
-o, –owner 保持文件属主信息
-g, –group 保持文件属组信息
-D, –devices 保持设备文件信息
-t, –times 保持文件时间信息
-S, –sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, –dry-run现实哪些文件将被传输
-W, –whole-file 拷贝文件,不进行增量检测
-x, –one-file-system 不要跨越文件系统边界
-B, –block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, –rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
–rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, –cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
–existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
–delete 删除那些DST中SRC没有的文件
–delete-excluded 同样删除接收端那些被该选项指定排除的文件
–delete-after 传输结束以后再删除
–ignore-errors 及时出现IO错误也进行删除
–max-delete=NUM 最多删除NUM个文件
–partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
–force 强制删除目录,即使不为空
–numeric-ids 不将数字的用户和组ID匹配为用户名和组名
–timeout=TIME IP超时时间,单位为秒
-I, –ignore-times 不跳过那些有同样的时间和长度的文件
–size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
–modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T –temp-dir=DIR 在DIR中创建临时文件
–compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 –partial
–progress 显示备份过程
-z, –compress 对备份的文件在传输时进行压缩处理
–exclude=PATTERN 指定排除不需要传输的文件模式
–include=PATTERN 指定不排除而需要传输的文件模式
–exclude-from=FILE 排除FILE中指定模式的文件
–include-from=FILE 不排除FILE指定模式匹配的文件
–version 打印版本信息
–address 绑定到特定的地址
–config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
–port=PORT 指定其他的rsync服务端口
–blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
–progress 在传输时现实传输过程
–log-format=formAT 指定日志文件格式
–password-file=FILE 从FILE中得到密码
–bwlimit=KBPS 限制I/O带宽,KBytes per second
-h, –help 显示帮助信息

使用 rsync 替代ftp同步文件到镜像服务器

在网站开发中,我们常常在本地有一台测试服务器,包括版本控制都在这上面,然后我们要想办法把测试服务器上的程序同步到线上的服务器中,这时候,Rsync就发挥作用了。下面我就介绍如何使用Rsync同步代码到服务器,或者说,镜像服务器,完全不必再使用ftp这不靠谱的东西。如果你只是小站点,弄个论坛cms之类的,或者你在使用windows服务器,可以忽略此文。

首先,Rsync官方网站http://rsync.samba.org/ 去下载3.x版本. 3.x版本增加了一些对比方式。但主要的对比还是文件的修改时间。centos或其它一些linux已经默认安装了2.x版本。你要不愿意用3.x,用2.x也可以

其次,你线上服务器(或者说镜像服务器)和你本地源码服务器或者说测试服务器之间,时间最好设置一样,比如时区什么的。如果你同步过以后,线上的服务器时间超前了,那你就可能同步不上去了。直到线下的修改时间超过线上的超前时间才能同步上去。这一点是被很多人忽略的重要故障点。

下载rsync源码包,解压后编译安装,通用的习惯是将安装位置放在/usr/local下
./configure –prefix=/usr/local/rsync
make && make install
每台服务器都这样安装。被同步的服务器需要开启rsync进程,主动提交同步的服务器不必开启进程。下面会介绍如何开启,先看被同步服务器(线上服务器)的配置文件。
Continue reading

linux 使用 touch 修改文件的修改时间

rsync有时候因为服务器时间错了,需要更改文件的修改时间时间,可以使用 touch命令来修改文件的修改时间:

touch -c -m -t 201101110000 teadme.txt

修改readme.txt为2011年1月11日零时零分修改

如果批量修改文件和目录,则使用

find /home/www/site -exec touch -c -m -t 201101110000 {} \;

即可把/home/www/site下的所有文件和目录都改变修改时间。

注意上面命令中的空格。

touch [-acdmt] 文件参数:

-a : 仅修改access time。

-c : 仅修改时间,而不建立文件。

-d : 后面可以接日期,也可以使用 –date=”日期或时间”

-m : 仅修改mtime。

-t : 后面可以接时间,格式为 [YYMMDDhhmm]

如 touch -c -t 0906270730 file

Usage: touch [OPTION]… FILE…
Update the access and modification times of each FILE to the current time.

Mandatory arguments to long options are mandatory for short options too.
-a change only the access time
-c, –no-create do not create any files
-d, –date=STRING parse STRING and use it instead of current time
-f (ignored)
-m change only the modification time
-r, –reference=FILE use this file’s times instead of current time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
–time=WORD change the specified time:
WORD is access, atime, or use: equivalent to -a
WORD is modify or mtime: equivalent to -m
–help display this help and exit
–version output version information and exit

Note that the -d and -t options accept different time-date formats.

If a FILE is -, touch standard output.

shell脚本 /bin/bash^M: bad interpreter报错解决

可能是你的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.
可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的
(1). vi filename
然后用命令
:set ff?
可以看到dos或unix的字样. 如果的确是dos格式的, 那么你可以用 set fileformat=unix 把它强制为unix格式的, 然后存盘退出. 再运行一遍看.

(2)也可以用sed 这样的工具来做:
sed ‘s/^M//’ filename > tmp_filename
mv -f tmp_filename filename
来做
特别说明:^M并不是按键shift + 6产生的^和字母M, 它是一个字符, 其ASCII是0x0D, 生成它的办法是先按CTRL+V, 然后再回车(或CTRL+M)

linux踢掉其它用户命令

备忘一下,今天就把顺序给记错了。

首先运行一下w看看都谁在线。可以把已经不活动的T掉
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 – 02:46 9:13 9.71s 9.61s /usr/bin/python
root pts/1 192.168.0.100 02:59 0.00s 0.04s 0.00s w
然后执行命令
pkill -kill -t pts/0

Atheros 网卡centos 驱动安装

Atheros的网卡在服务器中并不常见,甚至见不着。
在台式机的集成网卡中却占据着一定的比重。

台式机要安装Centos,但是网卡是Atheros的,基本上随机附送的驱动光盘中的linux驱动,是害人的。因为编译不成功。

要去Atheros的官方网站下载驱动。
网址为:http://partner.atheros.com/Drivers.aspx
然后用这个包去编译安装,就没问题了。
最后,BS一下华硕。

linux sed命令技巧

1、删除行首空格
sed ‘s/^[ ]*//g’ filename
sed ‘s/^ *//g’ filename
sed ‘s/^[[:space:]]*//g’ filename

2、行后和行前添加新行
行后:sed ‘s/ceagle/&\n/g’ filename
行前:sed ‘s/ceagle/\n&/g’ filename
&代表ceagle

3、使用变量替换(使用双引号)
sed -e “s/$varable1/$varable2/g” filename

4、在第一行前插入文本
sed -i ‘1 i\插入字符串’ datafile

5、在最后一行插入
sed -i ‘$ a\插入字符串’ datafile

6、在匹配行前插入
sed -i ‘/pattern/ i “插入字符串”‘ datafile

7、在匹配行后插入
sed -i ‘/pattern/ a “插入字符串”‘ datafile

8、删除文本中空行和空格组成的行以及#号注释的行
grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d

9、sed -e ‘1!G;h;$!d’ file倒过来显示
Continue reading

linux及macos 删除svn目录的shell脚本

要删除目录中的svn信息,即要把目录及其子目录中的.svn隐藏目录全删除。

windows下可以搜索.svn,把目录下所有.svn目录删除就行了。很简单。

linux下,可使用如下脚本

#!/bin/sh
echo "recursively removing .svn folders from"
pwd
rm -rf `find . -type d -name .svn`

对于一个svn管理的项目,可以把如下代码保存脚本,放在项目的根目录下:
Continue reading

google apache 加速模块 mod-pagespeed

Google推出mod-pagespeed免费模块用于优化Apache HTTP服务器框架下的网站速度。该模块从多个方面对服务器运行速度进行优化,例如可以对图片进行再压缩,通过CMS(内容管理系统)改变网页构造但不改变CMS本身等。在此次开源之前,Google内部也一直使用该模块。

如果你在安装的时候出现

Public key for mod-pagespeed-beta_current_i386.rpm is not installed

则需要导入Google Public key:

wget https://dl-ssl.google.com/linux/linux_signing_key.pub
rpm –import linux_signing_key.pub

或者

rpm –import http://dl.google.com/linux/linux_signing_key.pub

OK,现在开始安装mod-pagespeed
Continue reading