日常开发使用的笔记本键盘又一次坏了,需要送修几天,需要将这台电脑上所有资料代码备份到家里台式机,因为这已经不是第一次这么干了,前几次都是拿移动硬盘转移数据,很是麻烦并且还不一定什么数据都能简单打包,而且特慢,终于在这次忍不住想到了有没有什么办法做到自动备份同步,找了一下还真有,而且人家是用在数据运维过程中的数据备份,实时性很高,以下花了一晚上时间做了一些尝试,虽然最后没有用到实时备份同步的功能但是也进行了尝试,留作他日使用。
本地文件简单测试
luoyang@pavilion:~$ mkdir testdir
luoyang@pavilion:~$ rsync -av NewQotus testdir #会在testdir目录下新建一个NewQotus目录并备份
luoyang@pavilion:~$ rsync -av NewQotus/ testdir/ #不会建立NewQotus目录
使用实时同步测试
编译安装完 inotify 后 /home/luoyang/App/shell/rsync.sh
文件如下:
#!/bin/bash
host=192.168.1.119
src=/home/luoyang/test
des=test
user=qotone
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files
do
/usr/bin/rsync -vzrtopg --progress --delete --password-file=/home/luoyang/rsync.pw $src $user@$host::$des
echo "${files} was rsynced" >>/home/luoyang/rsync.log 2>&1
done
服务器端配置文件(/etc/rsyncd.conf):
uid = root
gid = root
user chroot = no
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log
[Workspace]
path = /home/luoyang/Workspace
ignore errors
read only = no
list = no
hosts allow = 192.168.1.5/255.255.255.0
auth users = qotone
secrets file = /etc/rsyncd.password
[DATA]
path = /home/luoyang/Documents/DATA
ignore errors
read only = no
list = no
hosts allow = 192.168.1.5/255.255.255.0
auth users = qotone
--exclude = Virtual_Machines BaiduNetdisk
secrets file = /etc/rsyncd.password
[nfsroot]
path = /home/luoyang/nfsroot
ignore errors
read only = no
list = no
hosts allow = 192.168.1.5/255.255.255.0
auth users = qotone
secrets file = /etc/rsyncd.password
[notes]
path = /home/luoyang/Documents/notes
ignore errors
read only = no
list = no
hosts allow = 192.168.1.5/255.255.255.0
auth users = qotone
secrets file = /etc/rsyncd.password
[Sources]
path = /home/luoyang/Source
ignore errors
read only = no
list = no
hosts allow = 192.168.1.5/255.255.255.0
auth users = qotone
secrets file = /etc/rsyncd.password
密码文件:
touch /etc/rsyncd.password
echo "qotone:qotone" > /etc/rsyncd.password
往服务器上传文档:
rsync -avz --delete --progress ./test/ qotone@192.168.1.119::test
从服务器下载文档:
rsync -avz --delete qotone@192.168.1.119::test ./test --password-file=/home/luoyang/rsync.pw
rsync 命令参数详解
rsync 常用参数:
-a, --archive 归档模式,等于-rlptgoD; #最常用的 一般直接 -avzP
-r, --recursive 递归模式;
-l 保持符号连接;
-p 保持文件原有权限;
-t 保持文件原有修改时间;
-g 保持文件原有用户组;
-o 保持文件原有属主;
-D -devices -specials,保持块设备文件和特殊文件;
-I 强制扫描,放弃“quick check”策略(quick check策略,通过查看文件的时间戳和文件大小,先排除一批认为相同的文件[rsync不会对文件夹本身做“quick check”]);
-z, --compress 压缩,默认的压缩算法和gzip一样;
-v, --verbose 显示进度详细信息;
-q, --quiet 精简输出模式;
-R, --relative 保持全路径;
–progress 显示传输进度(百分百); 等同于 -P
–delete 本地删除某一文件,远程也同步的删除该文件,保持严格的一致(不加该参数,则表示只增不减);
–exclude="*.tmp" 排除某些文件;
–exclude-from=FILE 排除FILE中指定模式的文件;
–port=PORT 指定其他的rsync服务端口;
实际操作
rsync -avz --progress /home/luoyang/notes/ qotone@192.168.1.119::notes
rsync -avz --progress /home/luoyang/Source qotone@192.168.1.119::Sources
rsync -avz --progress /home/luoyang/nfsroot/ qotone@192.168.1.119::nfsroot
rsync -avz --progress /media/luoyang/DATA/ qotone@192.168.1.119::DATA
rsync -avz --progress /media/luoyang/Workspace/ qotone@192.168.1.119::Workspace
rsync -avz --delete --progress /media/luoyang/Workspace/stm32/ qotone@192.168.1.119::stm32 # --delete 会删除掉服务器上不同的文件