Linux服务器同步Windows目录同步-rsync

news2024/10/6 22:29:56

前言

最近需要,Linux的服务器同步Windows的一个目录。查了下,大概有三种方法:网盘同步;rsync同步;挂载目录。

网盘同步,可以选择搭建一个Nextcloud 。但是问题在于,我需要的是,客户端和服务端的同步,而不是客户端和客户端的同步。服务端没有界面,安装客户端的网盘软件可能不太好使。所以没有选择这种方法。

rsync同步。这种方法,需要存储两份文件。本地存储一份,然后同步到服务端。

samba挂在目录。像在本地一样操作服务端目录里面的内容,数据也只需要存储一份。


samba挂载目录

我首先尝试的是挂载服务端的目录。但是,效果不好,因为网络延迟比较严重,操作挂载目录里面的文件有点难受。

# ubuntu中安装samba服务
sudo apt install samba

我没去看官方的文档,因为好长。我网上翻了翻博客,看了下samba配置中的注释,基本可以搞定个人使用的samba配置。

首先,需要修改samba的配置文件 /etc/samba/smb.conf

# 这里只列出需要修改的部分
## 更多的参数查询:https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html

# 每个用户的家目录设置位共享目录,可以通过\\server\username访问
[homes]
   comment = Home Directories # 共享目录的描述
   browseable = no # \\server 看不到这个目录;知道username的人,可以通过\\server\username尝试连接 https://unix.stackexchange.com/questions/377516/what-does-browseable-in-samba-configuration-mean
   read only = yes # home目录只读
   create mask = 0700 # 创建文件的默认权限
   directory mask = 0700 # 创建目录的默认权限
   ;   valid users = %S # 默认任何人都可以连接,每个人使用自己的用户名和密码验证。这里可以限制只有允许的人可以访问
[music]
   comment = navidrome music
   valid users = root # 只用root用户可以访问这个共享目录
   force user = root
   force group = root
   ; public = yes # 不用验证直接访问
   path = /root/navidrome/music # 共享路径
   browseable = yes # 每个人都能看到存在此共享目录
   read only = no
   available = yes # 这个共享目录可以使用
   create mask = 0755
   directory mask = 0755
# smb添加用户
smbpasswd -a root

# 重启服务
systemctl restart smdb.service

需要注意的是,需要设置下root密码,否则samba无法访问这个music共享目录。passw root即可。如果遇到设置的密码太简单,无法设置成功,可以关闭这个验证,见:linux - Enable simple password for root user on CentOS - Super User

windows访问linux共享目录,可以参考:Win10访问Ubuntu的samba共享文件

在这里插入图片描述


rsync同步

Linux作为服务端rsync的安装和配置

配置之前,可以看下/etc/default/rsync,这个配置用不到,因为它是for init.d。我们使用systemctl管理rsync服务。

我们先创建一份配置文件:cp /usr/share/doc/rsync/examples/rsyncd.conf /etc。之后systemctl status rsyncsystemctl start rsync启动服务了。但是默认的配置需要修改。安全起见,总得设置,哪个用户可以同步哪个目录。没有看到很好的中文介绍,所以只能看官方文档。所幸,官方文档只有一长页:Ubuntu Manpage: rsyncd.conf - configuration file for rsync in daemon mode

下面是我的一个配置,我简单注释下。

root@vultr:~/navidrome/music# cat /etc/rsyncd.conf 
# sample rsyncd.conf configuration file

# 这部分是全局设置,对下面所有模块都有效,是所有模块共有。
# 每个模块,指用方括号括起来的部分
# 这个配置中只有一个模块,music模块

# 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.
# The init.d script does its own pid file handling,
# so omit the "pid file" line completely in that case.
# pid file=/var/run/rsyncd.pid
#syslog facility=daemon
#socket options=

# MODULE OPTIONS

