Shell脚本
Reference
Shell笔记
shell自动清理30天以上的文件
shell自动备份PVE里的虚拟机系统文件
chatgpt做的自动备份pve镜像
shell 定时备份文件夹脚本以及删除过期备份
写一个断电按顺序自动关闭服务器的脚本
GPT:自动停止服务,控制关机
GPT: Shell 停止Docker 应用
GPT: Shell从文档读取配置信息
Shell传参给脚本,带参数运行
GPT:Shell停止Systemd服务
停止Moosefs服务
StartMoosefs.sh
StopMoosefs.sh
StopDocker.sh
StopSysyemService.sh
备份脚本
Linux运维常用脚本总结
网卡绑定bond配置脚本
自动取文件脚本
shell脚本: 同步两个本地文件夹
分割mysql-slow慢日志的脚本
解压不成功退出整个解压
Linux操作 :批量截取文件第一列,去重
文本的一些操作
nginx监控脚本
监控tomcat脚本
kafka监控脚本
zookeeper监控启动脚本
本文档使用 MrDoc 发布
-
+
首页
shell脚本: 同步两个本地文件夹
在linux上写一个shell 脚本 , 定时自动同步两个文件夹,忽略已删除的文件 。需增加判断条件 判断文件夹是否存在,如果不存在则不执行, 如果存在则执行操作。上述脚本 将 src_folder,dst_folder 写入配置文件中,需要同步多个文件夹 , 生成同步日志保存在一个日志文件中 你可以创建一个配置文件,其中包含你想要同步的所有文件夹对。然后,你可以修改脚本来读取这个配置文件,并对每一对文件夹进行同步操作。以下是一个示例: 首先,创建一个配置文件,例如folders.txt,其中包含你想要同步的所有文件夹对。每一行都应该包含一个源文件夹和一个目标文件夹,它们之间用逗号分隔。例如: ``` /path/to/src_folder1,/path/to/dst_folder1 /path/to/src_folder2,/path/to/dst_folder2 /path/to/src_folder3,/path/to/dst_folder3 ``` 然后,你可以使用以下脚本来读取这个配置文件,并对每一对文件夹进行同步操作: ``` #!/bin/bash config_file="/path/to/folders.txt" log_file="/path/to/log_file.txt" exec > $log_file 2>&1 while true do while IFS=',' read -r src_folder dst_folder do if [ -d "$src_folder" ] && [ -d "$dst_folder" ] then echo "$(date) - Syncing $src_folder to $dst_folder" rsync -av --ignore-existing $src_folder/ $dst_folder/ echo "$(date) - Sync completed" else echo "$(date) - One or both of the directories $src_folder and $dst_folder do not exist" fi done < "$config_file" sleep 3600 # 每小时同步一次 done ``` 你需要将config_file和log_file替换为你的配置文件和日志文件的路径。这个脚本会在每个小时的开始时读取配置文件,并对每一对文件夹进行同步操作。同步操作的开始和结束时间,以及任何错误消息,都会被写入到日志文件中。 你可以像之前一样使用cron服务来定时运行这个脚本。如果你需要帮助,可以随时向我询问。 用crontab来控制脚本: ``` #!/bin/bash config_file="/path/to/folders.txt" log_file="/path/to/log_file.txt" exec > $log_file 2>&1 while IFS=',' read -r src_folder dst_folder do if [ -d "$src_folder" ] && [ -d "$dst_folder" ] then echo "$(date) - Syncing $src_folder to $dst_folder" rsync -av --ignore-existing --update $src_folder/ $dst_folder/ echo "$(date) - Sync completed" else echo "$(date) - One or both of the directories $src_folder and $dst_folder do not exist" fi done < "$config_file" ``` 将log_file改成每一次运行生成一个带时间文件名的日志 ``` log_dir="/app/script/sync/logs" timestamp=$(date +%Y%m%d%H%M%S) log_file="$log_dir/log_$timestamp.txt" ```
dz
2023年11月22日 09:44
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码