Remote Synchronize简称rsync,这是一款可以远程同步文件的软件,同步过程采用rsync加密算法保证了文件安全,并且同步的文件可保持原文件的属性(比如权限、时间等)不变。
服务器A:配置为rsync服务器(假设IP为192.168.61.130)
#安装rsync软件
[root@localhost ~]# yum install rsync
#安装xinetd
[root@localhost ~]# yum yum install xinetd
#配置xinetd、rsync开机自启动
[root@localhost ~]# chkconfig xinetd on
[root@localhost ~]# chkconfig rsync on
#手工创建rsync的配置文件/etc/rsyncd.conf
[root@localhost ~]# cat /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 10
strict mode = yes
port = 873
[backup]
path = /root
comment = Root Dir
ignore errors
read only = yes
list = no
auth users = john
secret file = /etc/rsync.sec
#配置密码文件/etc/rsync.sec并授予600权限
[root@localhost ~]# cat /etc/rsync.sec
john:wang001
[root@localhost ~]# chmod 600 /etc/rsync.sec
#重启xinetd以激活rsync
[root@localhost ~]# service xinetd restart
#确认rsync已经运行
[root@localhost ~]# netstat-a | grep rsync
tcp 0 0 *:rsync *:* LISTEN
服务器B:配置为rsync客户端(假设IP为192.168.61.131)
#安装rsync软件
[root@localhost ~]# yum install rsync
#配置rsync客户端密码文件并授予600权限
[root@localhost ~]# cat /etc/rsync.sec
wang001
[root@localhost ~]# chmod 600 /etc/rsync.sec
#创建目录/root/rsync_dir,用于同步服务器A[backup]模块中的文件
[root@localhost ~]# mkdir rsync_dir
#测试同步,把服务器A /root目录中的全部文件同步到本地/root/rsync_dir目录
[root@localhost ~]# rsync -vzrtopg --progress --delete john@192.168.61.130::backup /root/rsync_dir --password-file=/etc/rsync.sec
命令说明:从远程机器的backup目录备份到本地/root/rsync_dir,以rsync协议登录认证,以远程机器文件为主删除本地多余的文件。备份传输采用压缩,递归各个目录,保持文件的时间属性,属主,权限和用户组。
rsync 命令的基本格式有多种,分别是:
# 仅在本地备份
# rsync [OPTION] SRC DEST
# 本地数据备份到远程机器,登录认证使用ssh协议(push)
# rsync [OPTION] SRC [USER@]HOST:DEST
# 本地数据备份到远程机器,登录认证使用rsync协议(push)
# rsync [OPTION] SRC [USER@]HOST::DEST
# 远程机器的数据备份到本地机器,登录认证使用ssh协议(pull)
# rsync [OPTION] [USER@]HOST:SRC DEST
# 远程机器的数据备份到本地机器,登录认证使用rsync协议(pull)
# rsync [OPTION] [USER@]HOST::SRC DEST
其中,SRC:用来表示要备份的目标数据所在的位置(路径);DEST:用于表示将数据备份到什么位置。
ssh 协议和 rsync协议的区别在于,rsync 协议在使用时需要额外配置,增加了工作量,但优势是更加安全;反之,ssh 协议使用方便,无需进行配置,但有泄漏服务器密码的风险。
-v:显示输出过程
-z:压缩
-a:多参数集合 (-rtopgDl)
-r:递归
-t:保存修改时间属性
-o:保持属主不变
-p:保持权限不变
-g:保持用户组不变
-l:保持拷贝软连接
-q:安静的拷贝
--delete:删除DEST中SRC没有的文件
--exclude:排除
-P:等同于 --partial 断点续传
--bwlimit=KBPS:限速IO带宽,单位kb/s
※企业常用参数组合:
-avz 或者 -vzrtopg
脚步化实现
最后脚本化以上rsync过程,增加服务器是否存活的判断,并增加日志使rsync过程更加清晰,这样便于在运行出错时排查问题。
#!/bin/bash
RSYNC_SERVER=192.168.61.130
RSYNC_USER=john
RSYNC_MODULE=backup
RSYNC_PASS=/etc/rsync.sec
RSYNC_LOG=/var/run/rsync.log
LOCAL_DIR=/root/rsync_dir
RSYNC=/usr/bin/rsync
PING=/bin/ping
run_rsync() {
echo "Starting Rsync at `date`" | tee-a $RSYNC_LOG
$RSYNC -vzrtopg --progress --delete $RSYNC_USER@$RSYNC_SERVER::$RSYNC_MODULE $LOCAL_DIR --password-file=$RSYNC_PASS
echo "Rsync Finished at `date`" | tee-a $RSYNC_LOG
}
test_alive() {
$PING $RSYNC_SERVER -c 3-w 3
if [ $?-ne 0 ]; then
echo "Server down at `date`" >> $RSYNC_LOG
exit 1
fi
}
test_alive > /dev/null 2>&1
run_rsync
部分内容来自王军老师的《Linux系统命令及Shell脚本实践指南》
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
我写了一个非常简单的rake任务来尝试找到这个问题的根源。namespace:foodotaskbar::environmentdoputs'RUNNING'endend当在控制台中执行rakefoo:bar时,输出为:RUNNINGRUNNING当我执行任何rake任务时会发生这种情况。有没有人遇到过这样的事情?编辑上面的rake任务就是写在那个.rake文件中的所有内容。这是当前正在使用的Rakefile。requireFile.expand_path('../config/application',__FILE__)OurApp::Application.load_tasks这里