起因:家中NAS大升级,网络更换为了千兆光纤,硬件升级为了J6412,硬盘更改为了512GSSD+4TB机械硬盘。尽管公司有备份的服务器,但还是担心万一损失,因此做个远程备份。
0. rsync的命令行讲解
rsync -avzP 源文件夹 目标文件夹
要将raync玩出花样,重点就在于如何设置 源文件夹 和 目标文件夹。这两个项目,只能有一个是远程目标。
也就是,要在本地服务器,将本地文件夹备份到远程服务器,则配置 “目标文件夹”的主机名和登录密钥,端口,文件夹路径就可以了。
如果,要在本地主机,将远程服务器的文件夹拉取-备份到本地,则需要配置“源文件夹”的主机名和登录密钥,端口,文件夹路径就可以了。
针对 源文件夹/目标文件夹 的设定参数包括:
-e "ssh -i /home/key -p 44322" 指定通过私有key和指定的端口44322登录ssh连接主机
--exclude=no.back 在备份过程中,排除指定的文件夹和文件。这里是相对路径,也就是要备份的文件夹内的文件夹和文件的路径, 不是绝对路径。也可写成 --exclude 'no.back'
--port=998 指定rsync使用哪个端口来进行传输
username@server.ip:/home/disk1/backfiles 指定远程服务器的账户、地址,和文件夹路径
1. frp服务器的搭建和配置请搜索我的其他文章,这里仅涉及SSH和Rsync相关的部分
- #此配置为家中NAS服务器的 /etc/frp/frpc.ini
- [ssh-8]
- type = tcp
- local_ip = 127.0.0.1
- local_port = 33191
- remote_port = 33191
-
- #Rsync 要用到873接口
- [rsync]
- type= tcp
- local_ip=192.168.1.191
- localpart=873
- remote_port=873
可以看到,我的frps 服务器,已经连接到第8个 ssh服务了,就这,每个月300G的流量还是用不完。
2. rsync备份本地到远程服务器的命令
- # 这个命令是在公司的NAS服务器上发出的,功能是将/home/bakfiles这个文件夹,备份到家中的NAS服务器的4TB硬盘中的Backups文件夹内
- rsync -avzP /home/bakfiles -e "ssh -i /home/key -p 33191" root@www.myfrp-name.com:/home/4TB/Backups/
注意,其中的 【 -e "ssh -i /home/key -p 33191"】是为了通过frp登录家中NAS的
2.2 在家中NAS服务器上,将公司资料拉取到本地
rsync -avzP -e "ssh -i /home/key -p 33171" root@www.myfrp-name.com:/home/bakfiles /home/4TB/Backups/
注:公司服务器的ssh采用的是33171端口。
3.在第三方系统上,远程登录NAS1服务器,将内容备份到NSA2服务器
rsync -avzP -e "ssh -i /home/keys/key -p 33171" root@www.myfrp-name.com:/home/bakfiles -e "ssh -i /home/keys/key -p 33191" root@www.myfrp-name.com:/home/4TB/Backups/
注意,备份失败,提示是“源和目标不能都是远程的”
4. 断点续传和速度限制
- ## 限速1000KB/s
- rsync -avzP --bwlimit=1000 /home/Sources/ -e "ssh -i /home/keys/key -p 33171" root@www.myfrp-name.com:/home/bakfiles/
5. 从备份目录还原到源目录
- rsync -auvzP /home/back /home/source
- ## u 表示只还原最新的文件,如果source中的同名文件在备份后有修改,则还原回来时不会替换掉;如果如果source中的同名文件在备份后被删除,则还原后会出现该删除掉的文件