使用rsync同步数据(by quqi99)

作者:张华  发表于:2015-12-28
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

( http://blog.csdn.net/quqi99 )

急需使用rsync在家里的多台机器上同步相片。

sudo apt-get  install  rsync
sudo update-rc.d -f rsync remove
sudo update-rc.d rsync start 20 2 3 4 5 . stop 20 0 1 6 .
sudo update-rc.d rsync enable
hua@node1:~$ sudo sysv-rc-conf --list rsync
rsync        0:off    1:off    2:on    3:on    4:on    5:on    6:off

这时候就可以在一台机器上同步目录了(rsync server运行在qnap上,统一在qnap上修改,rsync client定时运行下列命令即可让客户端的文件夹与服务端同步,以服务端为准):

rsync -avzur --progress --delete /bak/tmp/qnap/ /qnap/
rsync -avzur --progress --delete --password-file=/etc/rsync.secret  /bak/tmp/qnap/ /qnap/

在多台机器上同步目录:

rsync -rave "ssh -p 22 -l hua" -avzur --progress --delete 192.168.99.124:/qnap/ /qnap/
等价于:rsync -avzur --progress --delete hua@192.168.99.124:/qnap/ /qnap/

也可以配置使用::qnap使用下列配置文件/etc/rsyncd.conf中的[qnap]模块:

sudo rsync -avrzP hua@192.168.99.124::qnap qnap

hua@node1:~$ sudo rsync --list-only hua@192.168.99.124::
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use quqi rsync services!
++++++++++++++++++++++++++++++++++++++++++++++

qnap               This is qnap backup data

配置[qnap]模块的步骤如下:

sudo touch /etc/rsyncd.conf
sudo touch /etc/rsyncd.motd
hua@node1:~$ sudo cat /etc/rsyncd.motd
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use quqi rsync services!
++++++++++++++++++++++++++++++++++++++++++++++
sudo touch /etc/rsyncd.secrets
hua@node1:~$ sudo cat /etc/rsyncd.secrets
hua:Passw0rd
sudo chmod 600 /etc/rsyncd.secrets
sudo chown root:root /etc/rsyncd.secrets
hua@node1:~$ sudo cat /etc/default/rsync |grep 'RSYNC_ENABLE'
RSYNC_ENABLE=true

sudo /etc/init.d/rsync restart
sudo iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
vi /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
port = 873
address = 192.168.99.124
#usermod -g root hua
uid = hua
gid = root
use chroot = yes
read only = yes
hosts allow=192.168.99.0/255.255.255.0 10.0.1.0/255.255.255.0
hosts deny=*
max connections = 5
motd file = /etc/rsyncd.motd
log file = /var/log/rsync.log
#transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

[qnap]
path = /qnap
list=yes             # 可以使用rsync --list-only hua@192.168.99.124::命令列出目录
ignore errors
auth users = hua,root
secrets file = /etc/rsyncd.secrets
comment = This is qnap backup data
exclude = tmp/  test/

最后,我实际上是这样处理的,我有一个qnap,一个台式机,一个笔记本,对于一些相片啥的想多存储几份别一个机器哪天坏了丢了。

1, 由于iscsi上一个bug,一个client对qnap上的iscsi server写了之后,没法实时更新在另一个client上(必须先umount再mount一下才行), 并且qnap的iscsi采用一个大的虚拟文件存储的,这都不是我想要的。所以最后只使用了qnap上的nfs将相片存储了一份

2, 台式机因为IP固定开机自动mount (sudo mount -t nfs -o vers=3 192.168.99.122:/Public /bak/qnap), 另外直接复制了一份到/bak/qnap_local目录防止rsync操作失误毁坏数据。

3, 笔记本因为经常外出IP不固定,外出时使用/bak/qnap_local目录的内容,在家需要同步时手工同步:

   sudo mount -t nfs -o vers=3 192.168.99.122:/Public /bak/qnap
   cd ~ && rsync -avzurP --exclude 'doc' --exclude 'photo' --exclude 'media'  --progress --delete /bak/qnap/ /bak/qnap_local

4, 平时在家办公统一从台式机上写/bak/qnap目录将数据直接写到qnap上。手机等移动设备通过qnap ftp访问数据。

20171031更新

最后的方案是:

1, 使用autos先将nas上的nfs共享目录共享到台式机(注: nfs共离目录无法使用inotify):

hua@node1:~$ grep -r 'auto.direct' /etc/auto.master
/-      auto.direct        --timeout 60
hua@node1:~$ cat /etc/auto.direct
/nas    -fstype=nfs4,rsize=32768,wsize=32768     192.168.99.122:/Public

2, 然后直接手动运行下列两个命令:

rsync -avztur --progress --delete  /nas/doc/  /bak/doc
rsync -avztur --progress --delete  /nas/photo/  /bak/photo

 

20201104更新 - nas往openwrt同步数据

rsync can work in two different mode, rsync over rsync (873, rsyncd) and rsync over ssh, see https://serverfault.com/questions/827633/confused-about-rsync-port-873-and-nas
we use rsync over ssh mode here.

# openwrt (192.168.2.47, 192.168.99.1)
opkg install rsync

# nas (192.168.2.103) push data into openwrt(192.168.2.47)
# don't use rsync
cd /share/HDA_DATA/Public/test && touch test1 && touch test2 && touch test3
ssh root@192.168.2.47 "tee -a /etc/dropbear/authorized_keys" < ~/.ssh/id_rsa.pub
rsync -avztur --progress --delete --exclude 'test/test1' --exclude 'test/test2' /share/HDA_DATA/Public/test root@192.168.2.47:/mnt/sdb1/
rsync -avztur --progress --delete --exclude 'test1' --exclude 'test2' /share/HDA_DATA/Public/test/ root@192.168.2.47:/mnt/sdb1/
rsync -avztur --progress --delete --exclude 'windisk' --exclude 'media' /share/HDA_DATA/Public/ root@192.168.2.47:/mnt/sdb1/
contab -e
0 1 * * * /usr/bin/rsync -avztur --progress --delete --exclude 'windisk' --exclude 'media' /share/HDA_DATA/Public/ root@192.168.2.47:/mnt/sdb1/

或者在openwrt端做:

mkdir ~/.ssh
dropbearkey -t rsa -f ~/.ssh/id_rsa
dropbearkey -y -f ~/.ssh/id_rsa |sed -n 2p > ~/.ssh/id_rsa.pub
# https://community.onion.io/topic/2538/resolved-ssh-from-omega-to-linux-server-without-password/9
ln -s ~/.ssh/id_rsa ~/.ssh/id_dropbear
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys && chmod 644 ~/.ssh/authorized_keys
ssh admin@192.168.2.103 "tee -a /root/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub
/usr/bin/rsync -avztur --progress --delete --exclude 'windisk' --exclude 'media' admin@192.168.2.103:/share/HDA_DATA/Public/ /mnt/sdb1/

但这无论从nas还是从openwrt运行rsync都由于nas太慢大概只有4M左右,可能提升速度最好的办法是先将nas通过nfs映射到openwrt然后再拷.这样速度能达到30M

opkg install nfs-utils
showmount -e 192.168.2.103
/usr/bin/mount -t nfs 192.168.2.103:Public /mnt/nas -o proto=tcp -o nolock -o vers=4
/usr/bin/rsync -avztur --progress --delete --exclude 'windisk' --exclude 'media' /mnt/nas/ /mnt/sdc1/
但是我担心将mount放到fstab时当nas有问题时也影响openwrt的启动,所以我将上面命令放在rc.local中.
root@OpenWrt:~# cat /etc/init.d/done 
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=95
boot() {
	mount_root done
	rm -f /sysupgrade.tgz && sync

	# process user commands
	[ -f /etc/rc.local ] && {
		sh /etc/rc.local
	}

	# set leds to normal state
	. /etc/diag.sh
	set_state done
}
并且crontab也在openwrt这边做.这样速度达到了30M
root@OpenWrt:~# crontab -l |grep rsync
0 1 * * * /usr/bin/rsync -avztur --progress --delete --exclude 'windisk' --exclude 'media' /mnt/nas/ /mnt/sdc1/ >>/tmp/rsync.log 2>&1
这个调试 - tail -f /tmp/rsync.log

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

quqi99

你的鼓励就是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值