一、什么是rsync
二、rsync的功能特性
三、编译安装rsync软件
四、rsync的应用模式
五、rsync 借助ssh通道技术案例
六、企业案例一:搭建远程容灾备份系统
练习一推送文件方式同步并排除指定的目录和文件
练习二测试主机之间数据完全同步(无差异同步)
练习三rsync多目录多模块同步
配置防火墙允许rsync服务
附加一:rsync服务端部署流程回顾
附加二:rsync自我模拟排错思路及实战
附加三rsync生产排错整理我的FAQ
inotify介绍
企业应用案例:利用rsync+inotify搭建实时同步系统。-------------------------------------
Rsync服务器配置,安装、配置、实例以及原理详解。
5.3.6 企业应用案例:利用rsync+inotify搭建实时同步系统
===================rsync 简介=======================
一、什么是rsync
rsync简介、传统的数据备份方式有cp命令和wget命令
cp命令是源文件和目标文件都在本地。
该命令仅实现对文件的一种完整复制,如果要复制的数据量巨大,那么备份的时间就会变得很长,
wget命令通过网络进行备份,它不支持增量备份,每次都需要将所有的数据重新在网络上传输一遍,
而不考虑哪些文件是更新过来,因此该命令的效率比较点。
我们今天就介绍一个款实用的工具rsync,
借助于这个工具能轻松实现数据的本地镜像和远程备份。
什么是rsync
rsync是linux 系统下的文件同步和数据传输工具,它采用rsync算数。使一个客户机和远程文件服务器
之间的文件同步,通过rsync可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据
通知网络传输方式备份到任何一个远程主机上;rsync可以在中断之后恢复传输;rsync只传输源文件和目标
文件之间不一致的部分;rsync可以执行完整备份或增量备份。
二、rsync的功能特性
rsync即remote sync,从软件名称上就可以看出它所实现的功能,rsync有如下特性:
·可以镜像保存整个目录树和文件系统。
·可以增量同步数据,文件传输效率高,因而同步时间很短。
·可以保持原有文件的权限、时间等属性。
·加密传输数据,保证了数据的安全性。
·可以使用rcp、ssh等方式来传输文件,当然也可以直接通过socket连接传输文件。
支持匿名传输。
-v 告诉rsync详细说明正在发生什么
-a 告诉rsync从源目录 复制所有文件和目录
-z 告诉rsync压缩数据以使网络传输更快(在进入线缆前我们的数据将被加密和压缩)
-e ssh 告诉rsync使用我们的SSH shell来执行网络传输,你可以通过设置RSYNC_RSH shell环境变量来避免每次输入rsync命令时都需要加上这个参数,参考rsync的man手册获得详细信息。
--delete 告诉rsync删除备用服务器上文件,如果它们在主服务器已经不存在的话(这个选项不会移除任何主或源数据)。
/www/ 这是SSH客户端上源目录,它后面带有斜线,如果你想要rsync复制整个目录以及它下面的内容,这个斜线就是必需的
10.1.1.2:/www 这是目标ip地址和目标目录
三、编译安装rsync软件
[root@director rsync-3.0.4]# tar zxvf rsync-3.0.4.tar.gz
[root@director rsync-3.0.4]# cd rsync-3.0.4
[root@director rsync-3.0.4]# ./configure
config.status: creating popt/dummy
config.status: creating shconfig
config.status: creating config.h
rsync 3.0.4 configuration successful
[root@director rsync-3.0.4]#
[root@director rsync-3.0.4]# make
[root@director rsync-3.0.4]# make install
四、rsync的应用模式
rsync有4种应用模式,第一种是shell应用模式,也叫本地模式,
第二种是远程shell模式,它是利用ssh执行底层连接和加密传输;
第三种是查询模式,与ls命令实现的功能类似。
第四种是服务器模式,平时所说的搭建rsync服务器就是指这种模式。
1、本地shell模式
本地shell主要用于复制制定目录到另一个目录,例如:
[root@director src]# rsync -av rsync-3.0.4 /tmp
------------省略--------------
rsync-3.0.4/zlib/zlib.h
rsync-3.0.4/zlib/zutil.c
rsync-3.0.4/zlib/zutil.h
rsync-3.0.4/zlib/zutil.o
sent 5472930 bytes received 5190 bytes 10956240.00 bytes/sec
[root@director src]# rsync -av rsync-3.0.4/ /tmp
sent 5472780 bytes received 5189 bytes 10955938.00 bytes/sec
total size is 5454825 speedup is 1.00
[root@director src]#
rsync -av rsync-3.0.4 /tmp和rsync -av rsync-3.0.4/ /tmp 两个命令是有点差距的。
明显差距就是源参数末尾的斜杠,如果源参数的末尾没有斜杠,就将指定的源目录复制到制定的目录;
如果源参数末尾有斜杠,就会复制制定源目录中的内容到目录中。
命令中:“-a” 即为“--archive”(归档模式),表示以递归方式传输文件,并保持所有文件属性;
“-v”即为“--verbose” 表示输出详细模式信息。
启动rsync服务
以守护进程方式启动rsync服务:
rsync --daemon #-----daemon表示以守护进程的方式启动rsync服务
拓展:rsync的进程参数选项:
--daemon #-----daemon表示以守护进程的方式启动rsync服务
--addrss #-----绑定指定ip地址提供服务。
--config=FILE #---更改配置文件路径,而不是默认的/etc/rsyncd.conf
--prot=PORT #---更改其它端口号提供服务,而不是默认的873端口。
提示:以上几个选项为了解内容,生产场景使用的不多。
操作过程
#rsync --daemon
lsof -i tcp:873
===================rsync 借助ssh通道技术案例=======================
#rsync -avzP /etc/hosts -e "ssh -p30000" [email protected]:/tmp/
意思:把本地/etc/hosts文件推送到远端ip为192.168.110tmp目录下,SSH端口号为30000
#rsync -avzP -e "ssh -p30000" [email protected]:/tmp/hosts .
意思:从远端的ip把这个文件拉到本地来。
我们解释一下拉取案例的语法:
rsync -avzP -e "ssh -p 22" [email protected]:/opt /tmp
说明:
1、-avz相当于-vzrtopgD1,表示同步时文件和目录属性不变。
2、-P显示同步的过程,可以用--progress替换。
3、-e "ssh -p 22" 表示通过ssh的通道传输数据,-p 22可省略。
4、[email protected]:/opt 远程的主机系统用户,地址,路径
5、/tmp本地的路径。
实例:通过root用户从192。168.1.110的opt目录(包含目录本身)把数据拉到本地的/tmp目录。
推送案例:
raync -vzrtopP -e "ssh -p 22" /etc [email protected]:/tmp
实例:通过root用户把本地的/tmp目录(不包括目录本身)推送到192.168.1.100的/opt目录。
#rsync -vzrtopP -e 'ssh -p 22' /tmp [email protected]:/opt
#和拉取的例子几乎一样,只是把源和目的调换一下即可。
password:输入连接主机密码即可。
特别说明:
1上文的数据同步都是通过加密传输,因为通过了ssh通道进行传输,
2、在传输前需要进行连接用户(一般为系统用户)密码验证,需要手工输入密码,这里我们借助前面章节的ssh
key 密钥免登陆验证的方式来实现,无交互验证数据传输。
3、rsync软件必须安装在本地及远程所有机器上。
借助ssh key密钥实现数据免登陆验证加密传输
说明,如果事先设置了ssh key密钥免登陆验证,即可以用rsync 通过ssh方式免登陆验证同步传输数据,
这是生产场景常用的方法之一。
配置ssh key密钥实现数据免登陆验证。
使用ssh通道批量传输数据脚本
vi lianglab.sh
#!/bin/sh
./etc/init.d/functions
if [$# -ne 1];then
echo "Usage:$0 argv"
exit
fi
for ip in 17 18
do
#scp -P30000 $1 [email protected].$ip:~ >&/dev/null&&\
#ssh -p30000 -t [email protected].$ip sudo rsync ~/$1 /etc >&/dev/null
rsync -avzP $1 -e "ssh -p 30000" [email protected].$ip:~ >&/dev/null
ssh -p30000 -t [email protected].$ip sudo rsync ~/$1 /etc >&/dev/null
if [ $? -eq 0 ];then
action "liang $1 successful." /bin/true
else
action "liang $1 failure." /bin/false
fi
done
===================rsync 借助ssh通道技术案例=======================
===================企业案例一:搭建远程容灾备份系统 =======================
实战练习:
某公司有一台web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做
一个周期性定时备份。要求如下:
每天晚上00点整在web服务器A上打包备份网站程序目录并通过rsync命令推送到服务器B上备份保留(备份思路可以是先在本地按日期
打包,然后在推到备份服务器上)
具体操作如下:
1、web服务器A和备份服务器B的备份目录必须都为/backup
2、web服务器站点目录假定为(/var/www/html)
定时备份脚本
cd /var/www &&\
tar zcf /backup/192.168.1.110/html_$(date +%F).tar.gz./html &&\
cd /backup/ &&\
rsync -az . [email protected]::backup --password-file=/etc/rsync.password >&/dev/null
find /backup --type f -name "*.gz" -mtime +7|xargs rm -f
部署前的准备工作,三台机器最佳
A>查看一下系统内核版本
[root@director src]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
[root@director src]# uname -r
2.6.18-164.el5
[root@director src]# lsb_release -a
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Release: 5.4
Codename: Tikanga
[root@director src]#
B>主机网络参数设置
主机名 网卡eth0 默认网关 用途
A-server 192.168.1.100 192.168.1.254 rsync服务器
B-server 192.168.1.110 192.168.1.254 rsync节点服务器
C-server 192.168.1.120 192.168.1.254 rsync节点服务器
提示:子网掩码均为255.255.255.0
具体需求:
要求在A-server上以rsync守护进程的方式部署rsync服务,使得所有rsync节点客户端主机,
可以把本地数据通过rsync的方式备份到rsync服务器A-server上。
本例的客户端为B-server、C-server。
开始部署rsync------rsync服务器端操作过程:
配置rsyncd.conf
1、配置rsyncd.conf
首先确认软件是否安装:
[root@director src]# rpm -aq rsync 5.5默认版本是2.6
rsync-2.6.8-3.1
[root@c-server ~]# rpm -aq rsync 5.8版本的centos默认安装是3.0版本
rsync-3.0.6-4.el5_7.1
2、rsync的配置文件为/etc/rsyncd.conf 在安装完rsync时,默认没有这个文件,需要手动建立一个即可,rsyncd.conf文件由一个或多个模块结构组成,
包括全局参数和模块参数,配置内容如下:
vi /etc/rsyncd.conf
#rsync_config______start
#created by lianglab 21:55 2013-6-13
#QQ 865362365
#花名:瀚亮
#Blog http://hi.baidu.com/zll56281688 http://zll56281688.blog.51cto.com
## rsyncd.conf start ##
uid = rsync
gid = rsync
use chroot = no
max connections = 100
strict modes = yes
timout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[lianglab]
path = /lianglab
comment = lianglab file
ignore errors
read only = no
write only = no
host allow = *
host deny = 192.168.1.111
list = false
auth users =backup
secrets file = /etc/rsync.password
上面每个选项解释:
1##uid此选项指定当该模块传输文件时守护进程应该具有的用户ID,默认为nobody。
2##gid此选项指定当该模块传输文件时守护进程应该具有的用户主ID,默认nobody。
3##use chroot如果为true 在给客户端传输文件前 “chroot to the path”这是rsync安全配置,因为我们大多数都是在内网使用,所以不配也可以。
4##max connections指定模块的最大并发连接数,超过限制的连接请求将被暂时限制,默认为0,没有限制。
5##strict modes指定是否检查口令文件的权限,yes为检查口令文件权限。如果设置为yes,密码文件的权限必须为root用户权限。
6##timeout 默认为0
7##pid file 指定rsync守护进程对应的PID文件路径
8##lock file指定支持max connections的锁文件,默认值是/var/run/rsync.lock
9##log file 指定了rsync的日志输出文件路径
10##[lianglab] 表示定义一个模块的开始,lianglab就是对应的模块名称。
11##path此选项用来指定需要备份的文件和目录,是必须设置的项,
12##ignore errors 表示可以忽略一些无关的I/O错误
13##read only 设置为no表示客户端可以上传文件,设置为yes表示只读
14##write only 设置为no表示客户端可下载文件,设置为yes表示不能下载。
15##host allow设置可以连接rsync服务器的主机,“*”表示允许任何连接的主机。
16##host deny 设置禁止连接rsync服务器的主机地址。
17##list,选项用来设定当客户请求可以使用的模块列表时,该模块是否被列出,默认true
18##auth users 用来定义可以连接该模块的用户名,
19## secrets file 此选项用于指定一个包含“用户名:密码”格式的文件,用户名就是auth users选项定义的用户,密码可以随便指定。
3、 dos2unix /etc/rsyncd.conf
[root@rsync ~]# dos2unix /etc/rsyncd.conf
dos2unix: converting file /etc/rsyncd.conf to UNIX format ...
[root@rsync ~]#
4、创建一个对外共享的目录,我们要授权lianglab这个目录的rsync权限,但是我们本机没有rsync用户,我们现在就要创建rsync这个用户。useradd rsync -s /sbin/nologin -M ##创建一个rsync用户,拒绝登录并没有在/home下面创建rsync目录。
[root@rsync ~]# mkdir -p /lianglab
[root@rsync lianglab]# useradd rsync -s /sbin/nologin -M
[root@rsync lianglab]# chown -R rsync.rsync /lianglab #授权操作
[root@rsync lianglab]#
5、配置用于rsync同步的账号和密码以及账号文件权限。
注意:其中backup:lianglab中的backup为同步传输用到的虚拟账号,这个账号仅为rsync的账号,不需要是系统账号,后面的lianglab为密码,不超过8位数,账号和密码中间用冒号分割。
[root@rsync lianglab]# echo "backup:lianglab" >>/etc/rsync.password
[root@rsync lianglab]# cat /etc/rsync.password
backup:lianglab
[root@rsync lianglab]#
[root@rsync lianglab]# chmod 600 /etc/rsync.password
[root@rsync lianglab]# ll /etc/rsync.password #操作完检查是一个好习惯
-rw------- 1 root root 16 Jan 24 15:49 /etc/rsync.password
[root@rsync lianglab]#
6、启动rsync服务
以守护进程方式来启动rsync服务
rsync --daemon #--daemon 表示以守护进程的方式启动rsync服务
rsync的进程参数其它选项解释:
--address #----绑定指定IP地址提供服务
---config-FILE #---更改配置文件路径,而不是默认的/etc/rsyncd.conf
--port=PORT #---更改其它端口提供服务,而不是默认的873端口
[root@rsync lianglab]# netstat -ant #没有启动rsync的时候
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:659 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:22 192.168.1.253:49627 ESTABLISHED
tcp 0 1 192.168.1.100:58614 192.168.1.111:21 SYN_SENT
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:631 :::* LISTEN
[root@rsync lianglab]#
[root@rsync lianglab]# lsof -i :873
---------------------------启动rsync后的检查操作--------------------------
[root@rsync lianglab]# rsync --daemon
[root@rsync lianglab]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 544 root 3u IPv6 45811 0t0 TCP *:rsync (LISTEN)
rsync 544 root 5u IPv4 45812 0t0 TCP *:rsync (LISTEN)
[root@rsync lianglab]# netstat -lntup | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 544/rsync
tcp 0 0 :::873 :::* LISTEN 544/rsync
[root@rsync lianglab]# ps -ef | grep rsync
root 544 1 0 16:05 ? 00:00:00 rsync --daemon
root 551 4404 0 16:06 pts/0 00:00:00 grep rsync
[root@rsync lianglab]#
7、设置rsync服务开启自启动操作
echo "/usr/bin/rsync --daemon" >>/etc/rc.local
注意:当然还可以用chkconfig rsync on 命令,但是要编写适合chkconfig操作的脚本。
重启rsync的命令
pkill rsync #---关闭rsync服务
rsync --daemon #---开启rsync服务
[root@rsync lianglab]# pkill rsync #---关闭rsync服务
[root@rsync lianglab]# ps -ef | grep rsync
root 570 4404 0 16:14 pts/0 00:00:00 grep rsync
[root@rsync lianglab]# lsof -i :873
[root@rsync lianglab]# netstat -lntup | grep 873
[root@rsync lianglab]#
[root@rsync lianglab]# rsync --daemon #---开启rsync服务
[root@rsync lianglab]# netstat -lntup | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 575/rsync
tcp 0 0 :::873 :::* LISTEN 575/rsync
[root@rsync lianglab]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 575 root 3u IPv6 46196 0t0 TCP *:rsync (LISTEN)
rsync 575 root 5u IPv4 46197 0t0 TCP *:rsync (LISTEN)
[root@rsync lianglab]# ps -ef | grep rsync
root 575 1 0 16:15 ? 00:00:00 rsync --daemon
root 580 4404 0 16:15 pts/0 00:00:00 grep rsync
[root@rsync lianglab]#
[root@rsync lianglab]# killall rsync #同样的作用也是杀rsync进程
[root@rsync lianglab]# killall rsync
rsync: no process killed
[root@rsync lianglab]# ps -ef | grep rsync
root 588 4404 0 16:17 pts/0 00:00:00 grep rsync
[root@rsync lianglab]# lsof -i :873
[root@rsync lianglab]# netstat -lntup | grep 873
[root@rsync lianglab]#
解释:killall有时候杀进程一下子杀不死,我们要连续杀,直到出现no process killed为止。
killall -9 rsync 是强制杀进程。
kill -9 PID
kill和killall -9 这个两个命令杀进程,如果杀了,有可能这个服务就起不来了。
我遇到过MySQL
[root@rsync lianglab]# kill -9 rsync
[root@rsync lianglab]# rsync --daemon
failed to create pid file /var/run/rsyncd.pid: File exists
[root@rsync lianglab]#
[root@rsync lianglab]# rm -f /var/run/rsyncd.pid #解决方法
[root@rsync lianglab]# rsync --daemon
[root@rsync lianglab]#
开始部署rsync------rsync客户端操作过程:
1、客户端创建密码文件,并修改权限,另外一台也是同样的操作。
[root@b-server ~]# echo "lianglab">/etc/rsync.password
[root@b-server ~]# chmod 600 /etc/rsync.password
[root@b-server ~]# ll /etc/rsync.password
-rw------- 1 root root 9 Jan 3 10:01 /etc/rsync.password
[root@b-server ~]# cat /etc/rsync.password
lianglab
[root@b-server ~]#
[root@c-server ~]# echo "lianglab">/etc/rsync.password
[root@c-server ~]# chmod 600 /etc/rsync.password
[root@c-server ~]# ll /etc/rsync.password
-rw------- 1 root root 9 Jan 24 16:33 /etc/rsync.password
[root@c-server ~]# cat /etc/rsync.password
lianglab
[root@c-server ~]#
2、开始备份数据篇---------------------------------------------------
操作场景:备份/var/www/html目录下的文件
备份操作一般都是先打包,在备份,到我们要备份目录的上一级目录中去。
在使用tar命令打包,我们可以把它打包到指定的目录也可以是当前目录
[root@b-server html]# ll /var/www/html/
total 4
-rw-r--r-- 1 root root 29 Jan 3 10:08 index.html
[root@b-server html]#
[root@b-server html]# cd /var/www/
[root@b-server www]# ls
cgi-bin error html icons manual usage
[root@b-server www]# tar zcvf html_$(date +%F).tar.gz ./html/
./html/
./html/index.html
[root@b-server www]# ls
cgi-bin error html html_2013-01-03.tar.gz icons manual usage
[root@b-server www]#
---------------------------------------------------------------------------
[root@b-server www]# rsync --avzp html_2013-01-03.tar.gz [email protected]::lianglab
rsync: --avzp: unknown option
rsync error: syntax or usage error (code 1) at main.c(1449) [client=3.0.6]
[root@b-server www]#
我们使用telnet命令检查一下服务端的端口是否开启
[root@b-server www]# telnet 192.168.1.100 873
Trying 192.168.1.100...
telnet: connect to address 192.168.1.100: Connection refused
telnet: Unable to connect to remote host: Connection refused
[root@b-server www]# telnet 192.168.1.100 873
Trying 192.168.1.100...
Connected to 192.168.1.100 (192.168.1.100).
Escape character is '^]'.
@RSYNCD: 30.0
^]
telnet> qiu^H^H^[[3~^H^H^[[3~
?Invalid command
telnet> quit
Connection closed.
[root@b-server www]#
[root@b-server www]# rsync -avzp html_2013-01-03.tar.gz [email protected]::lianglab
Password: #每次都要输入密码比较烦人,我们可以指定一下我们之前设置的密码文件,就不需要输入密码了。
sending incremental file list
html_2013-01-03.tar.gz
sent 270 bytes received 27 bytes 66.00 bytes/sec
total size is 183 speedup is 0.62
[root@b-server www]#
[root@b-server www]# rsync -avzp html_2013-01-03.tar.gz [email protected]::lianglab --password-file=/etc/rsync.password
sending incremental file list
sent 43 bytes received 8 bytes 102.00 bytes/sec
total size is 183 speedup is 3.59
[root@b-server www]#
我们在到rsync服务器上查看一下,文件已经被同步过来了。
[root@rsync lianglab]# ll
total 4
-rw-r--r-- 1 rsync rsync 183 Jan 3 10:12 html_2013-01-03.tar.gz
[root@rsync lianglab]#
更换一种方式推送一下文件,首先要到rsync服务端,删除已经推送过来的文件
[root@rsync lianglab]# rm html_2013-01-03.tar.gz
rm: remove regular file `html_2013-01-03.tar.gz'? y
[root@rsync lianglab]#
[root@b-server www]# rsync -avzp html_2013-01-03.tar.gz rsync://[email protected]/lianglab --password-file=/etc/rsync.password
sending incremental file list
html_2013-01-03.tar.gz
sent 270 bytes received 27 bytes 594.00 bytes/sec
total size is 183 speedup is 0.62
[root@b-server www]#
[root@rsync lianglab]# ll
total 4
-rw-r--r-- 1 rsync rsync 183 Jan 3 10:12 html_2013-01-03.tar.gz
我们在测试一下能不能推送到tmp目录,是不行滴。
[root@b-server www]# rsync -avzp html_2013-01-03.tar.gz rsync://[email protected]/tmp --password-file=/etc/rsync.password
@ERROR: Unknown module 'tmp'
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]
[root@b-server www]#
我们是可以往服务端lianglab这个目录下子目录推送的,但是一定要给目录授权的。
[root@rsync lianglab]# mkdir test
[root@rsync lianglab]# chown rsync test
[root@b-server www]# rsync -avzp html_2013-01-03.tar.gz rsync://[email protected]/lianglab/test --password-file=/etc/rsync.password
sending incremental file list
html_2013-01-03.tar.gz
sent 270 bytes received 27 bytes 594.00 bytes/sec
total size is 183 speedup is 0.62
[root@b-server www]#
[root@rsync lianglab]# cd test/
[root@rsync test]# ll
total 4
-rw-r--r-- 1 rsync rsync 183 Jan 3 10:12 html_2013-01-03.tar.gz
[root@rsync test]#
查看详细生成时间。
[root@rsync test]# ll /back/ --time-style=long-iso
[root@rsync test]# ll /back/ --time-style=full-iso
==============================================
参考文献:老男孩51CTO视频教程http://edu.51cto.com/course/course_id-875.html
南非蚂蚁《高性能Linux服务器构建实战》一书