1.  问题情况:

需要将/opt现被挂载的分区的数据迁移到另一个新的磁盘上,还保持/opt 分区不变。

 解决办法如下;

方法一、使用tar

  1. 进行程序停止,使用tar 打包(但是可以先查看这个目录下的各个高级目录的大小,可分开打包),tar 打包放入另一个分区中进行备份。

 2.数据备份后可将、opt分区进行umount 卸载,挂载到准备的新磁盘上。

 3.挂载后将新的数据复制到/opt 下,这样就可以了。

方法二、使用rysnc 本地同步

  1. 这个办法也需要进行三步,因为需要保持原先的目录不变。

  2. 可直接安装yum –y install xinetd rsync

  3. 安装完之后,rsync 由于xinetd 进行管理的,所以在

     如下: vi/etc/xinetd.d/rsync

           Disabled = no  注: 只需要将 这个选项的yes 改为no 即可。

            然后就可重启xinetd 就开启rsync 了,service xinetd restart

               注:也可以独立运行服务:/usr/bin/rsync --deamon

  1. 开启服务之后可进行同步,本地同步相对简单,所有的配置保持默认即可,

案例:rsync   -azp  /db/* /vol/

 注:如是远程主机之间的同步,需要添加相应的配置,如下:

    

1)  Rsync 有三个配置文件,rysncd.conf(主配置文件,这个文件默认是没有的,需要自己配置)、rsyncd.secrets(密码文件,文件属性设为root拥有,权限要设为600,否则无法备份)rs yncd.motd(rsync服务器信息)

 2) 主配置文件的配置,主配置文件是由全局配置和若干模块模块组成。

     全局参数

在文件中 [module] 之外的所有配置行都是全局参数。当然也可以在全局参数部分定义模块参数,这时该参数的值就是所有模块的默认值。

参数

说明

默认值

address

在独立运行时,用于指定的服务器运行的 IP 地址。由 xinetd 运行时将忽略此参数,使用命令行上的 –address 选项替代。

本地所有IP

port

指定 rsync 守护进程监听的端口号。 xinetd 运行时将忽略此参数,使用命令行上的–port 选项替代。

873

motd file

指定一个消息文件,当客户连接服务器时该文件的内容显示给客户。

pid file

rsync 的守护进程将其 PID 写入指定的文件。

log file

指定 rsync 守护进程的日志文件,而不将日志发送给 syslog

syslog facility

指定 rsync 发送日志消息给 syslog 时的消息级别。

daemon

socket options

指定自定义 TCP 选项。

 模块参数

  模块参数主要用于定义rsync 服务器哪个目录要被同步,模块同步的格式必须为【module】形式,这个名字就是rsync 客户端看到名字,类似samba服务器提供的共享名。

 模块参数如下:

 

     a. 基本模块参数

参数

说明

默认值

path

指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的。

comment

给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。

b. 模块控制参数

参数

说明

默认值

use chroot

若为 true,则 rsync 在传输文件之前首先 chroot path 参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要 root 权限,并且不能备份指向 path 外部的符号连接所指向的目录文件。

true

uid

指定该模块以指定的 UID 传输文件。

nobody

gid

指定该模块以指定的 GID 传输文件。

nobody

max connections

指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。

0(没有限制)

lock file

指定支持 max connections 参数的锁文件。

/var/run/rsyncd.lock

list

指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为 false,可以创建隐藏的模块。

true

read only

指定是否允许客户上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传。

true

write only

指定是否允许客户下载文件。若为 true 则不允许下载;若为 false 并且服务器目录也具有读权限则允许下载。

false

ignore errors

指定在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误。一般来说 rsync 在出现 I/O 错误时将将跳过 –delete 操作,以防止因为暂时的资源不足或其它 I/O 错误导致的严重问题。

true

ignore nonreadable

指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些不应该被备份者获得的文件时是有意义的。

false

timeout

该选项可以覆盖客户指定的 IP 超时时间。从而确保 rsync 服务器不会永远等待一个崩溃的客户端。对于匿名 rsync 服务器来说,理想的数字是 600(单位为秒)。

0 (未限制)

dont compress

用来指定那些在传输之前不进行压缩处理的文件。该选项可以定义一些不允许客户对该模块使用的命令选项列表。必须使用选项全名,而不能是简称。当发生拒绝某个选项的情况时,服务器将报告错误信息然后退出。例如,要防止使用压缩,应该是:”dont compress = *”

*.gz *.tgz *.zip *.z *.rpm *.deb *.iso  *.bz2 *.tbz

c. 模块文件筛选参数

参数

说明

默认值

exclude

指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 –exclude 来指定模式。

exclude from

指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取 exclude 列表定义。

include

指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中。这等同于在客户端命令中使用 –include 来指定模式

include from

指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义。

·        一个模块只能指定一个exclude 参数、一个include 参数。

·        结合 include exclude 可以定义复杂的exclude/include 规则

·        这几个参数分别与相应的rsync 客户命令选项等价,唯一不同的是它们作用在服务器端。

·        关于如何书写规则文件的内容请参考http://www.howtocn.org/rsync:use_rsync

d. 模块用户认证参数

参数

说明

默认值

auth users

指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。用户名和口令以明文方式存放在 secrets file 参数指定的文件中。

(匿名方式)

secrets file

指定一个 rsync 认证口令文件。只有在 auth users 被定义时,该文件才起作用。

strict modes

指定是否监测口令文件的权限。若为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。

true

·        rsync 认证口令文件的权限一定是 600,否则客户端将不能连接服务器。

·        rsync 认证口令文件中每一行指定一个用户名:口令对,格式为:

username:passwd

·        一般来说口令最好不要超过8个字符。若您只配置匿名访问的 rsync 服务器,则无需设置上述参数。

e. 模块访问控制参数

参数

说明

默认值

hosts allow

用一个主机列表指定哪些主机客户允许连接该模块。不匹配主机列表的主机将被拒绝。

*

hosts deny

用一个主机列表指定哪些主机客户不允许连接该模块。

客户主机列表定义可以是以下形式:

·        单个IP地址。例如:192.168.0.1

·        整个网段。例如:192.168.0.0/24192.168.0.0/255.255.255.0

·        可解析的单个主机名。例如:centoscentos.bsmart.cn

·        域内的所有主机。例如:*.bsmart.cn

·        “*”则表示所有。

·        多个列表项要用空格间隔。

f. 模块日志参数

参数

说明

默认值

transfer logging

使 rsync 服务器将传输操作记录到传输日志文件。

false

log format

指定传输日志文件的字段。

”%o %h [%a] %m (%u) %f %l”

设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“

可以使用的日志格式定义符如下所示:

·        %a - 远程IP地址

·        %h - 远程主机名

·        %l - 文件长度字符数

·        %p - 该次 rsync 会话的 PID

·        %o - 操作类型:”send” “recv”

·        %f - 文件名

·        %P - 模块路径

·        %m - 模块名

·        %t - 当前时间

·        %u - 认证的用户名(匿名时是 null

·        %b - 实际传输的字节数

·        %c - 当发送文件时,记录该文件的校验码

 

2)  具体的案例

  

uid =root

gid =root

usechroot = yes

resdonly = yes

motdfile = /etc/rsyncd.motd

log file= /var/log/rsync.log

 

 

[db]                 #模块他为我们提供了一个链接的名字,在本模块中链接到了/db 目录,要用[db]形式

path =/db           # 指定文件目录所在的位置,这是必须指定的

list=yes             # 意思是rsync 服务器上提供同步数据的目录在服务器上模块是否列出来,no会安全一些。

ignoreerrors             # 忽略io 错误

authusers = root         

secrets file =/etc/rsyncd.secrets   # 密码文件的位置

3)  rsync 语法详解:

    

在配置完rsync服务器后,就可以从客户端发出rsync命令来实现各种同步的操作。rsync有很多功能选项,下面就对介绍一下常用的选项:

rsync的命令格式可以为:

1. rsync [OPTION]... SRC [SRC]...[USER@]HOST:DEST 
2. rsync [OPTION]... [USER@]HOST:SRCDEST 
3. rsync [OPTION]... SRC [SRC]...DEST 
4. rsync [OPTION]... [USER@]HOST::SRC[DEST] 
5. rsync [OPTION]... SRC [SRC]...[USER@]HOST::DEST 
6. rsync [OPTION]...rsync://[USER@]HOST[:PORT]/SRC [DEST]

rsync有六种不同的工作模式:

1. 拷贝本地文件;当SRCDES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
2.使用一个远程shell程序(如rshssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
3.使用一个远程shell程序(如rshssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
-a archive模式操作、复制目录、符号连接相当于-rlptgoD

rsync中的参数

-r 是递归 
-l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
-e ssh的参数建立起加密的连接。
-u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
--progress是指显示出详细的进度情况
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
--password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。