rsync远程同步:是一个开源的快速备份的工具,可以在不同主机之间同步整个目录
拷贝文件,连接文件,设备
可以保持源文件或者目录的权限不变,时间,软硬连接 所有者 所在组 等均可以保持不变
可以实现增量同步,只同步变化的数据,数据传输效率很高
支持匿名认证
-r:递归模式,目录包含子目录里面的所有文件
-l:可以复制链接文件,软连接
-v:显示同步过程中的详细信息
-z:传输文件时,进行压缩
-a:归档模式,保留文件的权限,属性等等
-p:保留文件的权限标记(所有者 所在组)
-t:保留时间标记(时间戳)
-g:保留文件的所在组(管理员)
-o:保留文件的所在者(管理员)
-H:保留硬连接
-D:保留设备文件和其他特殊文件
--delete:删除目标位置有,但是原始位置没有的文件
下行同步
从源端同步到客户端
上行同步
从客户端同步到源端
所有:
systemctl stop firewalld
setenforce 0
test1:
vim /etc/rsyncd.conf
vim /etc/rsyncd_users.db
backuper:123456
chmod 600 /etc/rsyncd_users.db
cd /opt
mkdir test
chmod 777 test/
rsync --daemon
netstat -antp | grep rsync
kill $(cat /var/run/rsyncd.pid)
rsync --daemon
cd test
touch 123 456 789
echo 123 > 123
echo 456 > 456
echo 789 > 789
test2:
rsync -avz [email protected]::test /opt
rsync 发起同步命令
-avz 保留文件权限 v 显示同步过程中的详细信息 z 传输文件进行压缩
123456
echo "123456" > /etc/server.pass
[root@localhost opt]# chmod 600 /etc/server.pass
test1:
echo 123 >> 123
test2
rsync -avz --password-file=/etc/server.pass [email protected]::test /opt
test2
tar -xf inotify-tools-3.14.tar.gz
cat /proc/sys/fs/inotify/max_queued_events #监控事件队列
cat /proc/sys/fs/inotify/max_user_instances #最多监控的实例
cat /proc/sys/fs/inotify/max_user_watches #每个实例最多监控的文件
vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
sysctl -p
##rsync 同步速度很快,适合同步大文件,可以结合数据库同步使用。
cd inotify-tools-3.14
./configure
make && make install
工具
##inotify通知接口,可以用来监控文件系统的各种变化情况,文件存取,删除 移动 修改都可以被监控
inotify
cd ..
cd /opt
mkdir test
inotifywait -mrq -e modify,create,move,delete /opt/test
-m :表示持续监控
-r 递归整个目录
-q 信息提示
-e 指定监控的事件,多个事件用,隔开
mkdir data
cd data
touch gq wdf wh yst
cd ..
ls
chmod 777 data/
rsync -azH --delete --password-file=/etc/server.pass /opt/data [email protected]::test/
rsync -azH --delete --password-file=/etc/server.pass /opt/data [email protected]::test/
vim inotify.sh
#!bin/bash
CMD="inotifywait -mrq -e modify,create,move,delete /opt/data"
rsync_cmd="rsync -azH --delete --password-file=/etc/server/pass /opt/data [email protected]::test/'
$CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l ) -gt 0 ]
then
$rsync_cmd
fi
done
chmod 777 inotify.sh
chmod +x /etc/rc.d/rc.local
echo '/opt/inotify.sh' >> /etc/rc.d/rc.local
crontab -e -u root
* * */2 * * /opt/inotify.sh
mkdir test1
cd test1
ls
touch {1..5000}
在文件数量较多的情况下,比如百万和千万级别的文件 , rm -rf 很慢
rysnc可以实现快速删除大量文件
mkdir /home/blank
rsync --delete-before -a -H -v --progres --stats /home/blank /opt/test
--delete-before:在传输的过程中进行删除
-a 归档模式
-H 硬连接
-v 输出过程信息
--progress 显示传输的过程
--stats 给出文件的传输状态