[music]
	comment = navidrome music
	path = /root/navidrome # 指定这个模块可以操作的目录
	use chroot = no # 不要使用chroot. docker的原理之一是用来chroot
#	max connections=10
	lock file = /var/lock/rsyncd
# the default for read only is yes...
	read only = no # 允许上传
	list = yes
	uid = %RSYNC_USER_NAME% # 文件传输者的uid,不清楚干啥的
	gid = *
#	exclude = 
#	exclude from = 
#	include =
#	include from =
#	auth users = 
#	secrets file = /etc/rsyncd.secrets
	strict modes = yes
#	hosts allow =
#	hosts deny =
	ignore errors = no
	ignore nonreadable = yes
	transfer logging = no
#	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

这里有个示例,也可以看下:Linux系统Rsync服务及配置


windows作为客户端rsync的安装和配置

首先需要在windows上安装rsync。我尝试了下,winget中没有rsync。

winget.exe search rsync
名称   ID            版本   匹配       源
Rclone Rclone.Rclone 1.62.2 Tag: rsync winget

# https://github.com/rclone/rclone/
winget.exe install Rclone.Rclone
winget.exe uninstall Rclone.Rclone

网上查了下,windows使用cwRsync Client。而关于rsync命令的使用,可以参考 rsync 用法教程 - 阮一峰的网络日志。

# 本地与服务端同步
rsync.exe -av local_src_dir/ user_name@your_server:/server_dst_dir

有个比较坑的是,会如下错误:

rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.2]
rsync: [Receiver] safe_read failed to read 4 bytes: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(283) [Receiver=3.2.2]

参考这个Why is this rsync connection unexpectedly closed on Windows?。在使用cwRsync的时候,要用-e参数,指定cwRsync目录下的ssh.exe而不是系统的ssh.exe

后面觉得保存这个命令的用法有点麻烦,写个脚本即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/692427.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

react context上下文与vue中 provide inject的用法区别

一、react中: 数据传递 1、引入createContext import { createContext } from "react"; 2、创建并导出 export const FspThemeContext createContext({}); 3、传递数据(value项不能缺少!!) ①不解构…

微流控芯片压力和流量的超高精度串级控制解决方案

摘要:针对微流控芯片压力驱动进样系统中压力和流量的高精度控制,本文提出了国产化替代解决方案。解决方案采用了积木式结构,便于快速搭建起气压驱动进样系统。解决方案的核心是采用了串级控制模式,结合高精度的传感器、电气比例阀…

JMeter如何进行多服务器远程测试

JMeter是Apache软件基金会的开源项目,主要来做功能和性能测试,用Java编写。 我们一般都会用JMeter在本地进行测试,但是受到单个电脑的性能影响,往往达不到性能测试的要求,无法有效的模拟高并发的场景,那么…

云计算服务模式、PaaS、SaaS都是啥?

什么是云计算服务模式 云计算服务模式是指云服务提供商提供的不同类型的云计算服务,包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)等。这些服务可以帮助企业在云端进行资源共…

Mysql找出执行慢的SQL【慢查询日志使用与分析】

