扩展
Linux日志文件总管logrotate http://linux.cn/article-4126-1.html
xargs用法详解 http://blog.youkuaiyun.com/zhangfn2011/article/details/6776925
1. rsync工具介绍
rsync 是一个比较重要的工具,需要熟练掌握,在工作中很有可能每天都会用到这个工具。例如我们从 A 机器传输文件到 B 机器,或者通过远程去备份一些数据,都会使用这个工具。rsync 不仅可以通过网络传输数据,也可以在本机传输数据,类似于 cp 。
假设现在有一个 A 目录和 B 目录,现在的需求是把 A 目录下的数据拷贝到B目录下去,但是 A 目录下的数据会一直在更新或增加,也就是说 A 目录下的数据一直在变动,现在需要每小时拷贝一次到 B 目录去,如果只使用 cp 命令的话,只能是从头到尾把文件覆盖一遍。但是如果 A 目录只增加了一个很小的文件,也要从头到尾的覆盖的话,很耗费时间和磁盘资源。所以我们才需要使用 rsync 工具, rsync 能实现增量的拷贝, rsync 只会拷贝增加的或更新的文件, rsync 也支持远程同步传输文件。
- 安装 rsync 包
[root@sc ~]# yum install -y rsync
- 例如我把 /etc/passwd 文件通过 rsync 命令拷贝到 /tmp 目录下,而且能够看到详细的信息,rsync 命令与其说是拷贝不如说是发送,在显示的信息里也显示了传输速度
[root@sc ~]# rsync -av /etc/passwd /tmp/1.txt
sending incremental file list
passwd
sent 1,874 bytes received 35 bytes 3,818.00 bytes/sec
total size is 1,782 speedup is 0.93
[root@sc ~]#
- 远程传输命令格式,需要加上用户名和 IP 地址,后面跟传输的目标目录
如果不写用户名的话,就会默认为当前终端的用户名,例如我当前终端使用的是 root 用户,那么默认就是传输到对方的 root 上,如果我当前终端使用的是 user1 或者其他什么用户,就会按照这个用户名去传输,对方没有这个用户的话也仍然会要求输入密码
[root@sc ~]# rsync -av /etc/passwd root@192.168.85.129:/tmp/1.txt
root@192.168.85.129's password:
sending incremental file list
sent 45 bytes received 12 bytes 2.92 bytes/sec
total size is 1,782 speedup is 31.26
[root@sc ~]#
2. rsync常用选项
rsync含义:是一个远程数据同步工具。
rsync [OPTION] … SRC DEST
rsync [OPTION] … SRC [user@]host:DEST
rsync [OPTION] … [user@]host:SRC DEST
rsync [OPTION] … SRC [user@]host::DEST
rsync [OPTION] … [user@]host::SRC DEST
SRC:源文件,DEST:目标目录或者文件,[user@]host:远程服务器,host:代表IP
参数 | 参数含义 |
---|---|
-a | 包含-rtplgoD。 |
-r | 同步目录时要加上,类似 cp 时的 -r 选项。 |
-v | 同步时显示一些信息,让我们知道同步的过程。 |
-l | 保留软连接。 |
-L | 加上该选项后,同步软链接时会把源文件给同步。 |
-p | 保持文件的权限属性。 |
-o | 保持文件的属主。 |
-g | 保持文件的属组。 |
-D | 保持设备文件信息。 |
-t | 保持文件的时间属性。 |
–delete | 删除DEST中SRC没有的文件。 |
–exclude | 过滤指定文件,如–exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步。 |
-P | 显示同步过程,比如速率,比-v更加详细。 |
-u | 加上该选项后,如果DEST中的文件比SRC新,则不同步。 |
-z | 传输时压缩。 |
rsync主要参数示例:
- 现在我们开始实践使用一下这些选项,我用 /root/111 目录作为源目录,然后以/tmp 作为目标目录,-av 选项是最常用的选项,能够看到同步的过程
[root@sc ~]# rsync -av /root/111/ /tmp/111_dest/
sending incremental file list
created directory /tmp/111_dest
./
2.txt
aming4
yum.log.1 -> /tmp/yum.log
222/
aming1/
aminglinux/
sent 286 bytes received 112 bytes 796.00 bytes/sec
total size is 12 speedup is 0.03
[root@sc ~]#
- 加 -L 选项会把 -a 选项里包含的 -l 选项覆盖掉,-L 选项会把源目录下的软链接文件的指向文件拷贝过去:
如果拷贝软链接文件的指向文件时,该软连接的指向文件不存在就会报错
- – delete 选项会删除目标目录中,源目录没有的文件,例如目标目录有一个123.txt的文件,但是源目录没有这个文件,那么同步时就会把目标目录下123.txt文件删除掉
[root@test01 ~]# rsync -avPL --delete /tmp/111/ root@192.168.85.131:/tmp/123/
root@192.168.85.131's password:
sending incremental file list
deleting 1.txt
./
sent 127 bytes received 28 bytes 11.48 bytes/sec
total size is 0 speedup is 0.00
- –exclude 选项可以过滤指定的文件,并且可以过滤多个,例如我把 x 开头的文件都过滤掉
[root@test01 111]# rsync -avLP --exclude "x*" /tmp/111/ root@192.168.85.131:/tmp/123/
root@192.168.85.131's password:
sending incremental file list
./
sent