java中的接口是类吗
2057
2022-10-31
Ubuntu 22.04 下安装配置 rsync 及crontab计划任务 定时同步rsync命令脚本设置
拓扑
默认已经安装
如果没有安装执行下面命令安装
sudo apt install rsync
一、服务器端设置
1.ubuntu 22.04默认已安装rsync,rsync服务默认不是启动的,我们要修改下面的文件。
sudo vim /etc/default/rsync如下:RSYNC_ENABLE 改为trueRSYNC_ENABLE=true
2.复制一份默认配置文件 到/etc下
sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc
3.查看一下配置文件内容(下面是配置文件的解释 不需要操作 直接去4)
sudo cat /etc/rsyncd.conf解释如下# 最大连接数max connections = 10# pid文件的存放位置pidfile = /var/run/rsyncd.pid# 支持max connections参数的锁文件lock file = /var/lock/rsyncd.lock# rsync启动时欢迎信息页面文件位置(文件内容自定义),非必须# motd file = /etc/rsyncd.motd# 用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件。这个文件也可以不要,但是安全性上可能会有些问题。secrets file = /etc/rsyncd.secrets# 日志文件位置,启动rsync后自动产生这个文件,无需提前创建log file = /var/log/rsync.log# 记录传输文件日志transfer logging = yes# 日志文件格式log format = %t %a %m %f %b# 剔除某些文件或目录,不同步# exclude = lost+found/# 超时时间timeout = 300# 某些情况下避免中文乱码# charset = GB18030# 默认为yes,修改为no时增加对目录文件软连接的备份,允许 chroot,提升安全性,客户端连接模块,首先 chroot 到模块 path 参数指定的目录下,chroot 为 yes 时必须使用 root 权限,且不能备份 path 路径外的链接文件use chroot = yes# 设置不需要压缩的文件dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2# 设置rsync运行权限为rootuid = root# 设置rsync运行权限为rootgid = root# 模块名[docker] # 注释comment = Mini Docker# rsync服务端数据目录路径path = /home/docker# 白名单,允许的主机列表hosts allow = 10.6.6.0/24# 黑名单,禁止的主机列表hosts deny = *# 设置rsync服务端文件是否只读read only = no# 是否显示rsync服务端资源列表list = yes# 模块验证的用户名称,可使用空格或者逗号隔开多个用户名,必须和 rsyncd.secrets中的用户名对应auth users = sworld# 忽略错误# ignore errors
sudo cat /etc/rsyncd.conf解释如下# sample rsyncd.conf configuration file# GLOBAL OPTIONS#motd file=/etc/motd #登录欢迎信息#log file=/var/log/rsyncd #日志文件# for pid file, do not use /var/run/rsync.pid if# you are going to run rsync out of the init.d script.pid file=/var/run/rsyncd.pid#指定rsync发送日志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默认值是daemon。#syslog facility=daemon#自定义tcp选项,默认是关闭的#socket optinotallow=#以下是模块信息,我们可以创建多个模块# MODULE OPTIONS[ftp] comment = public archive #模块描述 path = /var/#需要同步的路径 use chroot = yes #默认是yes|true,如果为true,那么在rsync在传输文件以前首先chroot到path参数指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要root权限,并且不能备份指向外部的符号连接指向的目录文件。# max cnotallow=10 #最大连接数 lock file = /var/lock/rsyncd #指定支持max connections参数的锁文件。# the default for read only is yes... read only = yes #只读选项 list = yes #客户请求时可用模块时是否列出该模块 uid = nobody #设定该模块传输文件时守护进程应该具有的uid gid = nogroup #设定该模块传输文件时守护进程应具有的gid,此项与uid配合可以确定文件的访问权限# exclude = #用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用"-"和"+"来指定是exclude还是include #这个我的理解是排除目录中不需同步的文件# exclude from = #可以指定一个包含exclude模式定义的文件名# include = #与exclude相似# include from = #可以指定一个包含include模式定义的文件名# auth users = #该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的 challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)# secrets file = /etc/rsyncd.secrets #该文件每行包含一个username:password对,以明文方式存储,只有在auth users被定义时,此选项才生效。同时我们需要将此文件权限设置为0600 strict modes = yes #该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true# hosts allow = #允许的主机# hosts deny = #拒绝访问的主机 ignore errors = no #设定rsync服务器在运行delete操作时是否忽略I/O错误 ignore nonreadable = yes #设定rysnc服务器忽略那些没有访问文件权限的用户 transfer logging = no #使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. #设定日志格式 timeout = 600 #超时设置(秒) refuse options = checksum dry-run #定义一些不允许客户对该模块使用的命令选项列表 dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz #告诉rysnc那些文件在传输前不用压缩,默认已设定压缩包不再进行压缩
4.创建自己的配置文件
1.备份一份原文件sudo cp /etc/rsyncd.conf /etc/rsyncd.conf.bak2.修改配置文件sudo vi /etc/rsyncd.conf如下 提示一下:# GLOBAL OPTIONS下面为全局配置 # MODULE OPTIONS 下面是模块配置
# 最大连接数max connections = 10# pid文件的存放位置pidfile = /var/run/rsyncd.pid# 支持max connections参数的锁文件lock file = /var/lock/rsyncd.lock# rsync启动时欢迎信息页面文件位置(文件内容自定义),非必须# motd file = /etc/rsyncd.motd# 用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件。这个文件也可以不要,但是安全性上可能会有些问题。secrets file = /etc/rsyncd.secrets# 日志文件位置,启动rsync后自动产生这个文件,无需提前创建log file = /var/log/rsync.log# 记录传输文件日志transfer logging = yes# 日志文件格式log format = %t %a %m %f %b# 剔除某些文件或目录,不同步# exclude = lost+found/# 超时时间timeout = 300# 某些情况下避免中文乱码# charset = GB18030# 默认为yes,修改为no时增加对目录文件软连接的备份,允许 chroot,提升安全性,客户端连接模块,首先 chroot 到模块 path 参数指定的目录下,chroot 为 yes 时必须使用 root 权限,且不能备份 path 路径外的链接文件use chroot = yes# 设置不需要压缩的文件dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2# 设置rsync运行权限为rootuid = root# 设置rsync运行权限为rootgid = root# 模块名[myback] # 注释comment = Mini Docker# rsync服务端数据目录路径path = /home/myback# 白名单,允许的主机列表hosts allow = 10.10.201.0/24# 黑名单,禁止的主机列表hosts deny = *# 设置rsync服务端文件是否只读read only = no# 是否显示rsync服务端资源列表list = yes# 模块验证的用户名称,可使用空格或者逗号隔开多个用户名,必须和 rsyncd.secrets中的用户名对应auth users = zhangsan# 忽略错误# ignore errors
5.创建虚拟用户密码文件
sudo vim /etc/rsyncd.secrets如下 一行一个 用户名:密码zhangsan:123
给虚拟用户密码文件授权(600)重要
sudo chmod 600 /etc/rsyncd.secrets
启动服务 及 查看rsync运行端口
1.启动rsync服务systemctl start rsync.service2.添加开机启动rsyncsudo systemctl enable rsync3.查看端口netstat -anplt | grep 873或者netstat -anop | grep 873
8.建立服务器端 同步的目录(和配置文件的目录一致)
sudo mkdir /home/myback
二、客户端端设置
1.客户端安装rsync (默认已安装)
sudo apt install rsync
2.客户端设置一个密码文件(设置后同步文件将不需要输入密码)
1.编辑密码文件sudo vim /etc/rsyncd-client.secrets内容如下(上面服务器端 rsyncd.secrets 文件中 设置的zhangsan的密码)1232.更改权限为600sudo chmod 600 /etc/rsyncd-client.secrets
3.客户端使用命令 同步文件
(客户端-TO-服务器端) 推送方式1 (客户端向服务器端 推送)
rsync -avzP /home/xiazai/ zhangsan@10.10.201.174::myback --password-file=/etc/rsyncd-client.secrets
(客户端-TO-服务器端) 推送方式2 (客户端向服务器端 推送)
注意:--delete 参数
如下 :有--delete 这个参数 客户端的目录中文件和服务器端的目录中文件 完全一致 如果客户端目录中没有的文件 如果服务器端有 就会被删除 (一定注意 --delete 参数慎用)
rsync -avzP --delete /home/xiazai/ zhangsan@10.10.201.174::myback --password-file=/etc/rsyncd-client.secrets
(客户端-TO-服务器端) 拉取方式1 (客户端向服务器端 拉取)
rsync -avzP zhangsan@10.10.201.174::myback /home/ceshi/ --password-file=/etc/rsyncd-client.secrets
(客户端-TO-服务器端) 拉取方式2 (客户端向服务器端 拉取)
如下 :有--delete 这个参数 客户端的目录中文件和服务器端的目录中文件 完全一致 如果客户端目录中没有的文件 如果服务器端有 就会被删除 (一定注意 --delete 参数慎用)
rsync -avzP --delete zhangsan@10.10.201.174::myback /home/ceshi/ --password-file=/etc/rsyncd-client.secrets
三、crontab 定时同步 计划任务
1、crontab 相关的命令:
安装:apt-get install cron启动:service cron start重启:service cron restart停止:service cron stop检查状态:service cron status查询cron可用的命令:service cron检查Cronta工具是否安装:crontab -l查看日志tail -f /var/log/cron
2.打开cron的记录日志功能
1.编辑默认日志文件sudo vi /etc/rsyslog.d/50-default.conf将下面行注释去掉,保存cron.* /var/log/cron.log2.重启动服务sudo service rsyslog restart
3.配置rsync.sh执行文件
sudo vim /home/rsync.sh内容如下#!/bin/bashrsync -avzP /home/xizai/ zhangsan@10.10.201.174::myback --password-file=/etc/rsyncd-client.secrets
4.给rsync.sh文件执行权限
chmod +x /home/rsync.sh
编辑计划任务crontab
crontab -e内容如下 例如:每分钟运行一次(2选一)*/1 * * * * /bin/sh /home/rsync.sh59 23 * * * /bin/sh /home/rsync.sh 例如:每天23点59执行命令
rsync命令的一些参数解释
-v 详细输出 -a 归档模式,表示以递归方式传输文件,并保持所有文件属性,如果文件属性变了,认为是不同文件 -u 选项忽略重复的数据此外,rsync默认拷贝软连接,这一点和scp是不同的,scp会拷贝软链接。而rsync如果想同步软连接的话需要指定-l参数。-v, --verbose 详细模式输出。-q, --quiet 精简输出模式。-c, --checksum 打开校验开关,强制对文件传输进行校验。-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。-r, --recursive 对子目录以递归模式处理。-R, --relative 使用相对路径信息。-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。--backup-dir 将备份文件(如~filename)存放在在目录下。-suffix=SUFFIX 定义备份文件前缀。-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。-l, --links 保留软链结。-L, --copy-links 想对待常规文件一样处理软链结。--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。--safe-links 忽略指向SRC路径目录树以外的链结。-H, --hard-links 保留硬链结。-p, --perms 保持文件权限。-o, --owner 保持文件属主信息。-g, --group 保持文件属组信息。-D, --devices 保持设备文件信息。-t, --times 保持文件时间信息。-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。-n, --dry-run现实哪些文件将被传输。-w, --whole-file 拷贝文件,不进行增量检测。-x, --one-file-system 不要跨越文件系统边界。-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。-e, --rsh=command 指定使用rsh、ssh方式进行数据同步。--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。--delete 删除那些DST中SRC没有的文件。--delete-excluded 同样删除接收端那些被该选项指定排除的文件。--delete-after 传输结束以后再删除。--ignore-errors 及时出现IO错误也进行删除。--max-delete=NUM 最多删除NUM个文件。--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。--force 强制删除目录,即使不为空。--numeric-ids 不将数字的用户和组id匹配为用户名和组名。--timeout=time ip超时时间,单位为秒。-I, --ignore-times 不跳过那些有同样的时间和长度的文件。--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。-T --temp-dir=DIR 在DIR中创建临时文件。--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。-P 等同于 --partial。--progress 显示备份过程。-z, --compress 对备份的文件在传输时进行压缩处理。--exclude=PATTERN 指定排除不需要传输的文件模式。--include=PATTERN 指定不排除而需要传输的文件模式。--exclude-from=FILE 排除FILE中指定模式的文件。--include-from=FILE 不排除FILE指定模式匹配的文件。--version 打印版本信息。--address 绑定到特定的地址。--cnotallow=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。--port=PORT 指定其他的rsync服务端口。--blocking-io 对远程shell使用阻塞IO。-stats 给出某些文件的传输状态。--progress 在传输时现实传输过程。--log-format=formAT 指定日志文件格式。--password-file=FILE 从FILE中得到密码。--bwlimit=KBPS 限制I/O带宽,KBytes per second。-h, --help 显示帮助信息。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~