分析慢SQL的步骤 慢查询的开启并捕获:开启慢查询日志,设置阈值,比如超过5秒钟的就是慢SQL,至少跑1天,看看生产的慢SQL情况,并将它抓取出来explain 慢SQL分析show Profile。(比explain还要详细…

WideResNet(宽残差网络)算法解析-鸟类识别分类-Paddle实战

文章目录 一、理论基础1.前言2.设计理念2.1 ResNet算法2.1.1 residual(残差结构)模块2.1.2 residual的计算方式2.1.3 ResNet中两种不同的residual2.1.4 Batch Normalization(批归一化) 2.2 WideResNet(WRNs)算法2.2.1 宽残差块2.2…

vue2项目引入vant组件库

Vant官网 Vant 2 - Mobile UI Components built on Vue

【零基础入门学习Python---Python数据处理和存储保姆级教程】

🚀 Python 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

记一次Tomcat控制台弱口令爆破事件应急响应

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 事件背景介绍02 流量分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中,安全部门在安全设备上观察到大量Tomcat控制台登录请求,现需根据流量情况进…

多线程的CAS(Compare and Swap)机制与乐观锁、AtomicInteger等原子包装类的使用

一.乐观锁 与 CAS机制 在java的多线程并发过程中: ​ 1.当一个对象在多个内存中都存在副本时,如果一个线程在自己的工作内存修改了共享变量,其它线程也应该能够看到被修改后的值。常常用volatile关键字来保证多线程数据的可见性。 ​…

Nginx Rewrite 重写跳转

文章目录 一.Nginx Rewrite概述1.Rewrite跳转场景2.Rewrite跳转场景3.Rewrite跳转实现4.Rewrite实际场景4.1Nginx跳转需求的实现方式4.2 rewrite放在 server{},if{},location{} 段中4.3对域名或参数字符串 5.nginx正则表达式5.1 常用的正则表达式元字符 …

Jmeter(jmeter-plugins插件的安装使用)

目录 一、安装JMter Plugins 二、Custom Thread Groups插件 Stepping Thread Group 元件 Ultimate Thread Group 一、安装JMter Plugins 1、官网下载 JMeter Plugins 的jar包 2. 将下载的jar包复制到 %JMETER_HOME%\lib\ext 目录下 3. 启动 JMeter --> Options -->…

学习系统编程No.26【信号处理实战】

引言: 北京时间:2023/6/26/13:35,昨天12点左右睡觉,本以为能和在学校一样,7点左右起床,设置了7点到8点30时间段内的4个闹钟,可惜没想到啊,没醒,直接睡到了12点&#xff…

rust基本语法

文章目录 变量与可变性变量与常量Shadowing(隐藏)数据类型标量类型1.整数类型2.浮点类型3.布尔类型4.字符类型 复合类型1.Tuple2.数组 函数if表达式循环1.loop2.while3.for 变量与可变性 声明变量使用let关键字,默认情况下,变量是…

kafka初学入门

kafka概述 消息中间件对比 特性ActiveMQRabbitMQRocketMQKafka开发语言javaerlangjavascala单机吞吐量万级万级10万级100万级时效性msusmsms级以内可用性高(主从)高(主从)非常高(分布式)非常高&#xff0…

大模型显存占用分析

大模型显存占用由以下几部分组成: 1. 模型本身参数,假设是1个单位 2.模型的梯度,同样也是一个单位 3.优化器参数(占大头):以Adam参数为例,还需要在显卡中额外存储m和v两个参数,因…

File学习

1.构造方法 1.File(String pathname) 根据路径名创建抽象File对象 //1. 通过路径进行创建 pathname是字符串格式的路径名public File(String pathname) {if (pathname null) {throw new NullPointerException();}// 和系统交互 获取最近的File文件目录文件this.path fs.nor…

10分钟快速入门UI自动化-Puppeteer

目录 先简单介绍一下: 工欲善其事必先利其器,首先把所需要的工具装好 1. 安装node 2. 安装npm (node安装时会自动安装npm,如果已安装node,此步请忽略) 3. 安装cnpm (npm下载包失败,选择cnpm安装) 4. 新建一个nod…

【ICer必备 4】IC封装设计流程

【ICer必备 3】模拟IC设计全流程 ------------------------------------------------文末附往期文章链接--------------------------------------前言一、IC封装设计过程二、常见IC封装类型三、常见封装特点四、封装设计常用软件五、EM仿真常用EDA(1)HFS…

apt命令概述,apt命令在Ubuntu16.04安装openjdk-7-jdk

apt是一条linux命令,适用于deb包管理式操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。deb包是Debian 软件包格式的文件扩展名。 翻译过来就是: apt是一个命令行包管理器,为 搜索和管理以及查询…