文件进行周期性备份后权限更改的解决方案--使用脚本和定时任务

这里写目录标题

  • 背景现象
  • 解决方案
    • 原因分析
    • 面临的问题
    • 解决思路
    • 操作步骤
      • 每个文件夹权限分配表
      • 测试chmod和chown两个命令是否可行
      • 写脚本实现定时同步
      • 同时修改权限
    • 异地同步改权限
      • 在NAS上生成SSH密钥对
      • 将NAS的公钥复制到Linux服务器
      • 在NAS上编写同步脚本
      • 在NAS上执行脚本,保存脚本
      • 确保它有执行权限
      • 使用 cron 进行定期备份

背景现象

使用 rsync 从一台 Linux 服务器备份文件到 NAS(网络附加存储)时,备份过来的文件的所有者和组都变成了 ,而且权限也改了。在这里插入图片描述
权限与之前不一致,和源服务器的权限一样了
在这里插入图片描述Linux上的权限
在这里插入图片描述
用户也更改了,大部分都变成了root
在这里插入图片描述

解决方案

原因分析

1、rsync 命令以 root 用户身份运行(图形化界面是用root登录的),导致备份的文件默认所有者是 root。
2、NAS 可能有自己的权限管理机制,并且可能不保留原始文件的所有者和组信息。
3、rsync 的 --owner 和 --group 选项可能没有启用,或者由于权限问题无法设置正确的所有者和组。

面临的问题

现在共享的一共有三个数据集,也对应三个人sync任务,为了便于理解,父数据集就叫1号文件夹,子数据集分别叫2号和3号
在这里插入图片描述
每个数据集权限都得重新改

解决思路

使用chmod和chown命令恢复文件权限
chmod命令:用于修改文件或目录的权限。可以使用数字权限表示法(如chmod 755 filename)或符号权限表示法(如chmod u+x filename)。
chown命令:用于修改文件或目录的所有者和所属组。例如,chown user1:group1 filename会将文件filename的所有者更改为user1,所属组更改为group1。

因为这个异地同步,采用了图形化上面自带的rsync同步,要更改权限还需要结合命令(使用图形化更改也可以,但是我这个权限有些特殊,使用命令更简单,而且我不想每次同步完还要手动的去点击图形化的界面),所以打算使用命令先进行本地定时同步并同时更改权限。
使用命令进行同步,并且每次同步之后都要进行权限修改这个操作,那就一起写到批命令里,同步结束,紧跟着做权限更改。然后再用定时任务执行一下。

操作步骤

每个文件夹权限分配表

下表是我的业务需求,我要更改其中三个的权限和用户及用户组
在这里插入图片描述

测试chmod和chown两个命令是否可行

chown user1:group1 filename

用户统一了,权限还不一致
在这里插入图片描述

chmod -R 770 "路径"

权限更改了,有一个特殊的是rsync的配置文件
在这里插入图片描述
使用 chmod -R 770 “路径” 命令来更改目录及其子文件和子目录的权限时,通常它会递归地应用权限到指定路径下的所有文件和目录。但是,导致 rsync 的配置文件(或任何其他特定文件)的权限没有被更改的原因可能是其特殊的属性,或者文件可能被另一个进程锁定,这可能会阻止权限更改。还可能是rsync 守护进程正在运行并且打开了配置文件,那么更改文件权限可能不会立即生效,因为守护进程可能仍然具有旧的权限。可能需要重启 rsync 守护进程来使更改生效。但是这个不影响使用,暂时先不理会了。

写脚本实现定时同步

1、创建脚本文件
首先,需要使用文本编辑器(如 nano, vim, emacs 等)来创建一个新的脚本文件。这里假设使用 vim 编辑器,并且将脚本命名为 backup.sh。
打开终端,并输入以下命令:
vim /path/to/your/scripts/backup.sh
/path/to/your/scripts/ 是你想保存脚本的目录,可以替换为自己的目录路径。
2、编辑脚本

#!/bin/bash

# 设置源目录和目标目录
SOURCE_DIR="/mnt/test"
BACKUP_DIR="/mnt/dms/20/test"

# 使用rsync进行备份
# -av 表示以归档模式传输,并保持所有文件属性
# --delete 表示删除目标目录中源目录中没有的文件(使目标目录成为源目录的镜像)
rsync -av --delete "$SOURCE_DIR/" "$BACKUP_DIR/"

# 你可以在这里添加其他命令,比如发送备份完成的通知等
echo "Backup completed successfully."

确保将 SOURCE_DIR 和 BACKUP_DIR 替换为你自己的源目录和目标目录路径。
保存,退出编辑器
3. 为脚本添加执行权限
了使脚本能够运行,需要为其添加执行权限。在终端中,使用 chmod 命令:

chmod +x /root/backup.sh

4. 手动运行脚本以测试
在添加执行权限后,可以手动运行脚本来测试它是否按预期工作:

/path/to/your/scripts/backup.sh

应该能看到脚本执行的输出,包括 “Backup completed successfully.” 这条消息。

