存档
linux rsync 同步文件夹
备份是系统管理中最艰巨、最容易被忽略的工作之一,同时也是最重要的工作之一。备份是防御硬件故障、非法入侵和系统安全的最大威胁——终端用户的最后一道防线。
Rsync 是一个小巧的算法的强大实现。它最基本的功能是高效地镜像一个文件系统的能力。使用 rsync,可以灵活地选用一组网络协议,诸如 nfs、smb 或 ssh,方便地让一个文件系统与另一个文件系统保持同步更新。Rsync 的第二个功能,也就是备份系统使用的功能,它可以把已经发生改变或是被删除的文件的老的版本归档。
1.1 软件简介
Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由rsync.samba.org维护。Rsync使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行Rsync server的机器也叫backup server,一个Rsync server可同时备份多个client的数据;也可以多个Rsync server备份一个client的数据。
Rsync可以搭配rsh或ssh甚至使用daemon模式。Rsync server会打开一个873的服务通道(port),等待对方Rsync连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。
Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,比较知名的有cwRsync和Sync2NAS。
Rsync的基本特点如下:
1.可以镜像保存整个目录树和文件系统;
2.可以很容易做到保持原来文件的权限、时间、软硬链接等;
3.无须特殊权限即可安装;
4.优化的流程,文件传输效率高;
5.可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
6.支持匿名传输。
1.3 命令语法
rsync的命令格式可以为以下六种:
rsync [OPTION]… SRC DEST
rsync [OPTION]… SRC [USER@]HOST:DEST
rsync [OPTION]… [USER@]HOST:SRC DEST
rsync [OPTION]… [USER@]HOST::SRC DEST
rsync [OPTION]… SRC [USER@]HOST::DEST
rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]
对应于以上六种命令格式,rsync有六种不同的工作模式:
1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。
2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。
3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。
4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。
5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。
6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
1 同步本机文件测试
rsync –help
你可以看到很多参数,选择自己觉得需要的参数即可。
先测试一下本机同步:
rsync -vzrtopgu –progress /Data/scripts/ /tmp/back_srcipt/
会看到文件在传输,再运行一次,就知道没有运行复制,因为文件没有修改过
增加文件测试:
touch /Data/scripts/test.txt
再运行上面的脚本就可以看到把这个新文件传输过去了,没有复制别的文件。
3 服务器间同步文件
要在服务器间rsync传输文件,需要有一个是开着rsync的服务,而这一服务需要一个配置文件,说明当前运行的用户名和用户组,这个用户名和用户组讲在改变文件权限和相关内容的时候有用,否则有时候会出现提示权限问题。配置文件也说明了模块,模块化管理服务的安全性,每个模块的名称都是自己定义的,可以添加用户名密码验证,也可以验证IP,设置目录是否可写等。
vi /etc/rsyncd.conf
uid=root
gid=root
#这里指定的用户名和用户组是root,权限过高了,出于安全考虑可以用别的[web_aslibra]
# 这里是认证的模块名,在client端需要指定
path = /Data/webapps/www.aslibra.com/
# 需要做镜像的目录
comment = test
ignore errors
# 可以忽略一些无关的IO错误
read only = yes
# 只读,如果是no,则可以从client发送文件到此服务器
list = no
# 不允许列文件
auth users = aslibra
# 认证的用户名,如果没有这行,则表明是匿名
secrets file = /etc/rsyncd.pass
# 认证文件名[web_aslibra_public]
path = /Data/webapps/www.aslibra.com/
ignore errors
read only = yes
list = no[web_aslibra_write]
path = /Data/webapps/www.aslibra.com/
ignore errors
read only = no
hosts allow = 192.168.1.2
list = no
服务启动方式:
/Data/apps/rsync/bin/rsync –daemon
第一个模块,用户验证方式,需要指定用户名密码:
在/etc/下新建一文件rsyncd.pass
#vi /etc/rsyncd.pass
aslibra:aslibra.com
一行一个用户,用户名:密码
修改rsyncd.pass权限
chmod 600 /etc/rsyncd.pass
此步省略会导致rsync无法启动
客户端也需要有密码文件,当然路径可以不一样
rsync -rvlHpogDtS –progress –password-file=/etc/rsyncd.pass aslibra@192.168.1.3::web_aslibra /tmp/aslibra.com/
我有时候总是验证不对,不知道是否两个服务器间版本有差异的问题
第二个模块是没有验证的情况,都可读
rsync -rvlHpogDtS –progress aslibra@192.168.1.3::web_aslibra_public /tmp/aslibra.com/
第三个是验证ip,而且可写
发送文件很简单,把后面两个参数反过来就可以,拿上一个例子
rsync -rvlHpogDtS –progress /tmp/aslibra.com/ aslibra@192.168.1.3::web_aslibra_public
这样会提示出错,因为web_aslibra_public是只读的
rsync -rvlHpogDtS –progress /tmp/aslibra.com/ aslibra@192.168.1.3::web_aslibra_write
这样就可以了,但要看从哪个IP来的了,否则也失败
下面是摘录的一些详细的参数说明:
rsyncd.conf参数
uid
该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是”nobody”。
gid
该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为”nobody”。
exlude
用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用–exclude来指定模式,不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用”-“和”+”来指定是exclude还是include。
但是需要注意的一点是该选项有一定的安全性问题,客户很有可能绕过exlude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。
exlude from
指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exlude列表定义。
include
用来指定多个由空格隔开的多个rsync并应该exlude的模式列表。这等同于在客户端命令中使用–include来指定模式,结合include和exlude可以定义复杂的exlude/include规则。一个模块只能指定一个include选项,但是可以在模式前面使用”-“和”+”来指定是exclude还是include。
include from
指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。
auth users
该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果”auth users”被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在”secrets file”选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
secrets file
该选项指定一个包含定义用户名:密码对的文件。只有在”auth users”被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,需要限式指定一个。(例如:/etc/rsyncd.secrets)
strict modes
该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true。
hosts allow
该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式:
o xxx.xxx.xxx.xxx,客户主机只有完全匹配该IP才允许访问。例如:192.167.0.1
o a.b.c.d/n,属于该网络的客户都允许连接该模块。例如:192.168.0.0/24
o a.b.c.d/e.f.g.h,属于该网络的客户都允许连接该模块。例如:192.168.0.0/255.255.255.0
o 一个主机名,客户主机只有拥有该主机名才允许访问,例如:backup.linuxaid.com.cn。
o *.linuxaid.com.cn,所有属于该域的主机都允许。
默认是允许所有主机连接。
hosts deny
指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义
ignore errors
指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IP错误,一般来说rsync在出现IO错误时将将跳过–delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题。
ignore nonreadable
指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的
客户端同步命令
v, –verbose 详细模式输出
-q, –quiet 精简输出模式
-c, –checksum 打开校验开关,强制对文件传输进行校验
-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, –recursive 对子目录以递归模式处理
-R, –relative 使用相对路径信息rsync foo/bar/foo.c remote:/tmp/
则在/tmp目录下创建foo.c文件,而如果使用-R参数:
rsync -R foo/bar/foo.c remote:/tmp/
则会创建文件/tmp/foo/bar/foo.c,也就是会保持完全路径信息。
-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的shell程序
–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 显示帮助信息
linux nfs和iscsi的配置
最近又重拾旧业想把服务器重新虚拟化,以发挥服务器的最大功效。因为esxi 对支持SAN类的网络存储比较好,我的数据量比较大复制数据着实费了一翻力气。NFS 和 ISCSI这两种共享存储都可以用软件模拟。一点设置方法,保留备用。
1 NFS
server端:配置/etc/exports 写入共享内容,然后重启NFS服务
这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:
[共享的目录] [主机名或IP(参数,参数)]
其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。
当主机名或IP地址为空时,则代表共享给任意客户机提供服务。
当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:
[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
下面是一些NFS共享的常用参数:
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
client端: mount 192.168.16.0:/home/share /export/file
完成
2.ISCSI
ISCSI 我使用了windows端的服务端,没什么好说的,唯一的问题就是wintarget和openfiler添加硬盘都必须格式化(可能也可以,我没有具体的好好研究),所以就没用用了国产的ccdisk,挺好用也不必重新格式化硬盘。
linux服务端设置
安装服务端 yum install scsi-target-utils
服务启动 service tgtd start
新建目标 tgtadm –lld iscsi –op new –mode target –tid 1 -T iqn.2010-05.com.k12zy.mail-storage
新建目标盘 tgtadm –lld iscsi –op new –mode logicalunit –tid 1 –lun 1 -b /dev/sda8
添加可控连接端 tgtadm –lld iscsi –op bind –mode target –tid 1 -I 192.168.16.37
查看存在的目标 tgtadm –lld iscsi –op show –mode target
这样就可以了 如果想系统启动即可以用就把中间的三句都加到开机启动里即可
linux端设置
首先安装iscsi的客户端 yum install iscsi-initiator-utils
启动服务 service iscsi start
发现target端 iscsiadm -m discovery -t sendtargets -p 192.168.1.1
返回结果 192.168.1.1:3260,1 iqn.2005-02.com.ricecake.iscsi:00
登陆 iscsiadm -m node -T iqn.2005-02.com.ricecake.iscsi:00 -p 192.168.1.1 -l
退出 iscsiadm -m node -T iqn.2005-02.com.ricecake.iscsi:00 -p 192.168.1.1 –logout
到这里iscsi已经完成了,然后到fdisk里已经能够看到这个盘了,其他的就像本地磁盘一样继续进行后面的操作就可以了。如果想重启后仍然重启,可以将上面挂在的那个语句直接保存到/etc/iscsid/iscsid.conf 的最后。
3.samba
另一个有用的东西挂载samba的共享到系统(可以挂在windows的共享),注意centos里文件格式是cifs
mount -t cifs -o username=billy //192.168.16.20/export/hd3 /export/hd3/
linux统计文件夹中文件数目和大小
第一种方法:
ls -l|grep “^-”|wc -l
ls -l 长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)。如果ls -lR|grep “^-”|wc-l则可以连子目录下的文件一起统计。
grep ^- 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc -l 统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
第二种方法:
find ./ -type f|wc -l
由于默认find会去子目录查找,如果只想查找当前目录的文件用find ./ -maxdepth 1 -type f|wc -l即可。
查看linux文件目录的大小和文件夹包含的文件数
统计总数大小
du -sh xmldb/
du -sm * | sort -n //统计当前目录大小 并安大小 排序
du -sk * | sort -n
du -sk * | grep chuangtse //看一个人的大小
du -m | cut -d “/” -f 2 //看第二个/ 字符前的文字
查看此文件夹有多少文件 /*/*/* 有多少文件
du xmldb/
du xmldb/*/*/* |wc -l
40752
解释:
wc [-lmw]
参数说明:
-l :多少行
-m:多少字符
-w:多少字
2010 越柬泰行程
2010-01-16 济南(11:20)-广州-珠海-澳门 (南航)
2010-01-17 澳门-胡志明市-美奈(澳门非凡航空)
2010-01-18 美奈
2010-01-19 美奈
2010-01-20 美奈-大叻
2010-01-21 大叻-夏宫-火车站
2010-01-22 大叻-胡志明
2010-01-23 胡志明-战争博物馆-越共基地-独立宫-红教堂-中央邮局(The Sinh Tourist)
2010-01-24 胡志明-芹苴(Ninh Ki)
2010-01-25 芹苴(Ninh Ki)-胡志明
2010-01-26 胡志明-柬埔寨暹粒(Siem ReapSiem Reap)
2010-01-27 吴哥窟-外圈(Banteay srei(女王宫)→Phnom kulen(荔枝山)→Beng mealea(崩密列))
2010-01-28 吴哥窟-小圈
2010-01-29 吴哥窟-大圈
2010-01-30 暹粒-波贝-泰国Ban Mai-曼谷(20:30)-普吉(21:40)(亚航)
2010-01-31 普吉-PP岛
2010-02-01 PP岛 潜水
2010-02-02 PP岛 出海
2010-02-03 PP岛-普吉岛
2010-02-04 普吉岛
2010-02-05 普吉岛(14:50)-香港(19:30) (亚航)
2010-02-06 香港
2010-02-07 香港-深圳
2010-02-08 深圳-广州
2010-02-09 广州(08:20)-济宁 (南航)
保罗·哈吉斯 2004 CRASH 撞车
善与恶,冲击,撞车
导演的另一部《百万宝贝》
※※※※※※※ 影片信息 ※※※※※※※
【片名】Crash
【译名】撞车
【年代】2004
【国家】美国
【类别】惊悚/剧情/犯罪
【语言】英语
【评分】8.1/10 (134,944 votes)
【链接】http://www.imdb.com/title/tt0375679
【导演】保罗·哈吉斯 Paul Haggis
丹泽尔华盛顿 《美国黑帮》
丹泽尔华盛顿 演技派的黑人影星,推荐一看。
美国黑帮 American.Gangster http://www.mtime.com/movie/50671/
限时追捕 out of time http://www.mtime.com/movie/12219/
2009蓬莱-贵州行程
巴丹吉林穿越与额济纳的胡杨林
下半年一闲下来就有机会更新了。下一步整理08新疆的照片然后就是09年的照片了。
下面是09年十月到内蒙古阿拉善盟的记录,照片还没有整理以后再添加到相册吧。
这种有个名字叫 鱼背 更加陡的叫刀锋 都是长时间风吹的结果
这个就是车正在骑在这种鱼背上
有的车到上面没停好,正好担在中间的背上,前后轮子都不着地,就动不了了。
结果就只能这样拖了
很多时候要下这种陡坡 这样看着可能没什么效果 下的时候很吓人
这次和大连的一大家子 他们开了一辆霸道 然后再加上向导的车 一共三个车 他们一大家子还带了个小孩
温差比较大 晚上挺冷的,有专门的睡袋和帐篷 大连的准备的比较充分,带了发电机、电饭煲什么的,向导车上有煤气罐锅。
沙漠里危险也是有的 开车的危险 沙漠都是大沙丘也没有路 所以有的时候会翻车啦 飞起来来 之类的。
这种直上直下的坡是一般的 那种得侧着过的坡最吓人 因为车是靠着惯性在坡上转的 车是一侧斜着的 只要车速度跟不上车就会侧滑 甚至翻个跟头 。
沙漠的车的事故一般人不会有什么大问题 因为车速都不快 另外沙子毕竟比硬地要软的多 。
我就飞了一次 向导走错了路在一个很大的上坡 怕上不去所以车开的很快 快到坡顶的时候刹不住车了 这时车头基本上成60度左右向上,过了坡之后另外一面也是一个这样的坡 那车就整个飞了起来 落地时飞了两米 索性我反应比较及时在另一边及时停了下来 没有造成什么大的问题。
沙漠里的骆驼骨头化石
两个外国人 他们是要徒步穿越沙漠大约需要十多天
从沙漠出来 就到了额济纳旗 这是一个边境的小城紧靠蒙古 在之前并不为人知 自从张艺谋的英雄在这里取了个景后 人就多了。
胡杨是一种很古老的树种 全世界有几处 额济纳是活着的胡杨最多的地方
胡杨有着“活着千年不死,死后千年不倒,倒后千年不朽” 的说法
额济纳 还有一个黑水城 以前西夏王朝的 一个边塞 保存的还算完好 19世纪被俄罗斯人从城里搬走了几十箱的经卷等文字材料
这次的gps轨迹















