linux系统rsync文件传输
最近在维护一个用户,想要做一个离线备份,备份主要针对oracle数据库rman备份文件及expdp导出文件。考虑过直接将文件备份到目标服务器,rman备份不借助第三方软件实现不了,以前常用的方法使用ftp进行传输,ftp也比较方便,但是近几年针对ftp端口及弱口令的安全问题查的比较严,所以最终还是选择了rsync来作为文件传输工具。数据源服务器和目标服务器均为centos7.9系统,安装系统的时候都自带了rsync软件,可以直接配置使用。
目标库rsync配置文件
[root@offlinebak file]# cat /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode# See rsyncd.conf man page for more options.# configuration example:
uid = rsync
gid = rsync
fake super = yes
use chroot = no
max connections = 20
pid file = /var/run/rsyncd.pid
exclude = lost+found/
transfer logging = yes
timeout = 900
# ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = rsync_backup
secrets file = /etc/rsyncd.scrt
read only = no[backup]
path = /offlinebak
comment = ftp export area
目标端密码文件
[root@offlinebak file]# cat /etc/rsyncd.scrt
rsync_backup:neubla123
源端密码文件
[root@hisdg backup]# cat /etc/rsyncd.scrt
neubla123
注意:源端和目标端密码文件创建完都要给chmod 600 /etc/rsyncd.scrt权限
传输rman备份的rsync脚本及定时任务
[root@hisdg backup]# /usr/bin/rsync -avzP --delete --log-file=/backup/rsync_$(date +%Y%m%d_%H%M%S).log /backup/file rsync_backup@128.39.28.122::backup --password-file=/etc/rsyncd.scrt[root@hisdg backup]# crontab -l
0 22 * * * /usr/bin/rsync -avzP --delete --log-file=/backup/rsync_$(date +\%Y\%m\%d_\%H\%M\%S).log /backup/file rsync_backup@128.39.28.122::backup --password-file=/etc/rsyncd.scrt注意:直接写进定时任务的命令中的%要进行\转义。
传输exp导出文件的rsync脚本及定时任务
[root@hisdb backup]# /usr/bin/rsync -avzP --delete --log-file=/backup/rsync_$(date +%Y%m%d_%H%M%S).log /backup/dir_dp rsync_backup@128.39.28.122::backup --password-file=/etc/rsyncd.scrt[root@hisdb backup]# crontab -l
0 22 * * * /usr/bin/rsync -avzP --delete --log-file=/backup/rsync_$(date +\%Y\%m\%d_\%H\%M\%S).log /backup/dir_dp rsync_backup@128.39.28.122::backup --password-file=/etc/rsyncd.scrt
加–delete可以使目标端文件的数量和源端文件数量保持一致,比如说rman,我在源端制定了删除策略只保留一天的,文件传完后,目标端的文件也会删除,这样就不用另外配置文件删除策略了。