如果已经导航到包含该脚本的目录,可以使用 ./ 来指定当前目录:
在这里插入图片描述
5. 使用 cron 进行定期备份

现在,已经有了一个可以正常工作的备份脚本,可以使用 cron 来定期运行它。
打开当前用户的 crontab 文件:(一定使用这个命令,而不是vim

crontab -e

然后,添加一行来指定你想运行脚本的时间和频率。例如,如果你想每天凌晨 1 点运行备份脚本,你可以添加以下行:
0 1 * * * /root/backup.sh
在这里插入图片描述

保存并退出编辑器。现在,你的脚本将按照指定的时间自动运行。
实验成功
注意事项
● 确保源目录和目标目录都是可访问的,并且rsync命令有足够的权限来读取源目录和写入目标目录。

同时修改权限

再次编辑backup.sh

 chown -R 用户:用户组 路径
chmod -R 770 "路径"

在这里插入图片描述
保存,退出
手动测试 ./ backup.sh
在这里插入图片描述
检查更改结果,成功
在这里插入图片描述

异地同步改权限

异地和本地思路相同,可以都使用命令进行,我的需求是这样的,在NAS上建立这个脚本,用于从一台Linux服务器拉取文件(即NAS是客户端,Linux服务器是源),那么需要确保NAS能够SSH到Linux服务器,而不需要密码输入。这通常是通过在NAS上放置Linux服务器的SSH公钥(通常称为"免密码登录"或"SSH密钥认证")来实现的。
具体操作可以参考我的另一篇文章,思路一致
链接: Linux通过 SSH 使用 rsync 进行文件传输
大致思路是:

在NAS上生成SSH密钥对

将NAS的公钥复制到Linux服务器

在NAS上编写同步脚本


	#!/bin/bash  

	# Linux服务器的SSH地址和目录  

	REMOTE_USER="username"  

	REMOTE_HOST="linux-server-ip"  

	REMOTE_DIR="/path/to/source/directory"  

	LOCAL_DIR="/path/to/target/directory"  

	# 使用rsync从远程服务器拉取文件  

	rsync -avz --delete "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" "$LOCAL_DIR"  
	  

	# (可选)如果你需要设置特定的权限和用户/组,可以在这里添加命令  

	# 例如,为本地目录设置权限和用户/组  

	 chown -R user:group "$LOCAL_DIR"  

	 chmod -R 755 "$LOCAL_DIR"  

	  

	# 脚本结束提示  

	echo "Synchronization complete."

在NAS上执行脚本,保存脚本

确保它有执行权限

chmod +x /path/to/your/script.sh

使用 cron 进行定期备份

crontab -e

添加脚本的时间和频率

0 1 * * * /root/backup.sh

注意事项
确保NAS和Linux服务器之间的网络连接是安全的,并且你信任这两个系统。
替换脚本中的username、linux-server-ip、/path/to/source/directory和/path/to/target/directory为你的实际值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

咖啡机器人如何实现定量出水?

咖啡机器人实现定量出水的关键在于流量控制系统的设计,其中霍尔式流量计和光电式流量计是常用的测量设备。这两种流量计均具有精确高、一致性强、多种高低流量控制等特点,能够满足咖啡机器人定量出水的需求。 对于霍尔式流量计,其利用霍尔效…

防近视台灯有效果吗?专业护眼台灯推荐!告诉你台灯怎么选

随着学业负担的加重和电子设备的广泛普及,近视问题在青少年群体中愈发凸显,近视率持续走高。导致近视的因素错综复杂,除了过度使用手机外,遗传因素、不良的用眼习惯、环境因素、营养不均衡以及学习压力等均为重要因素,…

【深海王国】小学生都能玩的语音模块?ASRPRO打造你的第一个智能语音助手(1)

Hi~ (o^^o)♪, 各位深海王国的同志们,早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω) 今天大都督将为大家带来全新系列——小学生都能玩的语音模块,帮你一周内快速学会语音模块的使用方式,打造一个可用于智能家居、物联网领域的语音…

【SpringBoot3.x】自定义开发通用SDK

1. 前言 相信大家学习SpringBoot到现在,使用Maven构建项目时,会在pom.xml文件中引入各种各样的依赖,那么我们如何将自己常用的一些工具类库进行封装成starter或者SDK供其他项目使用呢,本博客就会带着大家一步一步创建自定义的SDK…

使用 MyFlash 实现 MySQL 数据闪回

文章目录 简介GithubMyFlash 限制MySQL 准备开启 binlogmysqlbinlog 安装 MyFlashflashback 选项生成回滚文件执行回滚操作操作示例 简介 MySQL中的Binlog(Binary Log)数据闪回,也称为Point-in-Time Recovery (PITR),是一种强大的…

Ansible-综合练习-生产案例

斌的招儿 网上教程大多都是官网模板化的教程和文档,这里小斌用自己实际生产环境使用的例子给大家做一个详解。涉及到一整套ansible的使用,对于roles的使用,也仅涉及到tasks和files目录,方便大家快速上手并规范化管理。 0.环境配置…

私接路由器导致部分终端(电脑、手机等)无法上网问题分析

目录 【1】私接路由器场景 【2】进行网络基本配置,模拟终端可以正常上网 【2.1】Http-Server配置 【2.2】ISP配置 【2.3】R-hefa配置 【2.4】Client1配置 【2.5】PC配置 【2.6】测试验证上网是否正常 【3】私接路由器后再测试验证公司内网各终端访问外网是…

大模型AI技术实现语言规范练习

人工智能技术可以为语言规范练习提供多种有效的解决方案,帮助学习者更有效地掌握语言规范。以下是一些常见的应用场景。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 智能纠错 利用自然语言处理技术,可以…

代码随想录-Day42

1049. 最后一块石头的重量 II 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果…

定制型汽车传感器在汽车中的应用

定制型汽车霍尔传感器在汽车中的应用及功能 曲轴和凸轮轴位置传感器&#xff1a; 这些传感器用于监测发动机的曲轴和凸轮轴的位置&#xff0c;帮助发动机管理系统精确控制点火时机和燃油喷射&#xff0c;提高发动机效率。 变速器控制系统&#xff1a; 在自动变速器中&#xf…

通达信短线抄底主升浪幅图指标公式源码

通达信短线抄底主升浪幅图指标公式源码&#xff1a; A1:REF(C,1); A2:SMA(MAX(C-A1,0),5,1)/SMA(ABS(C-A1),5,1)*1000; A3:BARSLAST(REF(CROSS("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24)),1)); A4:A2-LLV(A2,10); A5:(MA(A4,2)*3A4*13)/16; A6:IF(A5>1…

PTE-靶场训练-1

PTE-靶场训练实战笔记 靶场搭建 靶场下载链接&#xff1a; https://pan.baidu.com/s/1ce1Kk0hSYlxrUoRTnNsiKA?pwdha1x vim /etc/sysconfig/network-scripts/ifcfg-eth0 设置好后reboot重启一下即可&#xff0c;然后访问81-85端口&#xff0c;共5题。 因为靶场出了问题&a…

学生信息管理系统

DDL和DML -- 创建学生表 CREATE TABLE students (student_id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,gender VARCHAR(10) );-- 创建课程表 CREATE TABLE courses (course_id INT PRIMARY KEY AUTO_INCREMENT,course_name VARCHAR(50) );-- 创建教师表 CREA…

酷瓜云课堂(内网版)v1.1.5 发布,局域网在线学习+考试系统

更新内容 更新layui-v2.9.10更新docker国内镜像地址增加导入镜像构建容器的方式教师不批阅非首次考试试卷轮播图增加专栏类型目标链接增加课程能否发布检查去除初始化kindeditor语言文件去除选择题EF选项优化富文本内容显示样式优化内容图片点击放大监听优化试题题干答案等图片…

基于STM32的智能水质监测系统

目录 引言环境准备智能水质监测系统基础代码实现&#xff1a;实现智能水质监测系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;水质管理与优化问题解决方案与优化收尾与总结 1. 引言 智能水质监测系统通过使用STM32嵌…

ONLYOFFICE桌面编辑器8.1版:个性化编辑和功能强化的全面升级

ONLYOFFICE是一款全面的办公套件&#xff0c;由Ascensio System SIA开发。该软件提供了一系列与微软Office系列产品相似的办公工具&#xff0c;包括处理文档&#xff08;ONLYOFFICE Document Editor&#xff09;、电子表格&#xff08;ONLYOFFICE Spreadsheet Editor&#xff0…

Pycharm主题切换(禁用)导致UI界面显示异常解决

安装其他主题 Material Theme UI One Dark theme One Dark theme安装 (Material Theme UI主题同理) Pycharm 打开 Settings > Plugins&#xff0c;搜索One Dark theme 安装即可 One Dark theme 效果显示 问题记录 UI显示异常 安装多个主题时&#xff0c;当禁用某些主题&…

通信协议总结

IIC 基本特点 同步&#xff0c;半双工 标准100KHz&#xff0c;最高400KHz&#xff08;IIC主要应用于低速设备&#xff09; 硬件组成 需外接上拉电阻 通信过程 空闲状态 SDA和SCL都处于高电平 开始信号S和终止信号P 在数据传输过程中&#xff0c;当SCL0时&#xff0c;SDA才…

Redis-主从复制-测试主从模式下的读写操作

文章目录 1、在主机6379写入数据2、在从机6380上写数据报错3、从机只能读数据&#xff0c;不能写数据 1、在主机6379写入数据 127.0.0.1:6379> keys * (empty array) 127.0.0.1:6379> set uname jim OK 127.0.0.1:6379> get uname "jim" 127.0.0.1:6379>…

高中数学:不等式-常见题型解题技巧

一、“1”的代换 练习 例题1 例题2 解 二、基本不等式中的“变形” 就是&#xff0c;一般情况下&#xff0c;我们在题目中&#xff0c;是不能够直接使用基本不等式进行求解的。 而是要对条件等式进行变形&#xff0c;满足基本不等式的使用条件 练习 例题1 解析 两边同…